2020-12-08 17:22:31 +03:00
|
|
|
module Hasura.RQL.DDL.Schema.Common where
|
|
|
|
|
2021-09-24 01:56:37 +03:00
|
|
|
import Hasura.Base.Error
|
|
|
|
import Hasura.Prelude
|
|
|
|
import Hasura.RQL.DDL.ComputedField
|
|
|
|
import Hasura.RQL.DDL.EventTrigger
|
|
|
|
import Hasura.RQL.DDL.Permission
|
|
|
|
import Hasura.RQL.DDL.Relationship
|
|
|
|
import Hasura.RQL.DDL.RemoteRelationship
|
|
|
|
import Hasura.RQL.DDL.Schema.Function
|
|
|
|
import Hasura.RQL.Types
|
|
|
|
import Hasura.SQL.AnyBackend qualified as AB
|
2021-03-15 16:02:58 +03:00
|
|
|
|
2021-09-24 01:56:37 +03:00
|
|
|
purgeDependentObject ::
|
|
|
|
forall b m.
|
|
|
|
(MonadError QErr m, BackendMetadata b) =>
|
|
|
|
SourceName ->
|
|
|
|
SourceObjId b ->
|
|
|
|
m MetadataModifier
|
2021-02-14 09:07:52 +03:00
|
|
|
purgeDependentObject source sourceObjId = case sourceObjId of
|
2021-09-24 01:56:37 +03:00
|
|
|
SOITableObj tn tableObj ->
|
|
|
|
pure $
|
|
|
|
MetadataModifier $
|
|
|
|
tableMetadataSetter @b source tn %~ case tableObj of
|
|
|
|
TOPerm rn pt -> dropPermissionInMetadata rn pt
|
|
|
|
TORel rn -> dropRelationshipInMetadata rn
|
|
|
|
TOTrigger trn -> dropEventTriggerInMetadata trn
|
|
|
|
TOComputedField ccn -> dropComputedFieldInMetadata ccn
|
|
|
|
TORemoteRel rrn -> dropRemoteRelationshipInMetadata rrn
|
|
|
|
_ -> id
|
2021-04-22 00:44:37 +03:00
|
|
|
SOIFunction qf -> pure $ dropFunctionInMetadata @b source qf
|
2021-09-24 01:56:37 +03:00
|
|
|
_ ->
|
|
|
|
throw500 $
|
|
|
|
"unexpected dependent object: "
|
|
|
|
<> reportSchemaObj (SOSourceObj source $ AB.mkAnyBackend sourceObjId)
|