{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Hasura.Backends.Postgres.Instances.Metadata () where
import Data.HashMap.Strict qualified as Map
import Data.Text.Extended
import Hasura.Backends.Postgres.DDL qualified as PG
import Hasura.Backends.Postgres.SQL.Types (QualifiedTable)
import Hasura.Backends.Postgres.Types.CitusExtraTableMetadata
import Hasura.Base.Error
import Hasura.Prelude
import Hasura.RQL.Types.Backend (Backend)
import Hasura.RQL.Types.Metadata.Backend
import Hasura.RQL.Types.Relationships.Local
import Hasura.RQL.Types.Table
import Hasura.SQL.Backend
class PostgresMetadata (pgKind :: PostgresKind) where
validateRel ::
MonadError QErr m =>
TableCache ('Postgres pgKind) ->
QualifiedTable ->
Either (ObjRelDef ('Postgres pgKind)) (ArrRelDef ('Postgres pgKind)) ->
m ()
instance PostgresMetadata 'Vanilla where
validateRel :: TableCache ('Postgres 'Vanilla)
-> QualifiedTable
-> Either
(ObjRelDef ('Postgres 'Vanilla)) (ArrRelDef ('Postgres 'Vanilla))
-> m ()
validateRel TableCache ('Postgres 'Vanilla)
_ QualifiedTable
_ Either
(ObjRelDef ('Postgres 'Vanilla)) (ArrRelDef ('Postgres 'Vanilla))
_ = () -> m ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
instance PostgresMetadata 'Citus where
validateRel ::
forall m.
MonadError QErr m =>
TableCache ('Postgres 'Citus) ->
QualifiedTable ->
Either (ObjRelDef ('Postgres 'Citus)) (ArrRelDef ('Postgres 'Citus)) ->
m ()
validateRel :: TableCache ('Postgres 'Citus)
-> QualifiedTable
-> Either
(ObjRelDef ('Postgres 'Citus)) (ArrRelDef ('Postgres 'Citus))
-> m ()
validateRel TableCache ('Postgres 'Citus)
tableCache QualifiedTable
sourceTable Either
(ObjRelDef ('Postgres 'Citus)) (ArrRelDef ('Postgres 'Citus))
relInfo = do
TableInfo ('Postgres 'Citus)
sourceTableInfo <- QualifiedTable -> m (TableInfo ('Postgres 'Citus))
lookupTableInfo QualifiedTable
sourceTable
case Either
(ObjRelDef ('Postgres 'Citus)) (ArrRelDef ('Postgres 'Citus))
relInfo of
Left (RelDef RelName
_ ObjRelUsing ('Postgres 'Citus)
obj Maybe Text
_) ->
case ObjRelUsing ('Postgres 'Citus)
obj of
RUFKeyOn (SameTable NonEmpty (Column ('Postgres 'Citus))
_) -> () -> m ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
RUFKeyOn (RemoteTable TableName ('Postgres 'Citus)
targetTable NonEmpty (Column ('Postgres 'Citus))
_) -> TableInfo ('Postgres 'Citus) -> QualifiedTable -> m ()
checkObjectRelationship TableInfo ('Postgres 'Citus)
sourceTableInfo TableName ('Postgres 'Citus)
QualifiedTable
targetTable
RUManual RelManualConfig {} -> () -> m ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
Right (RelDef RelName
_ ArrRelUsing ('Postgres 'Citus)
obj Maybe Text
_) ->
case ArrRelUsing ('Postgres 'Citus)
obj of
RUFKeyOn (ArrRelUsingFKeyOn TableName ('Postgres 'Citus)
targetTable NonEmpty (Column ('Postgres 'Citus))
_col) -> TableInfo ('Postgres 'Citus) -> QualifiedTable -> m ()
checkArrayRelationship TableInfo ('Postgres 'Citus)
sourceTableInfo TableName ('Postgres 'Citus)
QualifiedTable
targetTable
RUManual RelManualConfig {} -> () -> m ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
where
lookupTableInfo :: QualifiedTable -> m (TableInfo ('Postgres 'Citus))
lookupTableInfo QualifiedTable
tableName =
QualifiedTable
-> HashMap QualifiedTable (TableInfo ('Postgres 'Citus))
-> Maybe (TableInfo ('Postgres 'Citus))
forall k v. (Eq k, Hashable k) => k -> HashMap k v -> Maybe v
Map.lookup QualifiedTable
tableName TableCache ('Postgres 'Citus)
HashMap QualifiedTable (TableInfo ('Postgres 'Citus))
tableCache
Maybe (TableInfo ('Postgres 'Citus))
-> m (TableInfo ('Postgres 'Citus))
-> m (TableInfo ('Postgres 'Citus))
forall (m :: * -> *) a. Applicative m => Maybe a -> m a -> m a
`onNothing` Code -> Text -> m (TableInfo ('Postgres 'Citus))
forall (m :: * -> *) a. QErrM m => Code -> Text -> m a
throw400 Code
NotFound (Text
"no such table " Text -> QualifiedTable -> Text
forall t. ToTxt t => Text -> t -> Text
<>> QualifiedTable
tableName)
checkObjectRelationship :: TableInfo ('Postgres 'Citus) -> QualifiedTable -> m ()
checkObjectRelationship TableInfo ('Postgres 'Citus)
sourceTableInfo QualifiedTable
targetTable = do
TableInfo ('Postgres 'Citus)
targetTableInfo <- QualifiedTable -> m (TableInfo ('Postgres 'Citus))
lookupTableInfo QualifiedTable
targetTable
let notSupported :: m ()
notSupported = TableInfo ('Postgres 'Citus)
-> TableInfo ('Postgres 'Citus) -> Text -> m ()
throwNotSupportedError TableInfo ('Postgres 'Citus)
sourceTableInfo TableInfo ('Postgres 'Citus)
targetTableInfo Text
"object"
case ( TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> ExtraTableMetadata ('Postgres 'Citus)
forall (b :: BackendType) field primaryKeyColumn.
TableCoreInfoG b field primaryKeyColumn -> ExtraTableMetadata b
_tciExtraTableMetadata (TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> ExtraTableMetadata ('Postgres 'Citus))
-> TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> ExtraTableMetadata ('Postgres 'Citus)
forall a b. (a -> b) -> a -> b
$ TableInfo ('Postgres 'Citus)
-> TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
forall (b :: BackendType). TableInfo b -> TableCoreInfo b
_tiCoreInfo TableInfo ('Postgres 'Citus)
sourceTableInfo,
TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> ExtraTableMetadata ('Postgres 'Citus)
forall (b :: BackendType) field primaryKeyColumn.
TableCoreInfoG b field primaryKeyColumn -> ExtraTableMetadata b
_tciExtraTableMetadata (TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> ExtraTableMetadata ('Postgres 'Citus))
-> TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> ExtraTableMetadata ('Postgres 'Citus)
forall a b. (a -> b) -> a -> b
$ TableInfo ('Postgres 'Citus)
-> TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
forall (b :: BackendType). TableInfo b -> TableCoreInfo b
_tiCoreInfo TableInfo ('Postgres 'Citus)
targetTableInfo
) of
(Distributed {}, ExtraTableMetadata
Local) -> m ()
notSupported
(Distributed {}, ExtraTableMetadata
Reference) -> () -> m ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
(Distributed {}, Distributed {}) -> () -> m ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
(ExtraTableMetadata
_, Distributed {}) -> m ()
notSupported
(ExtraTableMetadata
_, ExtraTableMetadata
_) -> () -> m ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
checkArrayRelationship :: TableInfo ('Postgres 'Citus) -> QualifiedTable -> m ()
checkArrayRelationship TableInfo ('Postgres 'Citus)
sourceTableInfo QualifiedTable
targetTable = do
TableInfo ('Postgres 'Citus)
targetTableInfo <- QualifiedTable -> m (TableInfo ('Postgres 'Citus))
lookupTableInfo QualifiedTable
targetTable
let notSupported :: m ()
notSupported = TableInfo ('Postgres 'Citus)
-> TableInfo ('Postgres 'Citus) -> Text -> m ()
throwNotSupportedError TableInfo ('Postgres 'Citus)
sourceTableInfo TableInfo ('Postgres 'Citus)
targetTableInfo Text
"array"
case ( TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> ExtraTableMetadata ('Postgres 'Citus)
forall (b :: BackendType) field primaryKeyColumn.
TableCoreInfoG b field primaryKeyColumn -> ExtraTableMetadata b
_tciExtraTableMetadata (TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> ExtraTableMetadata ('Postgres 'Citus))
-> TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> ExtraTableMetadata ('Postgres 'Citus)
forall a b. (a -> b) -> a -> b
$ TableInfo ('Postgres 'Citus)
-> TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
forall (b :: BackendType). TableInfo b -> TableCoreInfo b
_tiCoreInfo TableInfo ('Postgres 'Citus)
sourceTableInfo,
TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> ExtraTableMetadata ('Postgres 'Citus)
forall (b :: BackendType) field primaryKeyColumn.
TableCoreInfoG b field primaryKeyColumn -> ExtraTableMetadata b
_tciExtraTableMetadata (TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> ExtraTableMetadata ('Postgres 'Citus))
-> TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> ExtraTableMetadata ('Postgres 'Citus)
forall a b. (a -> b) -> a -> b
$ TableInfo ('Postgres 'Citus)
-> TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
forall (b :: BackendType). TableInfo b -> TableCoreInfo b
_tiCoreInfo TableInfo ('Postgres 'Citus)
targetTableInfo
) of
(Distributed {}, Distributed {}) -> () -> m ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
(Distributed {}, ExtraTableMetadata
_) -> m ()
notSupported
(ExtraTableMetadata
_, Distributed {}) -> m ()
notSupported
(ExtraTableMetadata
_, ExtraTableMetadata
_) -> () -> m ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
showDistributionType :: ExtraTableMetadata -> Text
showDistributionType :: ExtraTableMetadata -> Text
showDistributionType = \case
ExtraTableMetadata
Local -> Text
"local"
Distributed Text
_ -> Text
"distributed"
ExtraTableMetadata
Reference -> Text
"reference"
throwNotSupportedError :: TableInfo ('Postgres 'Citus) -> TableInfo ('Postgres 'Citus) -> Text -> m ()
throwNotSupportedError :: TableInfo ('Postgres 'Citus)
-> TableInfo ('Postgres 'Citus) -> Text -> m ()
throwNotSupportedError TableInfo ('Postgres 'Citus)
sourceTableInfo TableInfo ('Postgres 'Citus)
targetTableInfo Text
t =
let tciSrc :: TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
tciSrc = TableInfo ('Postgres 'Citus)
-> TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
forall (b :: BackendType). TableInfo b -> TableCoreInfo b
_tiCoreInfo TableInfo ('Postgres 'Citus)
sourceTableInfo
tciTgt :: TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
tciTgt = TableInfo ('Postgres 'Citus)
-> TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
forall (b :: BackendType). TableInfo b -> TableCoreInfo b
_tiCoreInfo TableInfo ('Postgres 'Citus)
targetTableInfo
in Code -> Text -> m ()
forall (m :: * -> *) a. QErrM m => Code -> Text -> m a
throw400
Code
NotSupported
( ExtraTableMetadata -> Text
showDistributionType (TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> ExtraTableMetadata ('Postgres 'Citus)
forall (b :: BackendType) field primaryKeyColumn.
TableCoreInfoG b field primaryKeyColumn -> ExtraTableMetadata b
_tciExtraTableMetadata TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
tciSrc)
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
" tables ("
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> QualifiedTable -> Text
forall a. ToTxt a => a -> Text
toTxt (TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> TableName ('Postgres 'Citus)
forall (b :: BackendType) field primaryKeyColumn.
TableCoreInfoG b field primaryKeyColumn -> TableName b
_tciName TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
tciSrc)
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
") cannot have an "
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
t
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
" relationship against a "
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> ExtraTableMetadata -> Text
showDistributionType (TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> ExtraTableMetadata ('Postgres 'Citus)
forall (b :: BackendType) field primaryKeyColumn.
TableCoreInfoG b field primaryKeyColumn -> ExtraTableMetadata b
_tciExtraTableMetadata (TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> ExtraTableMetadata ('Postgres 'Citus))
-> TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> ExtraTableMetadata ('Postgres 'Citus)
forall a b. (a -> b) -> a -> b
$ TableInfo ('Postgres 'Citus)
-> TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
forall (b :: BackendType). TableInfo b -> TableCoreInfo b
_tiCoreInfo TableInfo ('Postgres 'Citus)
targetTableInfo)
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
" table ("
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> QualifiedTable -> Text
forall a. ToTxt a => a -> Text
toTxt (TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
-> TableName ('Postgres 'Citus)
forall (b :: BackendType) field primaryKeyColumn.
TableCoreInfoG b field primaryKeyColumn -> TableName b
_tciName TableCoreInfoG
('Postgres 'Citus)
(FieldInfo ('Postgres 'Citus))
(ColumnInfo ('Postgres 'Citus))
tciTgt)
Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
")"
)
instance PostgresMetadata 'Cockroach where
validateRel :: TableCache ('Postgres 'Cockroach)
-> QualifiedTable
-> Either
(ObjRelDef ('Postgres 'Cockroach))
(ArrRelDef ('Postgres 'Cockroach))
-> m ()
validateRel TableCache ('Postgres 'Cockroach)
_ QualifiedTable
_ Either
(ObjRelDef ('Postgres 'Cockroach))
(ArrRelDef ('Postgres 'Cockroach))
_ = () -> m ()
forall (f :: * -> *) a. Applicative f => a -> f a
pure ()
instance
( Backend ('Postgres pgKind),
PostgresMetadata pgKind,
PG.FetchTableMetadata pgKind,
PG.FetchFunctionMetadata pgKind,
PG.ToMetadataFetchQuery pgKind
) =>
BackendMetadata ('Postgres pgKind)
where
prepareCatalog :: SourceConfig ('Postgres pgKind)
-> ExceptT QErr m RecreateEventTriggers
prepareCatalog = SourceConfig ('Postgres pgKind)
-> ExceptT QErr m RecreateEventTriggers
forall (m :: * -> *) (pgKind :: PostgresKind).
(MonadIO m, MonadBaseControl IO m) =>
SourceConfig ('Postgres pgKind)
-> ExceptT QErr m RecreateEventTriggers
PG.prepareCatalog
buildComputedFieldInfo :: HashSet (TableName ('Postgres pgKind))
-> TableName ('Postgres pgKind)
-> HashSet (Column ('Postgres pgKind))
-> ComputedFieldName
-> ComputedFieldDefinition ('Postgres pgKind)
-> RawFunctionInfo ('Postgres pgKind)
-> Comment
-> m (ComputedFieldInfo ('Postgres pgKind))
buildComputedFieldInfo = HashSet (TableName ('Postgres pgKind))
-> TableName ('Postgres pgKind)
-> HashSet (Column ('Postgres pgKind))
-> ComputedFieldName
-> ComputedFieldDefinition ('Postgres pgKind)
-> RawFunctionInfo ('Postgres pgKind)
-> Comment
-> m (ComputedFieldInfo ('Postgres pgKind))
forall (pgKind :: PostgresKind) (m :: * -> *).
QErrM m =>
HashSet QualifiedTable
-> QualifiedTable
-> HashSet PGCol
-> ComputedFieldName
-> ComputedFieldDefinition
-> PGRawFunctionInfo
-> Comment
-> m (ComputedFieldInfo ('Postgres pgKind))
PG.buildComputedFieldInfo
fetchAndValidateEnumValues :: SourceConfig ('Postgres pgKind)
-> TableName ('Postgres pgKind)
-> Maybe
(PrimaryKey ('Postgres pgKind) (RawColumnInfo ('Postgres pgKind)))
-> [RawColumnInfo ('Postgres pgKind)]
-> m (Either QErr EnumValues)
fetchAndValidateEnumValues = SourceConfig ('Postgres pgKind)
-> TableName ('Postgres pgKind)
-> Maybe
(PrimaryKey ('Postgres pgKind) (RawColumnInfo ('Postgres pgKind)))
-> [RawColumnInfo ('Postgres pgKind)]
-> m (Either QErr EnumValues)
forall (pgKind :: PostgresKind) (m :: * -> *).
(Backend ('Postgres pgKind), MonadIO m, MonadBaseControl IO m) =>
PGSourceConfig
-> QualifiedTable
-> Maybe
(PrimaryKey ('Postgres pgKind) (RawColumnInfo ('Postgres pgKind)))
-> [RawColumnInfo ('Postgres pgKind)]
-> m (Either QErr EnumValues)
PG.fetchAndValidateEnumValues
resolveSourceConfig :: Logger Hasura
-> SourceName
-> SourceConnConfiguration ('Postgres pgKind)
-> BackendSourceKind ('Postgres pgKind)
-> BackendConfig ('Postgres pgKind)
-> Environment
-> Manager
-> m (Either QErr (SourceConfig ('Postgres pgKind)))
resolveSourceConfig = Logger Hasura
-> SourceName
-> SourceConnConfiguration ('Postgres pgKind)
-> BackendSourceKind ('Postgres pgKind)
-> BackendConfig ('Postgres pgKind)
-> Environment
-> Manager
-> m (Either QErr (SourceConfig ('Postgres pgKind)))
forall (m :: * -> *) (pgKind :: PostgresKind) manager.
(MonadIO m, MonadResolveSource m) =>
Logger Hasura
-> SourceName
-> PostgresConnConfiguration
-> BackendSourceKind ('Postgres pgKind)
-> BackendConfig ('Postgres pgKind)
-> Environment
-> manager
-> m (Either QErr (SourceConfig ('Postgres pgKind)))
PG.resolveSourceConfig
resolveDatabaseMetadata :: SourceMetadata ('Postgres pgKind)
-> SourceConfig ('Postgres pgKind)
-> SourceTypeCustomization
-> m (Either QErr (ResolvedSource ('Postgres pgKind)))
resolveDatabaseMetadata = SourceMetadata ('Postgres pgKind)
-> SourceConfig ('Postgres pgKind)
-> SourceTypeCustomization
-> m (Either QErr (ResolvedSource ('Postgres pgKind)))
forall (pgKind :: PostgresKind) (m :: * -> *).
(Backend ('Postgres pgKind), ToMetadataFetchQuery pgKind,
FetchFunctionMetadata pgKind, FetchTableMetadata pgKind, MonadIO m,
MonadBaseControl IO m) =>
SourceMetadata ('Postgres pgKind)
-> SourceConfig ('Postgres pgKind)
-> SourceTypeCustomization
-> m (Either QErr (ResolvedSource ('Postgres pgKind)))
PG.resolveDatabaseMetadata
parseBoolExpOperations :: ValueParser ('Postgres pgKind) m v
-> TableName ('Postgres pgKind)
-> FieldInfoMap (FieldInfo ('Postgres pgKind))
-> ColumnReference ('Postgres pgKind)
-> Value
-> m [OpExpG ('Postgres pgKind) v]
parseBoolExpOperations = ValueParser ('Postgres pgKind) m v
-> TableName ('Postgres pgKind)
-> FieldInfoMap (FieldInfo ('Postgres pgKind))
-> ColumnReference ('Postgres pgKind)
-> Value
-> m [OpExpG ('Postgres pgKind) v]
forall (pgKind :: PostgresKind) (m :: * -> *) v.
(Backend ('Postgres pgKind), MonadError QErr m,
TableCoreInfoRM ('Postgres pgKind) m) =>
ValueParser ('Postgres pgKind) m v
-> QualifiedTable
-> FieldInfoMap (FieldInfo ('Postgres pgKind))
-> ColumnReference ('Postgres pgKind)
-> Value
-> m [OpExpG ('Postgres pgKind) v]
PG.parseBoolExpOperations
buildFunctionInfo :: SourceName
-> FunctionName ('Postgres pgKind)
-> SystemDefined
-> FunctionConfig
-> FunctionPermissionsMap
-> RawFunctionInfo ('Postgres pgKind)
-> Maybe Text
-> NamingCase
-> m (FunctionInfo ('Postgres pgKind), SchemaDependency)
buildFunctionInfo = SourceName
-> FunctionName ('Postgres pgKind)
-> SystemDefined
-> FunctionConfig
-> FunctionPermissionsMap
-> RawFunctionInfo ('Postgres pgKind)
-> Maybe Text
-> NamingCase
-> m (FunctionInfo ('Postgres pgKind), SchemaDependency)
forall (pgKind :: PostgresKind) (m :: * -> *).
(Backend ('Postgres pgKind), QErrM m) =>
SourceName
-> QualifiedFunction
-> SystemDefined
-> FunctionConfig
-> FunctionPermissionsMap
-> RawFunctionInfo ('Postgres pgKind)
-> Maybe Text
-> NamingCase
-> m (FunctionInfo ('Postgres pgKind), SchemaDependency)
PG.buildFunctionInfo
updateColumnInEventTrigger :: TableName ('Postgres pgKind)
-> Column ('Postgres pgKind)
-> Column ('Postgres pgKind)
-> TableName ('Postgres pgKind)
-> EventTriggerConf ('Postgres pgKind)
-> EventTriggerConf ('Postgres pgKind)
updateColumnInEventTrigger = TableName ('Postgres pgKind)
-> Column ('Postgres pgKind)
-> Column ('Postgres pgKind)
-> TableName ('Postgres pgKind)
-> EventTriggerConf ('Postgres pgKind)
-> EventTriggerConf ('Postgres pgKind)
forall (pgKind :: PostgresKind).
QualifiedTable
-> PGCol
-> PGCol
-> QualifiedTable
-> EventTriggerConf ('Postgres pgKind)
-> EventTriggerConf ('Postgres pgKind)
PG.updateColumnInEventTrigger
parseCollectableType :: CollectableType (ColumnType ('Postgres pgKind))
-> Value -> m (PartialSQLExp ('Postgres pgKind))
parseCollectableType = CollectableType (ColumnType ('Postgres pgKind))
-> Value -> m (PartialSQLExp ('Postgres pgKind))
forall (pgKind :: PostgresKind) (m :: * -> *).
(Backend ('Postgres pgKind), MonadError QErr m) =>
CollectableType (ColumnType ('Postgres pgKind))
-> Value -> m (PartialSQLExp ('Postgres pgKind))
PG.parseCollectableType
postDropSourceHook :: SourceConfig ('Postgres pgKind)
-> TableEventTriggers ('Postgres pgKind) -> m ()
postDropSourceHook = SourceConfig ('Postgres pgKind)
-> TableEventTriggers ('Postgres pgKind) -> m ()
forall (m :: * -> *) (pgKind :: PostgresKind).
(MonadIO m, MonadError QErr m, MonadBaseControl IO m) =>
SourceConfig ('Postgres pgKind)
-> TableEventTriggers ('Postgres pgKind) -> m ()
PG.postDropSourceHook
validateRelationship :: TableCache ('Postgres pgKind)
-> TableName ('Postgres pgKind)
-> Either
(ObjRelDef ('Postgres pgKind)) (ArrRelDef ('Postgres pgKind))
-> m ()
validateRelationship = forall (m :: * -> *).
(PostgresMetadata pgKind, MonadError QErr m) =>
TableCache ('Postgres pgKind)
-> QualifiedTable
-> Either
(ObjRelDef ('Postgres pgKind)) (ArrRelDef ('Postgres pgKind))
-> m ()
forall (pgKind :: PostgresKind) (m :: * -> *).
(PostgresMetadata pgKind, MonadError QErr m) =>
TableCache ('Postgres pgKind)
-> QualifiedTable
-> Either
(ObjRelDef ('Postgres pgKind)) (ArrRelDef ('Postgres pgKind))
-> m ()
validateRel @pgKind
buildComputedFieldBooleanExp :: BoolExpResolver ('Postgres pgKind) m v
-> BoolExpRHSParser ('Postgres pgKind) m v
-> TableName ('Postgres pgKind)
-> FieldInfoMap (FieldInfo ('Postgres pgKind))
-> ComputedFieldInfo ('Postgres pgKind)
-> Value
-> m (AnnComputedFieldBoolExp ('Postgres pgKind) v)
buildComputedFieldBooleanExp = BoolExpResolver ('Postgres pgKind) m v
-> BoolExpRHSParser ('Postgres pgKind) m v
-> TableName ('Postgres pgKind)
-> FieldInfoMap (FieldInfo ('Postgres pgKind))
-> ComputedFieldInfo ('Postgres pgKind)
-> Value
-> m (AnnComputedFieldBoolExp ('Postgres pgKind) v)
forall (pgKind :: PostgresKind) (m :: * -> *) v.
(MonadError QErr m, Backend ('Postgres pgKind),
TableCoreInfoRM ('Postgres pgKind) m) =>
BoolExpResolver ('Postgres pgKind) m v
-> BoolExpRHSParser ('Postgres pgKind) m v
-> TableName ('Postgres pgKind)
-> FieldInfoMap (FieldInfo ('Postgres pgKind))
-> ComputedFieldInfo ('Postgres pgKind)
-> Value
-> m (AnnComputedFieldBoolExp ('Postgres pgKind) v)
PG.buildComputedFieldBooleanExp