From ea32b8bf8249406e6808e3f1f7b8b795fdd6c76b Mon Sep 17 00:00:00 2001 From: Antoine Leblanc Date: Fri, 22 Apr 2022 15:50:01 +0100 Subject: [PATCH] Move `HasServerConfigCtx` to `Hasura.Server.Types`. ### Description Small PR that moves code out of `RQL.Types.hs`. Specifically, it moves `HasServerConfigCtx` to where `ServerConfigCtx` is defined. This removes code from `RQL.Types`, makes the dependency on `Server.Types` more explicit, and will make some further cleanups easier. PR-URL: https://github.com/hasura/graphql-engine-mono/pull/4336 GitOrigin-RevId: 95bb3467d741763892c4e68a38760497157ba1aa --- .../Hasura/Backends/Postgres/DDL/RunSQL.hs | 1 + server/src-lib/Hasura/GraphQL/Schema.hs | 1 + server/src-lib/Hasura/RQL/DDL/RemoteSchema.hs | 1 + server/src-lib/Hasura/RQL/DDL/Schema/Cache.hs | 4 -- .../Hasura/RQL/DDL/Schema/Cache/Common.hs | 1 + server/src-lib/Hasura/RQL/DML/Delete.hs | 1 + server/src-lib/Hasura/RQL/DML/Insert.hs | 1 + server/src-lib/Hasura/RQL/DML/Internal.hs | 1 + server/src-lib/Hasura/RQL/DML/Select.hs | 1 + server/src-lib/Hasura/RQL/DML/Update.hs | 1 + server/src-lib/Hasura/RQL/Types.hs | 58 +------------------ server/src-lib/Hasura/RQL/Types/Run.hs | 3 +- .../src-lib/Hasura/RQL/Types/SchemaCache.hs | 4 ++ .../Hasura/RQL/Types/SchemaCache/Build.hs | 4 ++ server/src-lib/Hasura/Server/API/Metadata.hs | 2 +- server/src-lib/Hasura/Server/SchemaUpdate.hs | 2 +- server/src-lib/Hasura/Server/Types.hs | 13 +++++ server/src-test/Hasura/Server/MigrateSpec.hs | 2 +- 18 files changed, 36 insertions(+), 65 deletions(-) diff --git a/server/src-lib/Hasura/Backends/Postgres/DDL/RunSQL.hs b/server/src-lib/Hasura/Backends/Postgres/DDL/RunSQL.hs index 8b63485a171..3516305165b 100644 --- a/server/src-lib/Hasura/Backends/Postgres/DDL/RunSQL.hs +++ b/server/src-lib/Hasura/Backends/Postgres/DDL/RunSQL.hs @@ -44,6 +44,7 @@ import Hasura.RQL.Types hiding tmTable, ) import Hasura.SQL.AnyBackend qualified as AB +import Hasura.Server.Types import Hasura.Server.Utils (quoteRegex) import Hasura.Session import Hasura.Tracing qualified as Tracing diff --git a/server/src-lib/Hasura/GraphQL/Schema.hs b/server/src-lib/Hasura/GraphQL/Schema.hs index b88b906537b..649355300e7 100644 --- a/server/src-lib/Hasura/GraphQL/Schema.hs +++ b/server/src-lib/Hasura/GraphQL/Schema.hs @@ -43,6 +43,7 @@ import Hasura.RQL.IR import Hasura.RQL.Types import Hasura.SQL.AnyBackend qualified as AB import Hasura.SQL.Tag (HasTag) +import Hasura.Server.Types import Hasura.Session import Language.GraphQL.Draft.Syntax qualified as G diff --git a/server/src-lib/Hasura/RQL/DDL/RemoteSchema.hs b/server/src-lib/Hasura/RQL/DDL/RemoteSchema.hs index fb9f759c285..27fb4d6afff 100644 --- a/server/src-lib/Hasura/RQL/DDL/RemoteSchema.hs +++ b/server/src-lib/Hasura/RQL/DDL/RemoteSchema.hs @@ -26,6 +26,7 @@ import Hasura.GraphQL.RemoteServer import Hasura.Prelude import Hasura.RQL.DDL.RemoteSchema.Permission import Hasura.RQL.Types +import Hasura.Server.Types import Hasura.Session import Hasura.Tracing qualified as Tracing import Language.GraphQL.Draft.Syntax qualified as G diff --git a/server/src-lib/Hasura/RQL/DDL/Schema/Cache.hs b/server/src-lib/Hasura/RQL/DDL/Schema/Cache.hs index b106877441c..a649c90f102 100644 --- a/server/src-lib/Hasura/RQL/DDL/Schema/Cache.hs +++ b/server/src-lib/Hasura/RQL/DDL/Schema/Cache.hs @@ -73,10 +73,6 @@ import Hasura.SQL.AnyBackend qualified as AB import Hasura.SQL.Tag import Hasura.SQL.Tag qualified as Tag import Hasura.Server.Types - ( EventingMode (..), - MaintenanceMode (..), - ReadOnlyMode (..), - ) import Hasura.Session import Hasura.Tracing qualified as Tracing import Language.GraphQL.Draft.Syntax qualified as G diff --git a/server/src-lib/Hasura/RQL/DDL/Schema/Cache/Common.hs b/server/src-lib/Hasura/RQL/DDL/Schema/Cache/Common.hs index 60cf9365db8..4afdaf0dd93 100644 --- a/server/src-lib/Hasura/RQL/DDL/Schema/Cache/Common.hs +++ b/server/src-lib/Hasura/RQL/DDL/Schema/Cache/Common.hs @@ -55,6 +55,7 @@ import Hasura.Incremental qualified as Inc import Hasura.Prelude import Hasura.RQL.Types import Hasura.RQL.Types.Endpoint +import Hasura.Server.Types import Hasura.Session import Network.HTTP.Client.Manager (HasHttpManagerM (..)) import Network.HTTP.Client.Transformable qualified as HTTP diff --git a/server/src-lib/Hasura/RQL/DML/Delete.hs b/server/src-lib/Hasura/RQL/DML/Delete.hs index fb5b68b4902..a634d163cf6 100644 --- a/server/src-lib/Hasura/RQL/DML/Delete.hs +++ b/server/src-lib/Hasura/RQL/DML/Delete.hs @@ -25,6 +25,7 @@ import Hasura.RQL.DML.Internal import Hasura.RQL.DML.Types import Hasura.RQL.IR.Delete import Hasura.RQL.Types +import Hasura.Server.Types import Hasura.Session import Hasura.Tracing qualified as Tracing diff --git a/server/src-lib/Hasura/RQL/DML/Insert.hs b/server/src-lib/Hasura/RQL/DML/Insert.hs index 4c8be1ce414..3b9c8280440 100644 --- a/server/src-lib/Hasura/RQL/DML/Insert.hs +++ b/server/src-lib/Hasura/RQL/DML/Insert.hs @@ -24,6 +24,7 @@ import Hasura.RQL.DML.Internal import Hasura.RQL.DML.Types import Hasura.RQL.IR.Insert import Hasura.RQL.Types +import Hasura.Server.Types import Hasura.Session import Hasura.Tracing qualified as Tracing diff --git a/server/src-lib/Hasura/RQL/DML/Internal.hs b/server/src-lib/Hasura/RQL/DML/Internal.hs index 8bfdf8cb31c..d040df31b70 100644 --- a/server/src-lib/Hasura/RQL/DML/Internal.hs +++ b/server/src-lib/Hasura/RQL/DML/Internal.hs @@ -48,6 +48,7 @@ import Hasura.Base.Error import Hasura.Prelude import Hasura.RQL.Types import Hasura.SQL.Types +import Hasura.Server.Types import Hasura.Session newtype DMLP1T m a = DMLP1T {unDMLP1T :: StateT (DS.Seq Q.PrepArg) m a} diff --git a/server/src-lib/Hasura/RQL/DML/Select.hs b/server/src-lib/Hasura/RQL/DML/Select.hs index 2194bd9a242..8416c5a0fbb 100644 --- a/server/src-lib/Hasura/RQL/DML/Select.hs +++ b/server/src-lib/Hasura/RQL/DML/Select.hs @@ -21,6 +21,7 @@ import Hasura.RQL.IR.OrderBy import Hasura.RQL.IR.Select import Hasura.RQL.Types import Hasura.SQL.Types +import Hasura.Server.Types import Hasura.Session import Hasura.Tracing qualified as Tracing diff --git a/server/src-lib/Hasura/RQL/DML/Update.hs b/server/src-lib/Hasura/RQL/DML/Update.hs index f16e6e3d458..f499a59684f 100644 --- a/server/src-lib/Hasura/RQL/DML/Update.hs +++ b/server/src-lib/Hasura/RQL/DML/Update.hs @@ -27,6 +27,7 @@ import Hasura.RQL.IR.BoolExp import Hasura.RQL.IR.Update import Hasura.RQL.Types import Hasura.SQL.Types +import Hasura.Server.Types import Hasura.Session import Hasura.Tracing qualified as Tracing diff --git a/server/src-lib/Hasura/RQL/Types.hs b/server/src-lib/Hasura/RQL/Types.hs index 2be861a9579..2444eaa8ac9 100644 --- a/server/src-lib/Hasura/RQL/Types.hs +++ b/server/src-lib/Hasura/RQL/Types.hs @@ -2,8 +2,6 @@ module Hasura.RQL.Types ( MonadTx (..), SQLGenCtx (..), RemoteSchemaPermsCtx (..), - ServerConfigCtx (..), - HasServerConfigCtx (..), HasSystemDefined (..), HasSystemDefinedT, runHasSystemDefinedT, @@ -32,7 +30,6 @@ where import Control.Lens (Traversal', at, preview, (^.)) import Data.HashMap.Strict qualified as M import Data.Text.Extended -import Database.PG.Query qualified as Q import Hasura.Backends.Postgres.Connection as R import Hasura.Base.Error import Hasura.Prelude @@ -73,7 +70,6 @@ import Hasura.RQL.Types.SourceCustomization as R import Hasura.RQL.Types.Subscription as R import Hasura.RQL.Types.Table as R import Hasura.SQL.Backend as R -import Hasura.Server.Types import Hasura.Session import Hasura.Tracing import Network.HTTP.Client.Manager (HasHttpManagerM (..)) @@ -168,57 +164,6 @@ askTableMetadata sourceName tableName = do . smTables . ix tableName -class (Monad m) => HasServerConfigCtx m where - askServerConfigCtx :: m ServerConfigCtx - -instance - (HasServerConfigCtx m) => - HasServerConfigCtx (ReaderT r m) - where - askServerConfigCtx = lift askServerConfigCtx - -instance - (HasServerConfigCtx m) => - HasServerConfigCtx (ExceptT e m) - where - askServerConfigCtx = lift askServerConfigCtx - -instance - (HasServerConfigCtx m) => - HasServerConfigCtx (StateT s m) - where - askServerConfigCtx = lift askServerConfigCtx - -instance - (Monoid w, HasServerConfigCtx m) => - HasServerConfigCtx (WriterT w m) - where - askServerConfigCtx = lift askServerConfigCtx - -instance - (HasServerConfigCtx m) => - HasServerConfigCtx (TableCoreCacheRT b m) - where - askServerConfigCtx = lift askServerConfigCtx - -instance - (HasServerConfigCtx m) => - HasServerConfigCtx (TraceT m) - where - askServerConfigCtx = lift askServerConfigCtx - -instance - (HasServerConfigCtx m) => - HasServerConfigCtx (MetadataT m) - where - askServerConfigCtx = lift askServerConfigCtx - -instance (HasServerConfigCtx m) => HasServerConfigCtx (Q.TxET QErr m) where - askServerConfigCtx = lift askServerConfigCtx - -instance (HasServerConfigCtx m) => HasServerConfigCtx (TableCacheRT b m) where - askServerConfigCtx = lift askServerConfigCtx - class (Monad m) => HasSystemDefined m where askSystemDefined :: m SystemDefined @@ -247,8 +192,7 @@ newtype HasSystemDefinedT m a = HasSystemDefinedT {unHasSystemDefinedT :: Reader SourceM, TableCoreInfoRM b, CacheRM, - UserInfoM, - HasServerConfigCtx + UserInfoM ) runHasSystemDefinedT :: SystemDefined -> HasSystemDefinedT m a -> m a diff --git a/server/src-lib/Hasura/RQL/Types/Run.hs b/server/src-lib/Hasura/RQL/Types/Run.hs index 20d41e21a46..99d0d8afaef 100644 --- a/server/src-lib/Hasura/RQL/Types/Run.hs +++ b/server/src-lib/Hasura/RQL/Types/Run.hs @@ -11,7 +11,8 @@ import Control.Monad.Trans.Control (MonadBaseControl) import Hasura.Base.Error import Hasura.Metadata.Class import Hasura.Prelude -import Hasura.RQL.Types +import Hasura.RQL.Types.Source +import Hasura.Server.Types import Hasura.Session import Hasura.Tracing qualified as Tracing import Network.HTTP.Client.Manager qualified as HTTP diff --git a/server/src-lib/Hasura/RQL/Types/SchemaCache.hs b/server/src-lib/Hasura/RQL/Types/SchemaCache.hs index 43887606839..23a20fea17e 100644 --- a/server/src-lib/Hasura/RQL/Types/SchemaCache.hs +++ b/server/src-lib/Hasura/RQL/Types/SchemaCache.hs @@ -156,6 +156,7 @@ import Hasura.RQL.Types.SchemaCacheTypes import Hasura.RQL.Types.Source import Hasura.RQL.Types.Table import Hasura.SQL.AnyBackend qualified as AB +import Hasura.Server.Types import Hasura.Session import Hasura.Tracing (TraceT) import Language.GraphQL.Draft.Syntax qualified as G @@ -461,6 +462,9 @@ instance (Monad m, Backend b) => TableInfoRM b (TableCacheRT b m) where lookupTableInfo tableName = TableCacheRT (pure . M.lookup tableName . snd) +instance (HasServerConfigCtx m) => HasServerConfigCtx (TableCacheRT b m) where + askServerConfigCtx = lift askServerConfigCtx + class (Monad m) => CacheRM m where askSchemaCache :: m SchemaCache diff --git a/server/src-lib/Hasura/RQL/Types/SchemaCache/Build.hs b/server/src-lib/Hasura/RQL/Types/SchemaCache/Build.hs index 27f1fc5c8f9..4ec8558ad35 100644 --- a/server/src-lib/Hasura/RQL/Types/SchemaCache/Build.hs +++ b/server/src-lib/Hasura/RQL/Types/SchemaCache/Build.hs @@ -58,6 +58,7 @@ import Hasura.RQL.Types.Metadata.Object import Hasura.RQL.Types.QueryCollection import Hasura.RQL.Types.RemoteSchema (RemoteSchemaName) import Hasura.RQL.Types.SchemaCache +import Hasura.Server.Types import Hasura.Session import Hasura.Tracing (TraceT) import Hasura.Tracing qualified as Tracing @@ -292,6 +293,9 @@ instance (HasHttpManagerM m) => HasHttpManagerM (MetadataT m) where instance (UserInfoM m) => UserInfoM (MetadataT m) where askUserInfo = lift askUserInfo +instance HasServerConfigCtx m => HasServerConfigCtx (MetadataT m) where + askServerConfigCtx = lift askServerConfigCtx + runMetadataT :: Metadata -> MetadataT m a -> m (a, Metadata) runMetadataT metadata (MetadataT m) = runStateT m metadata diff --git a/server/src-lib/Hasura/Server/API/Metadata.hs b/server/src-lib/Hasura/Server/API/Metadata.hs index 1fe133fb9c8..83e1fcac416 100644 --- a/server/src-lib/Hasura/Server/API/Metadata.hs +++ b/server/src-lib/Hasura/Server/API/Metadata.hs @@ -51,7 +51,7 @@ import Hasura.SQL.AnyBackend import Hasura.SQL.Tag import Hasura.Server.API.Backend import Hasura.Server.API.Instances () -import Hasura.Server.Types (InstanceId (..), MaintenanceMode (..), ReadOnlyMode (..)) +import Hasura.Server.Types import Hasura.Server.Utils (APIVersion (..)) import Hasura.Session import Hasura.Tracing qualified as Tracing diff --git a/server/src-lib/Hasura/Server/SchemaUpdate.hs b/server/src-lib/Hasura/Server/SchemaUpdate.hs index 4664bf3cbd5..60711d65d05 100644 --- a/server/src-lib/Hasura/Server/SchemaUpdate.hs +++ b/server/src-lib/Hasura/Server/SchemaUpdate.hs @@ -35,7 +35,7 @@ import Hasura.Server.SchemaCacheRef readSchemaCacheRef, withSchemaCacheUpdate, ) -import Hasura.Server.Types (InstanceId (..)) +import Hasura.Server.Types import Hasura.Session import Network.HTTP.Client qualified as HTTP diff --git a/server/src-lib/Hasura/Server/Types.hs b/server/src-lib/Hasura/Server/Types.hs index a70c17c2e6a..1cec01ed6cb 100644 --- a/server/src-lib/Hasura/Server/Types.hs +++ b/server/src-lib/Hasura/Server/Types.hs @@ -7,6 +7,7 @@ module Hasura.Server.Types PGVersion (PGVersion), RequestId (..), ServerConfigCtx (..), + HasServerConfigCtx (..), getRequestId, ) where @@ -93,3 +94,15 @@ data ServerConfigCtx = ServerConfigCtx _sccReadOnlyMode :: ReadOnlyMode } deriving (Show, Eq) + +class (Monad m) => HasServerConfigCtx m where + askServerConfigCtx :: m ServerConfigCtx + +instance HasServerConfigCtx m => HasServerConfigCtx (ReaderT r m) where + askServerConfigCtx = lift askServerConfigCtx + +instance HasServerConfigCtx m => HasServerConfigCtx (ExceptT e m) where + askServerConfigCtx = lift askServerConfigCtx + +instance HasServerConfigCtx m => HasServerConfigCtx (StateT s m) where + askServerConfigCtx = lift askServerConfigCtx diff --git a/server/src-test/Hasura/Server/MigrateSpec.hs b/server/src-test/Hasura/Server/MigrateSpec.hs index e53cc59af96..92c727c7252 100644 --- a/server/src-test/Hasura/Server/MigrateSpec.hs +++ b/server/src-test/Hasura/Server/MigrateSpec.hs @@ -24,7 +24,7 @@ import Hasura.RQL.Types import Hasura.Server.API.PGDump import Hasura.Server.Init (DowngradeOptions (..)) import Hasura.Server.Migrate -import Hasura.Server.Types (MaintenanceMode (..)) +import Hasura.Server.Types import Hasura.Session import Network.HTTP.Client.Manager qualified as HTTP import Test.Hspec.Core.Spec