{-# OPTIONS_GHC -fno-warn-orphans #-}

module Hasura.Backends.BigQuery.Instances.Metadata () where

import Hasura.Backends.BigQuery.DDL qualified as BigQuery
import Hasura.Base.Error (Code (UnexpectedPayload), throw400)
import Hasura.Prelude
import Hasura.RQL.Types.EventTrigger (RecreateEventTriggers (RETDoNothing))
import Hasura.RQL.Types.Metadata.Backend
import Hasura.SQL.Backend

instance BackendMetadata 'BigQuery where
  prepareCatalog :: SourceConfig 'BigQuery -> ExceptT QErr m RecreateEventTriggers
prepareCatalog SourceConfig 'BigQuery
_ = RecreateEventTriggers -> ExceptT QErr m RecreateEventTriggers
forall (f :: * -> *) a. Applicative f => a -> f a
pure RecreateEventTriggers
RETDoNothing
  buildComputedFieldInfo :: HashSet (TableName 'BigQuery)
-> TableName 'BigQuery
-> HashSet (Column 'BigQuery)
-> ComputedFieldName
-> ComputedFieldDefinition 'BigQuery
-> RawFunctionInfo 'BigQuery
-> Comment
-> m (ComputedFieldInfo 'BigQuery)
buildComputedFieldInfo = HashSet (TableName 'BigQuery)
-> TableName 'BigQuery
-> HashSet (Column 'BigQuery)
-> ComputedFieldName
-> ComputedFieldDefinition 'BigQuery
-> RawFunctionInfo 'BigQuery
-> Comment
-> m (ComputedFieldInfo 'BigQuery)
forall (m :: * -> *).
MonadError QErr m =>
HashSet TableName
-> TableName
-> HashSet ColumnName
-> ComputedFieldName
-> ComputedFieldDefinition
-> RestRoutine
-> Comment
-> m (ComputedFieldInfo 'BigQuery)
BigQuery.buildComputedFieldInfo
  fetchAndValidateEnumValues :: SourceConfig 'BigQuery
-> TableName 'BigQuery
-> Maybe (PrimaryKey 'BigQuery (RawColumnInfo 'BigQuery))
-> [RawColumnInfo 'BigQuery]
-> m (Either QErr EnumValues)
fetchAndValidateEnumValues = SourceConfig 'BigQuery
-> TableName 'BigQuery
-> Maybe (PrimaryKey 'BigQuery (RawColumnInfo 'BigQuery))
-> [RawColumnInfo 'BigQuery]
-> m (Either QErr EnumValues)
forall (m :: * -> *).
Monad m =>
SourceConfig 'BigQuery
-> TableName 'BigQuery
-> Maybe (PrimaryKey 'BigQuery (RawColumnInfo 'BigQuery))
-> [RawColumnInfo 'BigQuery]
-> m (Either QErr EnumValues)
BigQuery.fetchAndValidateEnumValues
  resolveSourceConfig :: Logger Hasura
-> SourceName
-> SourceConnConfiguration 'BigQuery
-> BackendSourceKind 'BigQuery
-> BackendConfig 'BigQuery
-> Environment
-> Manager
-> m (Either QErr (SourceConfig 'BigQuery))
resolveSourceConfig = Logger Hasura
-> SourceName
-> SourceConnConfiguration 'BigQuery
-> BackendSourceKind 'BigQuery
-> BackendConfig 'BigQuery
-> Environment
-> Manager
-> m (Either QErr (SourceConfig 'BigQuery))
forall (m :: * -> *) manager.
MonadIO m =>
Logger Hasura
-> SourceName
-> BigQueryConnSourceConfig
-> BackendSourceKind 'BigQuery
-> BackendConfig 'BigQuery
-> Environment
-> manager
-> m (Either QErr BigQuerySourceConfig)
BigQuery.resolveSourceConfig
  resolveDatabaseMetadata :: SourceMetadata 'BigQuery
-> SourceConfig 'BigQuery
-> SourceTypeCustomization
-> m (Either QErr (ResolvedSource 'BigQuery))
resolveDatabaseMetadata SourceMetadata 'BigQuery
_ = SourceConfig 'BigQuery
-> SourceTypeCustomization
-> m (Either QErr (ResolvedSource 'BigQuery))
forall (m :: * -> *).
MonadIO m =>
BigQuerySourceConfig
-> SourceTypeCustomization
-> m (Either QErr (ResolvedSource 'BigQuery))
BigQuery.resolveSource
  parseBoolExpOperations :: ValueParser 'BigQuery m v
-> TableName 'BigQuery
-> FieldInfoMap (FieldInfo 'BigQuery)
-> ColumnReference 'BigQuery
-> Value
-> m [OpExpG 'BigQuery v]
parseBoolExpOperations = ValueParser 'BigQuery m v
-> TableName 'BigQuery
-> FieldInfoMap (FieldInfo 'BigQuery)
-> ColumnReference 'BigQuery
-> Value
-> m [OpExpG 'BigQuery v]
forall (m :: * -> *) v.
MonadError QErr m =>
ValueParser 'BigQuery m v
-> TableName
-> FieldInfoMap (FieldInfo 'BigQuery)
-> ColumnReference 'BigQuery
-> Value
-> m [OpExpG 'BigQuery v]
BigQuery.parseBoolExpOperations
  buildFunctionInfo :: SourceName
-> FunctionName 'BigQuery
-> SystemDefined
-> FunctionConfig
-> FunctionPermissionsMap
-> RawFunctionInfo 'BigQuery
-> Maybe Text
-> NamingCase
-> m (FunctionInfo 'BigQuery, SchemaDependency)
buildFunctionInfo = SourceName
-> FunctionName 'BigQuery
-> SystemDefined
-> FunctionConfig
-> FunctionPermissionsMap
-> RawFunctionInfo 'BigQuery
-> Maybe Text
-> NamingCase
-> m (FunctionInfo 'BigQuery, SchemaDependency)
forall (m :: * -> *).
MonadError QErr m =>
SourceName
-> FunctionName 'BigQuery
-> SystemDefined
-> FunctionConfig
-> FunctionPermissionsMap
-> RawFunctionInfo 'BigQuery
-> Maybe Text
-> NamingCase
-> m (FunctionInfo 'BigQuery, SchemaDependency)
BigQuery.buildFunctionInfo
  updateColumnInEventTrigger :: TableName 'BigQuery
-> Column 'BigQuery
-> Column 'BigQuery
-> TableName 'BigQuery
-> EventTriggerConf 'BigQuery
-> EventTriggerConf 'BigQuery
updateColumnInEventTrigger = TableName 'BigQuery
-> Column 'BigQuery
-> Column 'BigQuery
-> TableName 'BigQuery
-> EventTriggerConf 'BigQuery
-> EventTriggerConf 'BigQuery
BigQuery.updateColumnInEventTrigger
  parseCollectableType :: CollectableType (ColumnType 'BigQuery)
-> Value -> m (PartialSQLExp 'BigQuery)
parseCollectableType = CollectableType (ColumnType 'BigQuery)
-> Value -> m (PartialSQLExp 'BigQuery)
forall (m :: * -> *).
MonadError QErr m =>
CollectableType (ColumnType 'BigQuery)
-> Value -> m (PartialSQLExp 'BigQuery)
BigQuery.parseCollectableType
  postDropSourceHook :: SourceConfig 'BigQuery -> TableEventTriggers 'BigQuery -> m ()
postDropSourceHook = SourceConfig 'BigQuery -> TableEventTriggers 'BigQuery -> m ()
forall (m :: * -> *).
MonadIO m =>
BigQuerySourceConfig -> TableEventTriggers 'BigQuery -> m ()
BigQuery.postDropSourceHook
  buildComputedFieldBooleanExp :: BoolExpResolver 'BigQuery m v
-> BoolExpRHSParser 'BigQuery m v
-> TableName 'BigQuery
-> FieldInfoMap (FieldInfo 'BigQuery)
-> ComputedFieldInfo 'BigQuery
-> Value
-> m (AnnComputedFieldBoolExp 'BigQuery v)
buildComputedFieldBooleanExp BoolExpResolver 'BigQuery m v
_ BoolExpRHSParser 'BigQuery m v
_ TableName 'BigQuery
_ FieldInfoMap (FieldInfo 'BigQuery)
_ ComputedFieldInfo 'BigQuery
_ Value
_ =
    Code -> Text -> m (AnnComputedFieldBoolExp 'BigQuery v)
forall (m :: * -> *) a. QErrM m => Code -> Text -> m a
throw400 Code
UnexpectedPayload Text
"Computed fields are not supported in boolean expressions"