mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-10-06 06:48:12 +03:00
Excise query tags from backend schema
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/2960 GitOrigin-RevId: ff6418609117abc8e0410c0897f2af9779cecf16
This commit is contained in:
parent
169902f88a
commit
63ee663626
@ -68,98 +68,84 @@ instance BackendSchema 'BigQuery where
|
||||
bqBuildTableRelayQueryFields ::
|
||||
MonadBuildSchema 'BigQuery r m n =>
|
||||
SourceName ->
|
||||
SourceConfig 'BigQuery ->
|
||||
Maybe QueryTagsConfig ->
|
||||
TableName 'BigQuery ->
|
||||
TableInfo 'BigQuery ->
|
||||
G.Name ->
|
||||
NESeq (ColumnInfo 'BigQuery) ->
|
||||
SelPermInfo 'BigQuery ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
bqBuildTableRelayQueryFields _sourceName _sourceInfo _queryTagsConfig _tableName _tableInfo _gqlName _pkeyColumns _selPerms =
|
||||
m [a]
|
||||
bqBuildTableRelayQueryFields _sourceName _tableName _tableInfo _gqlName _pkeyColumns _selPerms =
|
||||
pure []
|
||||
|
||||
bqBuildTableInsertMutationFields ::
|
||||
MonadBuildSchema 'BigQuery r m n =>
|
||||
SourceName ->
|
||||
SourceConfig 'BigQuery ->
|
||||
Maybe QueryTagsConfig ->
|
||||
TableName 'BigQuery ->
|
||||
TableInfo 'BigQuery ->
|
||||
G.Name ->
|
||||
InsPermInfo 'BigQuery ->
|
||||
Maybe (SelPermInfo 'BigQuery) ->
|
||||
Maybe (UpdPermInfo 'BigQuery) ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
bqBuildTableInsertMutationFields _sourceName _sourceInfo _queryTagsConfig _tableName _tableInfo _gqlName _insPerms _selPerms _updPerms =
|
||||
m [a]
|
||||
bqBuildTableInsertMutationFields _sourceName _tableName _tableInfo _gqlName _insPerms _selPerms _updPerms =
|
||||
pure []
|
||||
|
||||
bqBuildTableUpdateMutationFields ::
|
||||
MonadBuildSchema 'BigQuery r m n =>
|
||||
SourceName ->
|
||||
SourceConfig 'BigQuery ->
|
||||
Maybe QueryTagsConfig ->
|
||||
TableName 'BigQuery ->
|
||||
TableInfo 'BigQuery ->
|
||||
G.Name ->
|
||||
UpdPermInfo 'BigQuery ->
|
||||
Maybe (SelPermInfo 'BigQuery) ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
bqBuildTableUpdateMutationFields _sourceName _sourceInfo _queryTagsConfig _tableName _tableInfo _gqlName _updPerns _selPerms =
|
||||
m [a]
|
||||
bqBuildTableUpdateMutationFields _sourceName _tableName _tableInfo _gqlName _updPerns _selPerms =
|
||||
pure []
|
||||
|
||||
bqBuildTableDeleteMutationFields ::
|
||||
MonadBuildSchema 'BigQuery r m n =>
|
||||
SourceName ->
|
||||
SourceConfig 'BigQuery ->
|
||||
Maybe QueryTagsConfig ->
|
||||
TableName 'BigQuery ->
|
||||
TableInfo 'BigQuery ->
|
||||
G.Name ->
|
||||
DelPermInfo 'BigQuery ->
|
||||
Maybe (SelPermInfo 'BigQuery) ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
bqBuildTableDeleteMutationFields _sourceName _sourceInfo _queryTagsConfig _tableName _tableInfo _gqlName _delPerns _selPerms =
|
||||
m [a]
|
||||
bqBuildTableDeleteMutationFields _sourceName _tableName _tableInfo _gqlName _delPerns _selPerms =
|
||||
pure []
|
||||
|
||||
bqBuildFunctionQueryFields ::
|
||||
MonadBuildSchema 'BigQuery r m n =>
|
||||
SourceName ->
|
||||
SourceConfig 'BigQuery ->
|
||||
Maybe QueryTagsConfig ->
|
||||
FunctionName 'BigQuery ->
|
||||
FunctionInfo 'BigQuery ->
|
||||
TableName 'BigQuery ->
|
||||
SelPermInfo 'BigQuery ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
bqBuildFunctionQueryFields _ _ _ _ _ _ _ =
|
||||
m [a]
|
||||
bqBuildFunctionQueryFields _ _ _ _ _ =
|
||||
pure []
|
||||
|
||||
bqBuildFunctionRelayQueryFields ::
|
||||
MonadBuildSchema 'BigQuery r m n =>
|
||||
SourceName ->
|
||||
SourceConfig 'BigQuery ->
|
||||
Maybe QueryTagsConfig ->
|
||||
FunctionName 'BigQuery ->
|
||||
FunctionInfo 'BigQuery ->
|
||||
TableName 'BigQuery ->
|
||||
NESeq (ColumnInfo 'BigQuery) ->
|
||||
SelPermInfo 'BigQuery ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
bqBuildFunctionRelayQueryFields _sourceName _sourceInfo _queryTagsConfig _functionName _functionInfo _tableName _pkeyColumns _selPerms =
|
||||
m [a]
|
||||
bqBuildFunctionRelayQueryFields _sourceName _functionName _functionInfo _tableName _pkeyColumns _selPerms =
|
||||
pure []
|
||||
|
||||
bqBuildFunctionMutationFields ::
|
||||
MonadBuildSchema 'BigQuery r m n =>
|
||||
SourceName ->
|
||||
SourceConfig 'BigQuery ->
|
||||
Maybe QueryTagsConfig ->
|
||||
FunctionName 'BigQuery ->
|
||||
FunctionInfo 'BigQuery ->
|
||||
TableName 'BigQuery ->
|
||||
SelPermInfo 'BigQuery ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
bqBuildFunctionMutationFields _ _ _ _ _ _ _ =
|
||||
m [a]
|
||||
bqBuildFunctionMutationFields _ _ _ _ _ =
|
||||
pure []
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
@ -77,34 +77,28 @@ supportsInserts = isJust . _tciPrimaryKey . _tiCoreInfo
|
||||
msBuildTableRelayQueryFields ::
|
||||
MonadBuildSchema 'MSSQL r m n =>
|
||||
SourceName ->
|
||||
SourceConfig 'MSSQL ->
|
||||
Maybe QueryTagsConfig ->
|
||||
TableName 'MSSQL ->
|
||||
TableInfo 'MSSQL ->
|
||||
G.Name ->
|
||||
NESeq (ColumnInfo 'MSSQL) ->
|
||||
SelPermInfo 'MSSQL ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
msBuildTableRelayQueryFields _sourceName _sourceInfo _queryTagsConfig _tableName _tableInfo _gqlName _pkeyColumns _selPerms =
|
||||
m [a]
|
||||
msBuildTableRelayQueryFields _sourceName _tableName _tableInfo _gqlName _pkeyColumns _selPerms =
|
||||
pure []
|
||||
|
||||
msBuildTableInsertMutationFields ::
|
||||
forall r m n.
|
||||
MonadBuildSchema 'MSSQL r m n =>
|
||||
SourceName ->
|
||||
SourceConfig 'MSSQL ->
|
||||
Maybe QueryTagsConfig ->
|
||||
TableName 'MSSQL ->
|
||||
TableInfo 'MSSQL ->
|
||||
G.Name ->
|
||||
InsPermInfo 'MSSQL ->
|
||||
Maybe (SelPermInfo 'MSSQL) ->
|
||||
Maybe (UpdPermInfo 'MSSQL) ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
m [FieldParser n (AnnInsert 'MSSQL (RemoteSelect UnpreparedValue) (UnpreparedValue 'MSSQL))]
|
||||
msBuildTableInsertMutationFields
|
||||
sourceName
|
||||
sourceInfo
|
||||
queryTagsConfig
|
||||
tableName
|
||||
tableInfo
|
||||
gqlName
|
||||
@ -114,8 +108,6 @@ msBuildTableInsertMutationFields
|
||||
| supportsInserts tableInfo =
|
||||
GSB.buildTableInsertMutationFields
|
||||
sourceName
|
||||
sourceInfo
|
||||
queryTagsConfig
|
||||
tableName
|
||||
tableInfo
|
||||
gqlName
|
||||
@ -127,69 +119,59 @@ msBuildTableInsertMutationFields
|
||||
msBuildTableUpdateMutationFields ::
|
||||
MonadBuildSchema 'MSSQL r m n =>
|
||||
SourceName ->
|
||||
SourceConfig 'MSSQL ->
|
||||
Maybe QueryTagsConfig ->
|
||||
TableName 'MSSQL ->
|
||||
TableInfo 'MSSQL ->
|
||||
G.Name ->
|
||||
UpdPermInfo 'MSSQL ->
|
||||
Maybe (SelPermInfo 'MSSQL) ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
msBuildTableUpdateMutationFields _sourceName _sourceInfo _queryTagsConfig _tableName _tableInfo _gqlName _updPerns _selPerms =
|
||||
m [a]
|
||||
msBuildTableUpdateMutationFields _sourceName _tableName _tableInfo _gqlName _updPerns _selPerms =
|
||||
pure []
|
||||
|
||||
msBuildTableDeleteMutationFields ::
|
||||
MonadBuildSchema 'MSSQL r m n =>
|
||||
SourceName ->
|
||||
SourceConfig 'MSSQL ->
|
||||
Maybe QueryTagsConfig ->
|
||||
TableName 'MSSQL ->
|
||||
TableInfo 'MSSQL ->
|
||||
G.Name ->
|
||||
DelPermInfo 'MSSQL ->
|
||||
Maybe (SelPermInfo 'MSSQL) ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
msBuildTableDeleteMutationFields _sourceName _sourceInfo _queryTagsConfig _tableName _tableInfo _gqlName _delPerns _selPerms =
|
||||
m [a]
|
||||
msBuildTableDeleteMutationFields _sourceName _tableName _tableInfo _gqlName _delPerns _selPerms =
|
||||
pure []
|
||||
|
||||
msBuildFunctionQueryFields ::
|
||||
MonadBuildSchema 'MSSQL r m n =>
|
||||
SourceName ->
|
||||
SourceConfig 'MSSQL ->
|
||||
Maybe QueryTagsConfig ->
|
||||
FunctionName 'MSSQL ->
|
||||
FunctionInfo 'MSSQL ->
|
||||
TableName 'MSSQL ->
|
||||
SelPermInfo 'MSSQL ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
msBuildFunctionQueryFields _ _ _ _ _ _ _ =
|
||||
m [a]
|
||||
msBuildFunctionQueryFields _ _ _ _ _ =
|
||||
pure []
|
||||
|
||||
msBuildFunctionRelayQueryFields ::
|
||||
MonadBuildSchema 'MSSQL r m n =>
|
||||
SourceName ->
|
||||
SourceConfig 'MSSQL ->
|
||||
Maybe QueryTagsConfig ->
|
||||
FunctionName 'MSSQL ->
|
||||
FunctionInfo 'MSSQL ->
|
||||
TableName 'MSSQL ->
|
||||
NESeq (ColumnInfo 'MSSQL) ->
|
||||
SelPermInfo 'MSSQL ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
msBuildFunctionRelayQueryFields _sourceName _sourceInfo _queryTagsConfig _functionName _functionInfo _tableName _pkeyColumns _selPerms =
|
||||
m [a]
|
||||
msBuildFunctionRelayQueryFields _sourceName _functionName _functionInfo _tableName _pkeyColumns _selPerms =
|
||||
pure []
|
||||
|
||||
msBuildFunctionMutationFields ::
|
||||
MonadBuildSchema 'MSSQL r m n =>
|
||||
SourceName ->
|
||||
SourceConfig 'MSSQL ->
|
||||
Maybe QueryTagsConfig ->
|
||||
FunctionName 'MSSQL ->
|
||||
FunctionInfo 'MSSQL ->
|
||||
TableName 'MSSQL ->
|
||||
SelPermInfo 'MSSQL ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
msBuildFunctionMutationFields _ _ _ _ _ _ _ =
|
||||
m [a]
|
||||
msBuildFunctionMutationFields _ _ _ _ _ =
|
||||
pure []
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
@ -75,98 +75,84 @@ mysqlTableArgs sourceName tableInfo selectPermissions = do
|
||||
buildTableRelayQueryFields' ::
|
||||
MonadBuildSchema 'MySQL r m n =>
|
||||
SourceName ->
|
||||
RQL.SourceConfig 'MySQL ->
|
||||
Maybe RQL.QueryTagsConfig ->
|
||||
RQL.TableName 'MySQL ->
|
||||
TableInfo 'MySQL ->
|
||||
G.Name ->
|
||||
NESeq (ColumnInfo 'MySQL) ->
|
||||
SelPermInfo 'MySQL ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
buildTableRelayQueryFields' _sourceName _sourceInfo _queryTagsConfig _tableName _tableInfo _gqlName _pkeyColumns _selPerms =
|
||||
m [a]
|
||||
buildTableRelayQueryFields' _sourceName _tableName _tableInfo _gqlName _pkeyColumns _selPerms =
|
||||
pure []
|
||||
|
||||
buildTableInsertMutationFields' ::
|
||||
MonadBuildSchema 'MySQL r m n =>
|
||||
SourceName ->
|
||||
RQL.SourceConfig 'MySQL ->
|
||||
Maybe RQL.QueryTagsConfig ->
|
||||
RQL.TableName 'MySQL ->
|
||||
TableInfo 'MySQL ->
|
||||
G.Name ->
|
||||
InsPermInfo 'MySQL ->
|
||||
Maybe (SelPermInfo 'MySQL) ->
|
||||
Maybe (UpdPermInfo 'MySQL) ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
buildTableInsertMutationFields' _sourceName _sourceInfo _queryTagsConfig _tableName _tableInfo _gqlName _insPerms _selPerms _updPerms =
|
||||
m [a]
|
||||
buildTableInsertMutationFields' _sourceName _tableName _tableInfo _gqlName _insPerms _selPerms _updPerms =
|
||||
pure []
|
||||
|
||||
buildTableUpdateMutationFields' ::
|
||||
MonadBuildSchema 'MySQL r m n =>
|
||||
SourceName ->
|
||||
RQL.SourceConfig 'MySQL ->
|
||||
Maybe RQL.QueryTagsConfig ->
|
||||
RQL.TableName 'MySQL ->
|
||||
TableInfo 'MySQL ->
|
||||
G.Name ->
|
||||
UpdPermInfo 'MySQL ->
|
||||
Maybe (SelPermInfo 'MySQL) ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
buildTableUpdateMutationFields' _sourceName _sourceInfo _queryTagsConfig _tableName _tableInfo _gqlName _updPerns _selPerms =
|
||||
m [a]
|
||||
buildTableUpdateMutationFields' _sourceName _tableName _tableInfo _gqlName _updPerns _selPerms =
|
||||
pure []
|
||||
|
||||
buildTableDeleteMutationFields' ::
|
||||
MonadBuildSchema 'MySQL r m n =>
|
||||
SourceName ->
|
||||
RQL.SourceConfig 'MySQL ->
|
||||
Maybe RQL.QueryTagsConfig ->
|
||||
RQL.TableName 'MySQL ->
|
||||
TableInfo 'MySQL ->
|
||||
G.Name ->
|
||||
DelPermInfo 'MySQL ->
|
||||
Maybe (SelPermInfo 'MySQL) ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
buildTableDeleteMutationFields' _sourceName _sourceInfo _queryTagsConfig _tableName _tableInfo _gqlName _delPerns _selPerms =
|
||||
m [a]
|
||||
buildTableDeleteMutationFields' _sourceName _tableName _tableInfo _gqlName _delPerns _selPerms =
|
||||
pure []
|
||||
|
||||
buildFunctionQueryFields' ::
|
||||
MonadBuildSchema 'MySQL r m n =>
|
||||
SourceName ->
|
||||
RQL.SourceConfig 'MySQL ->
|
||||
Maybe RQL.QueryTagsConfig ->
|
||||
FunctionName 'MySQL ->
|
||||
FunctionInfo 'MySQL ->
|
||||
RQL.TableName 'MySQL ->
|
||||
SelPermInfo 'MySQL ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
buildFunctionQueryFields' _ _ _ _ _ _ _ =
|
||||
m [a]
|
||||
buildFunctionQueryFields' _ _ _ _ _ =
|
||||
pure []
|
||||
|
||||
buildFunctionRelayQueryFields' ::
|
||||
MonadBuildSchema 'MySQL r m n =>
|
||||
SourceName ->
|
||||
RQL.SourceConfig 'MySQL ->
|
||||
Maybe RQL.QueryTagsConfig ->
|
||||
FunctionName 'MySQL ->
|
||||
FunctionInfo 'MySQL ->
|
||||
RQL.TableName 'MySQL ->
|
||||
NESeq (ColumnInfo 'MySQL) ->
|
||||
SelPermInfo 'MySQL ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
buildFunctionRelayQueryFields' _sourceName _sourceInfo _queryTagsConfig _functionName _functionInfo _tableName _pkeyColumns _selPerms =
|
||||
m [a]
|
||||
buildFunctionRelayQueryFields' _sourceName _functionName _functionInfo _tableName _pkeyColumns _selPerms =
|
||||
pure []
|
||||
|
||||
buildFunctionMutationFields' ::
|
||||
MonadBuildSchema 'MySQL r m n =>
|
||||
SourceName ->
|
||||
RQL.SourceConfig 'MySQL ->
|
||||
Maybe RQL.QueryTagsConfig ->
|
||||
FunctionName 'MySQL ->
|
||||
FunctionInfo 'MySQL ->
|
||||
RQL.TableName 'MySQL ->
|
||||
SelPermInfo 'MySQL ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
buildFunctionMutationFields' _ _ _ _ _ _ _ =
|
||||
m [a]
|
||||
buildFunctionMutationFields' _ _ _ _ _ =
|
||||
pure []
|
||||
|
||||
bsParser :: MonadParse m => Parser 'Both m ByteString
|
||||
|
@ -40,7 +40,6 @@ import Hasura.Prelude
|
||||
import Hasura.RQL.IR
|
||||
import Hasura.RQL.IR.Select qualified as IR
|
||||
import Hasura.RQL.Types
|
||||
import Hasura.SQL.AnyBackend qualified as AB
|
||||
import Hasura.SQL.Types
|
||||
import Language.GraphQL.Draft.Syntax qualified as G
|
||||
|
||||
@ -60,25 +59,21 @@ class PostgresSchema (pgKind :: PostgresKind) where
|
||||
pgkBuildTableRelayQueryFields ::
|
||||
BS.MonadBuildSchema ('Postgres pgKind) r m n =>
|
||||
SourceName ->
|
||||
SourceConfig ('Postgres pgKind) ->
|
||||
Maybe QueryTagsConfig ->
|
||||
TableName ('Postgres pgKind) ->
|
||||
TableInfo ('Postgres pgKind) ->
|
||||
G.Name ->
|
||||
NESeq (ColumnInfo ('Postgres pgKind)) ->
|
||||
SelPermInfo ('Postgres pgKind) ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
m [FieldParser n (QueryDB ('Postgres pgKind) (RemoteSelect UnpreparedValue) (UnpreparedValue ('Postgres pgKind)))]
|
||||
pgkBuildFunctionRelayQueryFields ::
|
||||
BS.MonadBuildSchema ('Postgres pgKind) r m n =>
|
||||
SourceName ->
|
||||
SourceConfig ('Postgres pgKind) ->
|
||||
Maybe QueryTagsConfig ->
|
||||
FunctionName ('Postgres pgKind) ->
|
||||
FunctionInfo ('Postgres pgKind) ->
|
||||
TableName ('Postgres pgKind) ->
|
||||
NESeq (ColumnInfo ('Postgres pgKind)) ->
|
||||
SelPermInfo ('Postgres pgKind) ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
m [FieldParser n (QueryDB ('Postgres pgKind) (RemoteSelect UnpreparedValue) (UnpreparedValue ('Postgres pgKind)))]
|
||||
pgkRelayExtension ::
|
||||
Maybe (XRelay ('Postgres pgKind))
|
||||
pgkNode ::
|
||||
@ -106,8 +101,8 @@ instance PostgresSchema 'Vanilla where
|
||||
pgkNode = nodePG
|
||||
|
||||
instance PostgresSchema 'Citus where
|
||||
pgkBuildTableRelayQueryFields _ _ _ _ _ _ _ _ = pure []
|
||||
pgkBuildFunctionRelayQueryFields _ _ _ _ _ _ _ _ = pure []
|
||||
pgkBuildTableRelayQueryFields _ _ _ _ _ _ = pure []
|
||||
pgkBuildFunctionRelayQueryFields _ _ _ _ _ _ = pure []
|
||||
pgkRelayExtension = Nothing
|
||||
pgkNode = undefined
|
||||
|
||||
@ -161,47 +156,33 @@ buildTableRelayQueryFields ::
|
||||
forall pgKind m n r.
|
||||
MonadBuildSchema ('Postgres pgKind) r m n =>
|
||||
SourceName ->
|
||||
SourceConfig ('Postgres pgKind) ->
|
||||
Maybe QueryTagsConfig ->
|
||||
TableName ('Postgres pgKind) ->
|
||||
TableInfo ('Postgres pgKind) ->
|
||||
G.Name ->
|
||||
NESeq (ColumnInfo ('Postgres pgKind)) ->
|
||||
SelPermInfo ('Postgres pgKind) ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
buildTableRelayQueryFields sourceName sourceInfo queryTagsConfig tableName tableInfo gqlName pkeyColumns selPerms = do
|
||||
let mkRF =
|
||||
RFDB sourceName
|
||||
. AB.mkAnyBackend
|
||||
. SourceConfigWith sourceInfo queryTagsConfig
|
||||
. QDBR
|
||||
fieldDesc = Just $ G.Description $ "fetch data from the table: " <>> tableName
|
||||
m [FieldParser n (QueryDB ('Postgres pgKind) (RemoteSelect UnpreparedValue) (UnpreparedValue ('Postgres pgKind)))]
|
||||
buildTableRelayQueryFields sourceName tableName tableInfo gqlName pkeyColumns selPerms = do
|
||||
let fieldDesc = Just $ G.Description $ "fetch data from the table: " <>> tableName
|
||||
fieldName <- mkRootFieldName $ gqlName <> $$(G.litName "_connection")
|
||||
fmap afold $
|
||||
optionalFieldParser (mkRF . QDBConnection) $
|
||||
optionalFieldParser (QDBConnection) $
|
||||
selectTableConnection sourceName tableInfo fieldName fieldDesc pkeyColumns selPerms
|
||||
|
||||
buildFunctionRelayQueryFields ::
|
||||
forall pgKind m n r.
|
||||
MonadBuildSchema ('Postgres pgKind) r m n =>
|
||||
SourceName ->
|
||||
SourceConfig ('Postgres pgKind) ->
|
||||
Maybe QueryTagsConfig ->
|
||||
FunctionName ('Postgres pgKind) ->
|
||||
FunctionInfo ('Postgres pgKind) ->
|
||||
TableName ('Postgres pgKind) ->
|
||||
NESeq (ColumnInfo ('Postgres pgKind)) ->
|
||||
SelPermInfo ('Postgres pgKind) ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
buildFunctionRelayQueryFields sourceName sourceInfo queryTagsConfig functionName functionInfo tableName pkeyColumns selPerms = do
|
||||
let mkRF =
|
||||
RFDB sourceName
|
||||
. AB.mkAnyBackend
|
||||
. SourceConfigWith sourceInfo queryTagsConfig
|
||||
. QDBR
|
||||
fieldDesc = Just $ G.Description $ "execute function " <> functionName <<> " which returns " <>> tableName
|
||||
m [FieldParser n (QueryDB ('Postgres pgKind) (RemoteSelect UnpreparedValue) (UnpreparedValue ('Postgres pgKind)))]
|
||||
buildFunctionRelayQueryFields sourceName functionName functionInfo tableName pkeyColumns selPerms = do
|
||||
let fieldDesc = Just $ G.Description $ "execute function " <> functionName <<> " which returns " <>> tableName
|
||||
fmap afold $
|
||||
optionalFieldParser (mkRF . QDBConnection) $
|
||||
optionalFieldParser (QDBConnection) $
|
||||
selectFunctionConnection sourceName functionInfo fieldDesc pkeyColumns selPerms
|
||||
|
||||
----------------------------------------------------------------
|
||||
|
@ -40,6 +40,7 @@ import Hasura.Prelude
|
||||
import Hasura.RQL.IR
|
||||
import Hasura.RQL.Types
|
||||
import Hasura.SQL.AnyBackend qualified as AB
|
||||
import Hasura.SQL.Tag (HasTag)
|
||||
import Hasura.Session
|
||||
import Language.GraphQL.Draft.Syntax qualified as G
|
||||
|
||||
@ -522,7 +523,7 @@ buildQueryFields sourceName sourceConfig tables (takeExposedAs FEAQuery -> funct
|
||||
tableGQLName <- getTableGQLName @b tableInfo
|
||||
-- FIXME: retrieve permissions directly from tableInfo to avoid a sourceCache lookup
|
||||
selectPerms <- tableSelectPermissions tableInfo
|
||||
for selectPerms $ buildTableQueryFields sourceName sourceConfig queryTagsConfig tableName tableInfo tableGQLName
|
||||
for selectPerms $ mkRF . buildTableQueryFields sourceName tableName tableInfo tableGQLName
|
||||
functionSelectExpParsers <- for (Map.toList functions) \(functionName, functionInfo) -> runMaybeT $ do
|
||||
guard $
|
||||
roleName == adminRoleName
|
||||
@ -531,8 +532,10 @@ buildQueryFields sourceName sourceConfig tables (takeExposedAs FEAQuery -> funct
|
||||
let targetTableName = _fiReturnType functionInfo
|
||||
targetTableInfo <- askTableInfo sourceName targetTableName
|
||||
selectPerms <- MaybeT $ tableSelectPermissions targetTableInfo
|
||||
lift $ buildFunctionQueryFields sourceName sourceConfig queryTagsConfig functionName functionInfo targetTableName selectPerms
|
||||
lift $ mkRF $ buildFunctionQueryFields sourceName functionName functionInfo targetTableName selectPerms
|
||||
pure $ concat $ catMaybes $ tableSelectExpParsers <> functionSelectExpParsers
|
||||
where
|
||||
mkRF = mkRootField sourceName sourceConfig queryTagsConfig QDBR
|
||||
|
||||
buildRelayQueryFields ::
|
||||
forall b r m n.
|
||||
@ -549,15 +552,17 @@ buildRelayQueryFields sourceName sourceConfig tables (takeExposedAs FEAQuery ->
|
||||
pkeyColumns <- hoistMaybe $ tableInfo ^? tiCoreInfo . tciPrimaryKey . _Just . pkColumns
|
||||
-- FIXME: retrieve permissions directly from tableInfo to avoid a sourceCache lookup
|
||||
selectPerms <- MaybeT $ tableSelectPermissions tableInfo
|
||||
lift $ buildTableRelayQueryFields sourceName sourceConfig queryTagsConfig tableName tableInfo tableGQLName pkeyColumns selectPerms
|
||||
lift $ mkRF $ buildTableRelayQueryFields sourceName tableName tableInfo tableGQLName pkeyColumns selectPerms
|
||||
functionConnectionFields <- for (Map.toList functions) $ \(functionName, functionInfo) -> runMaybeT do
|
||||
let returnTableName = _fiReturnType functionInfo
|
||||
-- FIXME: only extract the TableInfo once to avoid redundant cache lookups
|
||||
returnTableInfo <- lift $ askTableInfo sourceName returnTableName
|
||||
pkeyColumns <- MaybeT $ (^? tiCoreInfo . tciPrimaryKey . _Just . pkColumns) <$> pure returnTableInfo
|
||||
selectPerms <- MaybeT $ tableSelectPermissions returnTableInfo
|
||||
lift $ buildFunctionRelayQueryFields sourceName sourceConfig queryTagsConfig functionName functionInfo returnTableName pkeyColumns selectPerms
|
||||
lift $ mkRF $ buildFunctionRelayQueryFields sourceName functionName functionInfo returnTableName pkeyColumns selectPerms
|
||||
pure $ concat $ catMaybes $ tableConnectionFields <> functionConnectionFields
|
||||
where
|
||||
mkRF = mkRootField sourceName sourceConfig queryTagsConfig QDBR
|
||||
|
||||
buildMutationFields ::
|
||||
forall b r m n.
|
||||
@ -586,24 +591,15 @@ buildMutationFields scenario sourceName sourceConfig tables (takeExposedAs FEAMu
|
||||
then Nothing
|
||||
else Just insertPerms
|
||||
lift $
|
||||
buildTableInsertMutationFields
|
||||
sourceName
|
||||
sourceConfig
|
||||
queryTagsConfig
|
||||
tableName
|
||||
tableInfo
|
||||
tableGQLName
|
||||
insertPerms
|
||||
_permSel
|
||||
_permUpd
|
||||
mkRF (MDBR . MDBInsert) $ buildTableInsertMutationFields sourceName tableName tableInfo tableGQLName insertPerms _permSel _permUpd
|
||||
updates <- runMaybeT $ do
|
||||
guard $ isMutable viIsUpdatable viewInfo
|
||||
updatePerms <- hoistMaybe _permUpd
|
||||
lift $ buildTableUpdateMutationFields sourceName sourceConfig queryTagsConfig tableName tableInfo tableGQLName updatePerms _permSel
|
||||
lift $ mkRF (MDBR . MDBUpdate) $ buildTableUpdateMutationFields @b sourceName tableName tableInfo tableGQLName updatePerms _permSel
|
||||
deletes <- runMaybeT $ do
|
||||
guard $ isMutable viIsDeletable viewInfo
|
||||
deletePerms <- hoistMaybe _permDel
|
||||
lift $ buildTableDeleteMutationFields sourceName sourceConfig queryTagsConfig tableName tableInfo tableGQLName deletePerms _permSel
|
||||
lift $ mkRF (MDBR . MDBDelete) $ buildTableDeleteMutationFields sourceName tableName tableInfo tableGQLName deletePerms _permSel
|
||||
pure $ concat $ catMaybes [inserts, updates, deletes]
|
||||
functionMutations <- for (Map.toList functions) \(functionName, functionInfo) -> runMaybeT $ do
|
||||
let targetTableName = _fiReturnType functionInfo
|
||||
@ -615,8 +611,11 @@ buildMutationFields scenario sourceName sourceConfig tables (takeExposedAs FEAMu
|
||||
-- when function permissions are inferred, we don't expose the
|
||||
-- mutation functions for non-admin roles. See Note [Function Permissions]
|
||||
roleName == adminRoleName || roleName `Map.member` (_fiPermissions functionInfo)
|
||||
lift $ buildFunctionMutationFields sourceName sourceConfig queryTagsConfig functionName functionInfo targetTableName selectPerms
|
||||
lift $ mkRF MDBR $ buildFunctionMutationFields sourceName functionName functionInfo targetTableName selectPerms
|
||||
pure $ concat $ catMaybes $ tableMutations <> functionMutations
|
||||
where
|
||||
mkRF :: forall a db remote action raw. (a -> db b) -> m [FieldParser n a] -> m [FieldParser n (RootField db remote action raw)]
|
||||
mkRF = mkRootField sourceName sourceConfig queryTagsConfig
|
||||
|
||||
----------------------------------------------------------------
|
||||
-- Building root parser from fields
|
||||
@ -770,6 +769,34 @@ buildMutationParser allRemotes allActions nonObjectCustomTypes mutationFields =
|
||||
----------------------------------------------------------------
|
||||
-- local helpers
|
||||
|
||||
-- | All the 'BackendSchema' methods produce something of the form @m
|
||||
-- [FieldParser n a]@, where @a@ is something specific to what is being parsed
|
||||
-- by the given method.
|
||||
--
|
||||
-- In order to build the complete schema these must be
|
||||
-- homogenised and be annotated with query-tag data, which this function makes
|
||||
-- easy.
|
||||
mkRootField ::
|
||||
forall b m n a db remote action raw.
|
||||
(HasTag b, Functor m, Functor n) =>
|
||||
SourceName ->
|
||||
SourceConfig b ->
|
||||
Maybe QueryTagsConfig ->
|
||||
(a -> db b) ->
|
||||
m [FieldParser n a] ->
|
||||
m [FieldParser n (RootField db remote action raw)]
|
||||
mkRootField sourceName sourceConfig queryTagsConfig inj =
|
||||
fmap
|
||||
( map
|
||||
( fmap
|
||||
( RFDB sourceName
|
||||
. AB.mkAnyBackend @b
|
||||
. SourceConfigWith sourceConfig queryTagsConfig
|
||||
. inj
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
takeExposedAs :: FunctionExposedAs -> FunctionCache b -> FunctionCache b
|
||||
takeExposedAs x = Map.filter ((== x) . _fiExposedAs)
|
||||
|
||||
|
@ -91,36 +91,32 @@ class Backend b => BackendSchema (b :: BackendType) where
|
||||
buildTableQueryFields ::
|
||||
MonadBuildSchema b r m n =>
|
||||
SourceName ->
|
||||
SourceConfig b ->
|
||||
Maybe QueryTagsConfig ->
|
||||
TableName b ->
|
||||
TableInfo b ->
|
||||
G.Name ->
|
||||
SelPermInfo b ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
m [FieldParser n (QueryDB b (RemoteSelect UnpreparedValue) (UnpreparedValue b))]
|
||||
|
||||
buildTableRelayQueryFields ::
|
||||
MonadBuildSchema b r m n =>
|
||||
SourceName ->
|
||||
SourceConfig b ->
|
||||
Maybe QueryTagsConfig ->
|
||||
TableName b ->
|
||||
TableInfo b ->
|
||||
G.Name ->
|
||||
NESeq (ColumnInfo b) ->
|
||||
SelPermInfo b ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
m [FieldParser n (QueryDB b (RemoteSelect UnpreparedValue) (UnpreparedValue b))]
|
||||
|
||||
buildTableInsertMutationFields ::
|
||||
MonadBuildSchema b r m n =>
|
||||
SourceName ->
|
||||
SourceConfig b ->
|
||||
Maybe QueryTagsConfig ->
|
||||
TableName b ->
|
||||
TableInfo b ->
|
||||
G.Name ->
|
||||
InsPermInfo b ->
|
||||
Maybe (SelPermInfo b) ->
|
||||
Maybe (UpdPermInfo b) ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
m [FieldParser n (AnnInsert b (RemoteSelect UnpreparedValue) (UnpreparedValue b))]
|
||||
|
||||
-- | This method is responsible for building the GraphQL Schema for mutations
|
||||
-- backed by @UPDATE@ statements on some table, as described in
|
||||
@ -132,10 +128,6 @@ class Backend b => BackendSchema (b :: BackendType) where
|
||||
MonadBuildSchema b r m n =>
|
||||
-- | The source that the table lives in
|
||||
SourceName ->
|
||||
-- | The associated 'SourceConfig'
|
||||
SourceConfig b ->
|
||||
-- TODO: What are Query Tags?
|
||||
Maybe QueryTagsConfig ->
|
||||
-- | The name of the table being acted on
|
||||
TableName b ->
|
||||
-- | table info
|
||||
@ -146,50 +138,45 @@ class Backend b => BackendSchema (b :: BackendType) where
|
||||
UpdPermInfo b ->
|
||||
-- | select permissions of the table (if any)
|
||||
Maybe (SelPermInfo b) ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
m [FieldParser n (AnnotatedUpdateG b (RemoteSelect UnpreparedValue) (UnpreparedValue b))]
|
||||
|
||||
buildTableDeleteMutationFields ::
|
||||
MonadBuildSchema b r m n =>
|
||||
SourceName ->
|
||||
SourceConfig b ->
|
||||
Maybe QueryTagsConfig ->
|
||||
TableName b ->
|
||||
TableInfo b ->
|
||||
G.Name ->
|
||||
DelPermInfo b ->
|
||||
Maybe (SelPermInfo b) ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
m [FieldParser n (AnnDelG b (RemoteSelect UnpreparedValue) (UnpreparedValue b))]
|
||||
|
||||
buildFunctionQueryFields ::
|
||||
MonadBuildSchema b r m n =>
|
||||
SourceName ->
|
||||
SourceConfig b ->
|
||||
Maybe QueryTagsConfig ->
|
||||
FunctionName b ->
|
||||
FunctionInfo b ->
|
||||
TableName b ->
|
||||
SelPermInfo b ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
m [FieldParser n (QueryDB b (RemoteSelect UnpreparedValue) (UnpreparedValue b))]
|
||||
|
||||
buildFunctionRelayQueryFields ::
|
||||
MonadBuildSchema b r m n =>
|
||||
SourceName ->
|
||||
SourceConfig b ->
|
||||
Maybe QueryTagsConfig ->
|
||||
FunctionName b ->
|
||||
FunctionInfo b ->
|
||||
TableName b ->
|
||||
NESeq (ColumnInfo b) ->
|
||||
SelPermInfo b ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
m [FieldParser n (QueryDB b (RemoteSelect UnpreparedValue) (UnpreparedValue b))]
|
||||
|
||||
buildFunctionMutationFields ::
|
||||
MonadBuildSchema b r m n =>
|
||||
SourceName ->
|
||||
SourceConfig b ->
|
||||
Maybe QueryTagsConfig ->
|
||||
FunctionName b ->
|
||||
FunctionInfo b ->
|
||||
TableName b ->
|
||||
SelPermInfo b ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
m [FieldParser n (MutationDB b (RemoteSelect UnpreparedValue) (UnpreparedValue b))]
|
||||
|
||||
-- table components
|
||||
tableArguments ::
|
||||
|
@ -62,27 +62,19 @@ import Hasura.GraphQL.Schema.Select
|
||||
import Hasura.Prelude
|
||||
import Hasura.RQL.IR
|
||||
import Hasura.RQL.Types
|
||||
import Hasura.SQL.AnyBackend qualified as AB
|
||||
import Language.GraphQL.Draft.Syntax qualified as G
|
||||
|
||||
buildTableQueryFields ::
|
||||
forall b r m n.
|
||||
MonadBuildSchema b r m n =>
|
||||
SourceName ->
|
||||
SourceConfig b ->
|
||||
Maybe QueryTagsConfig ->
|
||||
TableName b ->
|
||||
TableInfo b ->
|
||||
G.Name ->
|
||||
SelPermInfo b ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
buildTableQueryFields sourceName sourceInfo queryTagsConfig tableName tableInfo gqlName selPerms = do
|
||||
let mkRF =
|
||||
RFDB sourceName
|
||||
. AB.mkAnyBackend
|
||||
. SourceConfigWith sourceInfo queryTagsConfig
|
||||
. QDBR
|
||||
customRootFields = _tcCustomRootFields $ _tciCustomConfig $ _tiCoreInfo tableInfo
|
||||
(m [FieldParser n (QueryDB b (RemoteSelect UnpreparedValue) (UnpreparedValue b))])
|
||||
buildTableQueryFields sourceName tableName tableInfo gqlName selPerms = do
|
||||
let customRootFields = _tcCustomRootFields $ _tciCustomConfig $ _tiCoreInfo tableInfo
|
||||
-- select table
|
||||
selectDesc = Just $ G.Description $ "fetch data from the table: " <>> tableName
|
||||
-- select table by pk
|
||||
@ -94,28 +86,24 @@ buildTableQueryFields sourceName sourceInfo queryTagsConfig tableName tableInfo
|
||||
selectAggName <- mkRootFieldName $ fromMaybe (gqlName <> $$(G.litName "_aggregate")) $ _tcrfSelectAggregate customRootFields
|
||||
catMaybes
|
||||
<$> sequenceA
|
||||
[ requiredFieldParser (mkRF . QDBMultipleRows) $ selectTable sourceName tableInfo selectName selectDesc selPerms,
|
||||
optionalFieldParser (mkRF . QDBSingleRow) $ selectTableByPk sourceName tableInfo selectPKName selectPKDesc selPerms,
|
||||
optionalFieldParser (mkRF . QDBAggregation) $ selectTableAggregate sourceName tableInfo selectAggName selectAggDesc selPerms
|
||||
[ requiredFieldParser QDBMultipleRows $ selectTable sourceName tableInfo selectName selectDesc selPerms,
|
||||
optionalFieldParser QDBSingleRow $ selectTableByPk sourceName tableInfo selectPKName selectPKDesc selPerms,
|
||||
optionalFieldParser QDBAggregation $ selectTableAggregate sourceName tableInfo selectAggName selectAggDesc selPerms
|
||||
]
|
||||
|
||||
buildTableInsertMutationFields ::
|
||||
forall b r m n.
|
||||
MonadBuildSchema b r m n =>
|
||||
SourceName ->
|
||||
SourceConfig b ->
|
||||
Maybe QueryTagsConfig ->
|
||||
TableName b ->
|
||||
TableInfo b ->
|
||||
G.Name ->
|
||||
InsPermInfo b ->
|
||||
Maybe (SelPermInfo b) ->
|
||||
Maybe (UpdPermInfo b) ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
m [FieldParser n (AnnInsert b (RemoteSelect UnpreparedValue) (UnpreparedValue b))]
|
||||
buildTableInsertMutationFields
|
||||
sourceName
|
||||
sourceInfo
|
||||
queryTagsConfig
|
||||
tableName
|
||||
tableInfo
|
||||
gqlName
|
||||
@ -123,20 +111,7 @@ buildTableInsertMutationFields
|
||||
mSelPerms
|
||||
mUpdPerms =
|
||||
do
|
||||
let mkRF ::
|
||||
FieldParser
|
||||
n
|
||||
(AnnInsert b (RemoteSelect UnpreparedValue) (UnpreparedValue b)) ->
|
||||
FieldParser n (MutationRootField UnpreparedValue)
|
||||
mkRF =
|
||||
fmap
|
||||
( RFDB sourceName
|
||||
. AB.mkAnyBackend
|
||||
. SourceConfigWith sourceInfo queryTagsConfig
|
||||
. MDBR
|
||||
. MDBInsert
|
||||
)
|
||||
customRootFields = _tcCustomRootFields $ _tciCustomConfig $ _tiCoreInfo tableInfo
|
||||
let customRootFields = _tcCustomRootFields $ _tciCustomConfig $ _tiCoreInfo tableInfo
|
||||
-- insert into table
|
||||
insertDesc = Just $ G.Description $ "insert data into the table: " <>> tableName
|
||||
-- insert one into table
|
||||
@ -149,7 +124,7 @@ buildTableInsertMutationFields
|
||||
-- user doesn't have select permissions.
|
||||
insertOne <- for mSelPerms \selPerms ->
|
||||
insertOneIntoTable sourceName tableInfo insertOneName insertOneDesc insPerms selPerms mUpdPerms
|
||||
pure $ map mkRF (insert : maybeToList insertOne)
|
||||
pure $ insert : maybeToList insertOne
|
||||
|
||||
-- | This function is the basic building block for update mutations. It
|
||||
-- implements the mutation schema in the general shape described in
|
||||
@ -183,10 +158,6 @@ buildTableUpdateMutationFields ::
|
||||
) ->
|
||||
-- | The source that the table lives in
|
||||
SourceName ->
|
||||
-- | The associated 'SourceConfig'
|
||||
SourceConfig b ->
|
||||
-- TODO: What are Query Tags?
|
||||
Maybe QueryTagsConfig ->
|
||||
-- | The name of the table being acted on
|
||||
TableName b ->
|
||||
-- | table info
|
||||
@ -197,14 +168,9 @@ buildTableUpdateMutationFields ::
|
||||
UpdPermInfo b ->
|
||||
-- | select permissions of the table (if any)
|
||||
Maybe (SelPermInfo b) ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
buildTableUpdateMutationFields mkBackendUpdate sourceName sourceInfo queryTagsConfig tableName tableInfo gqlName updPerms mSelPerms = do
|
||||
let mkRF =
|
||||
RFDB sourceName
|
||||
. AB.mkAnyBackend
|
||||
. SourceConfigWith sourceInfo queryTagsConfig
|
||||
. MDBR
|
||||
customRootFields = _tcCustomRootFields $ _tciCustomConfig $ _tiCoreInfo tableInfo
|
||||
m [FieldParser n (AnnotatedUpdateG b (RemoteSelect UnpreparedValue) (UnpreparedValue b))]
|
||||
buildTableUpdateMutationFields mkBackendUpdate sourceName tableName tableInfo gqlName updPerms mSelPerms = do
|
||||
let customRootFields = _tcCustomRootFields $ _tciCustomConfig $ _tiCoreInfo tableInfo
|
||||
-- update table
|
||||
updateDesc = Just $ G.Description $ "update data of the table: " <>> tableName
|
||||
-- update table by pk
|
||||
@ -217,27 +183,20 @@ buildTableUpdateMutationFields mkBackendUpdate sourceName sourceInfo queryTagsCo
|
||||
-- exists on the table and if the user has select permissions on all columns
|
||||
-- that make up the key.
|
||||
updateByPk <- fmap join $ for mSelPerms $ updateTableByPk backendUpdate sourceName tableInfo updatePKName updatePKDesc updPerms
|
||||
pure $ fmap (mkRF . MDBUpdate) <$> update : catMaybes [updateByPk]
|
||||
pure $ update : catMaybes [updateByPk]
|
||||
|
||||
buildTableDeleteMutationFields ::
|
||||
forall b r m n.
|
||||
MonadBuildSchema b r m n =>
|
||||
SourceName ->
|
||||
SourceConfig b ->
|
||||
Maybe QueryTagsConfig ->
|
||||
TableName b ->
|
||||
TableInfo b ->
|
||||
G.Name ->
|
||||
DelPermInfo b ->
|
||||
Maybe (SelPermInfo b) ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
buildTableDeleteMutationFields sourceName sourceInfo queryTagsConfig tableName tableInfo gqlName delPerms mSelPerms = do
|
||||
let mkRF =
|
||||
RFDB sourceName
|
||||
. AB.mkAnyBackend
|
||||
. SourceConfigWith sourceInfo queryTagsConfig
|
||||
. MDBR
|
||||
customRootFields = _tcCustomRootFields $ _tciCustomConfig $ _tiCoreInfo tableInfo
|
||||
m [FieldParser n (AnnDelG b (RemoteSelect UnpreparedValue) (UnpreparedValue b))]
|
||||
buildTableDeleteMutationFields sourceName tableName tableInfo gqlName delPerms mSelPerms = do
|
||||
let customRootFields = _tcCustomRootFields $ _tciCustomConfig $ _tiCoreInfo tableInfo
|
||||
-- delete from table
|
||||
deleteDesc = Just $ G.Description $ "delete data from the table: " <>> tableName
|
||||
-- delete from table by pk
|
||||
@ -249,27 +208,19 @@ buildTableDeleteMutationFields sourceName sourceInfo queryTagsConfig tableName t
|
||||
-- select permissions for them, which at the very least requires select
|
||||
-- permissions.
|
||||
deleteByPk <- fmap join $ for mSelPerms $ deleteFromTableByPk sourceName tableInfo deletePKName deletePKDesc delPerms
|
||||
pure $ fmap (mkRF . MDBDelete) <$> delete : maybeToList deleteByPk
|
||||
pure $ delete : maybeToList deleteByPk
|
||||
|
||||
buildFunctionQueryFields ::
|
||||
forall b r m n.
|
||||
MonadBuildSchema b r m n =>
|
||||
SourceName ->
|
||||
SourceConfig b ->
|
||||
Maybe QueryTagsConfig ->
|
||||
FunctionName b ->
|
||||
FunctionInfo b ->
|
||||
TableName b ->
|
||||
SelPermInfo b ->
|
||||
m [FieldParser n (QueryRootField UnpreparedValue)]
|
||||
buildFunctionQueryFields sourceName sourceInfo queryTagsConfig functionName functionInfo tableName selPerms = do
|
||||
let mkRF =
|
||||
RFDB sourceName
|
||||
. AB.mkAnyBackend
|
||||
. SourceConfigWith sourceInfo queryTagsConfig
|
||||
. QDBR
|
||||
|
||||
-- select function
|
||||
m [FieldParser n (QueryDB b (RemoteSelect UnpreparedValue) (UnpreparedValue b))]
|
||||
buildFunctionQueryFields sourceName functionName functionInfo tableName selPerms = do
|
||||
let -- select function
|
||||
funcDesc =
|
||||
Just . G.Description $
|
||||
flip fromMaybe (_fiComment functionInfo) $ "execute function " <> functionName <<> " which returns " <>> tableName
|
||||
@ -284,33 +235,25 @@ buildFunctionQueryFields sourceName sourceInfo queryTagsConfig functionName func
|
||||
|
||||
catMaybes
|
||||
<$> sequenceA
|
||||
[ requiredFieldParser (mkRF . queryResultType) $ selectFunction sourceName functionInfo funcDesc selPerms,
|
||||
optionalFieldParser (mkRF . QDBAggregation) $ selectFunctionAggregate sourceName functionInfo funcAggDesc selPerms
|
||||
[ requiredFieldParser (queryResultType) $ selectFunction sourceName functionInfo funcDesc selPerms,
|
||||
optionalFieldParser (QDBAggregation) $ selectFunctionAggregate sourceName functionInfo funcAggDesc selPerms
|
||||
]
|
||||
|
||||
buildFunctionMutationFields ::
|
||||
forall b r m n.
|
||||
MonadBuildSchema b r m n =>
|
||||
SourceName ->
|
||||
SourceConfig b ->
|
||||
Maybe QueryTagsConfig ->
|
||||
FunctionName b ->
|
||||
FunctionInfo b ->
|
||||
TableName b ->
|
||||
SelPermInfo b ->
|
||||
m [FieldParser n (MutationRootField UnpreparedValue)]
|
||||
buildFunctionMutationFields sourceName sourceInfo queryTagsConfig functionName functionInfo tableName selPerms = do
|
||||
let mkRF =
|
||||
RFDB sourceName
|
||||
. AB.mkAnyBackend
|
||||
. SourceConfigWith sourceInfo queryTagsConfig
|
||||
. MDBR
|
||||
|
||||
funcDesc = Just $ G.Description $ "execute VOLATILE function " <> functionName <<> " which returns " <>> tableName
|
||||
m [FieldParser n (MutationDB b (RemoteSelect UnpreparedValue) (UnpreparedValue b))]
|
||||
buildFunctionMutationFields sourceName functionName functionInfo tableName selPerms = do
|
||||
let funcDesc = Just $ G.Description $ "execute VOLATILE function " <> functionName <<> " which returns " <>> tableName
|
||||
|
||||
jsonAggSelect = _fiJsonAggSelect functionInfo
|
||||
catMaybes
|
||||
<$> sequenceA
|
||||
[ requiredFieldParser (mkRF . MDBFunction jsonAggSelect) $ selectFunction sourceName functionInfo funcDesc selPerms
|
||||
[ requiredFieldParser (MDBFunction jsonAggSelect) $ selectFunction sourceName functionInfo funcDesc selPerms
|
||||
-- TODO: do we want aggregate mutation functions?
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user