2020-12-08 17:22:31 +03:00
|
|
|
module Hasura.RQL.DDL.Schema.Common where
|
|
|
|
|
|
|
|
import Hasura.Prelude
|
2021-03-15 16:02:58 +03:00
|
|
|
|
2021-05-27 18:06:13 +03:00
|
|
|
import qualified Hasura.SQL.AnyBackend as AB
|
2021-03-15 16:02:58 +03:00
|
|
|
|
2021-05-11 18:18:31 +03:00
|
|
|
import Hasura.Base.Error
|
2020-12-08 17:22:31 +03:00
|
|
|
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
|
|
|
|
|
|
|
|
|
|
|
|
purgeDependentObject
|
2021-02-14 09:07:52 +03:00
|
|
|
:: forall b m
|
|
|
|
. (MonadError QErr m, BackendMetadata b)
|
|
|
|
=> SourceName -> SourceObjId b -> m MetadataModifier
|
|
|
|
purgeDependentObject source sourceObjId = case sourceObjId of
|
|
|
|
SOITableObj tn tableObj -> pure $ MetadataModifier $
|
2021-04-22 00:44:37 +03:00
|
|
|
tableMetadataSetter @b source tn %~ case tableObj of
|
2020-12-08 17:22:31 +03:00
|
|
|
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-02-14 09:07:52 +03:00
|
|
|
_ ->
|
2021-03-15 16:02:58 +03:00
|
|
|
throw500
|
|
|
|
$ "unexpected dependent object: "
|
|
|
|
<> reportSchemaObj (SOSourceObj source $ AB.mkAnyBackend sourceObjId)
|