{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE CPP #-}
module Database.Beam.Migrate.SQL.SQL92 where
import Database.Beam.Backend.SQL.SQL92
import Data.Aeson (Value)
import Data.Hashable
import Data.Text (Text)
import Data.Typeable
#if ! MIN_VERSION_base(4,11,0)
import Data.Semigroup
#endif
type Sql92SaneDdlCommandSyntax cmd =
( Sql92SaneDdlCommandSyntaxMigrateOnly cmd
, Sql92ColumnSchemaExpressionSyntax (Sql92DdlCommandColumnSchemaSyntax cmd) ~
Sql92ExpressionSyntax cmd )
type Sql92SaneDdlCommandSyntaxMigrateOnly cmd =
( IsSql92DdlCommandSyntax cmd
, Sql92SerializableDataTypeSyntax (Sql92DdlCommandDataTypeSyntax cmd)
, Sql92SerializableConstraintDefinitionSyntax (Sql92DdlCommandConstraintDefinitionSyntax cmd)
, Typeable (Sql92DdlCommandColumnSchemaSyntax cmd)
, Sql92AlterTableColumnSchemaSyntax
(Sql92AlterTableAlterTableActionSyntax (Sql92DdlCommandAlterTableSyntax cmd)) ~
Sql92CreateTableColumnSchemaSyntax (Sql92DdlCommandCreateTableSyntax cmd)
)
type Sql92DdlCommandDataTypeSyntax syntax =
Sql92ColumnSchemaColumnTypeSyntax (Sql92DdlCommandColumnSchemaSyntax syntax)
type Sql92DdlCommandColumnSchemaSyntax syntax = Sql92CreateTableColumnSchemaSyntax (Sql92DdlCommandCreateTableSyntax syntax)
type Sql92DdlCommandConstraintDefinitionSyntax syntax =
Sql92ColumnSchemaColumnConstraintDefinitionSyntax (Sql92DdlCommandColumnSchemaSyntax syntax)
type Sql92DdlColumnSchemaConstraintSyntax syntax =
Sql92ColumnConstraintDefinitionConstraintSyntax (Sql92ColumnSchemaColumnConstraintDefinitionSyntax syntax)
type Sql92DdlCommandColumnConstraintSyntax syntax =
Sql92DdlColumnSchemaConstraintSyntax (Sql92DdlCommandColumnSchemaSyntax syntax)
type Sql92DdlCommandMatchTypeSyntax syntax =
Sql92ColumnConstraintMatchTypeSyntax (Sql92DdlCommandColumnConstraintSyntax syntax)
type Sql92DdlCommandReferentialActionSyntax syntax =
Sql92ColumnConstraintReferentialActionSyntax (Sql92DdlCommandColumnConstraintSyntax syntax)
type Sql92DdlCommandConstraintAttributesSyntax syntax =
Sql92ColumnConstraintDefinitionAttributesSyntax (Sql92DdlCommandConstraintDefinitionSyntax syntax)
type Sql92DdlCommandAlterTableActionSyntax syntax =
Sql92AlterTableAlterTableActionSyntax (Sql92DdlCommandAlterTableSyntax syntax)
class Sql92DisplaySyntax syntax where
displaySyntax :: syntax -> String
class ( IsSql92CreateTableSyntax (Sql92DdlCommandCreateTableSyntax syntax)
, IsSql92DropTableSyntax (Sql92DdlCommandDropTableSyntax syntax)
, IsSql92AlterTableSyntax (Sql92DdlCommandAlterTableSyntax syntax)) =>
IsSql92DdlCommandSyntax syntax where
type Sql92DdlCommandCreateTableSyntax syntax :: *
type Sql92DdlCommandAlterTableSyntax syntax :: *
type Sql92DdlCommandDropTableSyntax syntax :: *
createTableCmd :: Sql92DdlCommandCreateTableSyntax syntax -> syntax
dropTableCmd :: Sql92DdlCommandDropTableSyntax syntax -> syntax
alterTableCmd :: Sql92DdlCommandAlterTableSyntax syntax -> syntax
class ( IsSql92TableConstraintSyntax (Sql92CreateTableTableConstraintSyntax syntax)
, IsSql92ColumnSchemaSyntax (Sql92CreateTableColumnSchemaSyntax syntax) ) =>
IsSql92CreateTableSyntax syntax where
type Sql92CreateTableColumnSchemaSyntax syntax :: *
type Sql92CreateTableTableConstraintSyntax syntax :: *
type Sql92CreateTableOptionsSyntax syntax :: *
createTableSyntax :: Maybe (Sql92CreateTableOptionsSyntax syntax)
-> Text
-> [ (Text, Sql92CreateTableColumnSchemaSyntax syntax) ]
-> [ Sql92CreateTableTableConstraintSyntax syntax ]
-> syntax
class IsSql92DropTableSyntax syntax where
dropTableSyntax :: Text -> syntax
class IsSql92AlterTableActionSyntax (Sql92AlterTableAlterTableActionSyntax syntax) =>
IsSql92AlterTableSyntax syntax where
type Sql92AlterTableAlterTableActionSyntax syntax :: *
alterTableSyntax :: Text -> Sql92AlterTableAlterTableActionSyntax syntax
-> syntax
class ( IsSql92ColumnSchemaSyntax (Sql92AlterTableColumnSchemaSyntax syntax)
, IsSql92AlterColumnActionSyntax (Sql92AlterTableAlterColumnActionSyntax syntax) ) =>
IsSql92AlterTableActionSyntax syntax where
type Sql92AlterTableAlterColumnActionSyntax syntax :: *
type Sql92AlterTableColumnSchemaSyntax syntax :: *
alterColumnSyntax :: Text -> Sql92AlterTableAlterColumnActionSyntax syntax
-> syntax
addColumnSyntax :: Text -> Sql92AlterTableColumnSchemaSyntax syntax -> syntax
dropColumnSyntax :: Text -> syntax
renameTableToSyntax :: Text -> syntax
renameColumnToSyntax :: Text -> Text -> syntax
class IsSql92AlterColumnActionSyntax syntax where
setNotNullSyntax, setNullSyntax :: syntax
class ( IsSql92ColumnConstraintDefinitionSyntax (Sql92ColumnSchemaColumnConstraintDefinitionSyntax columnSchema)
, IsSql92DataTypeSyntax (Sql92ColumnSchemaColumnTypeSyntax columnSchema)
, Typeable (Sql92ColumnSchemaColumnTypeSyntax columnSchema)
, Sql92DisplaySyntax (Sql92ColumnSchemaColumnTypeSyntax columnSchema)
, Hashable (Sql92ColumnSchemaColumnTypeSyntax columnSchema)
, Eq (Sql92ColumnSchemaColumnTypeSyntax columnSchema)
, Sql92DisplaySyntax (Sql92ColumnSchemaColumnConstraintDefinitionSyntax columnSchema)
, Eq (Sql92ColumnSchemaColumnConstraintDefinitionSyntax columnSchema)
, Hashable (Sql92ColumnSchemaColumnConstraintDefinitionSyntax columnSchema)
, IsSql92ExpressionSyntax (Sql92ColumnSchemaExpressionSyntax columnSchema)
, Typeable columnSchema, Sql92DisplaySyntax columnSchema, Eq columnSchema, Hashable columnSchema ) =>
IsSql92ColumnSchemaSyntax columnSchema where
type Sql92ColumnSchemaColumnTypeSyntax columnSchema :: *
type Sql92ColumnSchemaExpressionSyntax columnSchema :: *
type Sql92ColumnSchemaColumnConstraintDefinitionSyntax columnSchema :: *
columnSchemaSyntax :: Sql92ColumnSchemaColumnTypeSyntax columnSchema
-> Maybe (Sql92ColumnSchemaExpressionSyntax columnSchema)
-> [ Sql92ColumnSchemaColumnConstraintDefinitionSyntax columnSchema ]
-> Maybe Text
-> columnSchema
class Typeable constraint => IsSql92TableConstraintSyntax constraint where
primaryKeyConstraintSyntax :: [ Text ] -> constraint
class Typeable match => IsSql92MatchTypeSyntax match where
fullMatchSyntax :: match
partialMatchSyntax :: match
class Typeable refAction => IsSql92ReferentialActionSyntax refAction where
referentialActionCascadeSyntax :: refAction
referentialActionSetNullSyntax :: refAction
referentialActionSetDefaultSyntax :: refAction
referentialActionNoActionSyntax :: refAction
class ( IsSql92ColumnConstraintSyntax (Sql92ColumnConstraintDefinitionConstraintSyntax constraint)
, IsSql92ConstraintAttributesSyntax (Sql92ColumnConstraintDefinitionAttributesSyntax constraint)
, Typeable constraint ) =>
IsSql92ColumnConstraintDefinitionSyntax constraint where
type Sql92ColumnConstraintDefinitionConstraintSyntax constraint :: *
type Sql92ColumnConstraintDefinitionAttributesSyntax constraint :: *
constraintDefinitionSyntax :: Maybe Text -> Sql92ColumnConstraintDefinitionConstraintSyntax constraint
-> Maybe (Sql92ColumnConstraintDefinitionAttributesSyntax constraint)
-> constraint
class (Semigroup attrs, Monoid attrs, Typeable attrs) => IsSql92ConstraintAttributesSyntax attrs where
initiallyDeferredAttributeSyntax :: attrs
initiallyImmediateAttributeSyntax :: attrs
notDeferrableAttributeSyntax :: attrs
deferrableAttributeSyntax :: attrs
class ( IsSql92MatchTypeSyntax (Sql92ColumnConstraintMatchTypeSyntax constraint)
, IsSql92ReferentialActionSyntax (Sql92ColumnConstraintReferentialActionSyntax constraint)
, Typeable (Sql92ColumnConstraintExpressionSyntax constraint)
, Typeable constraint ) =>
IsSql92ColumnConstraintSyntax constraint where
type Sql92ColumnConstraintMatchTypeSyntax constraint :: *
type Sql92ColumnConstraintReferentialActionSyntax constraint :: *
type Sql92ColumnConstraintExpressionSyntax constraint :: *
notNullConstraintSyntax :: constraint
uniqueColumnConstraintSyntax :: constraint
primaryKeyColumnConstraintSyntax :: constraint
checkColumnConstraintSyntax :: Sql92ColumnConstraintExpressionSyntax constraint -> constraint
referencesConstraintSyntax :: Text -> [ Text ]
-> Maybe (Sql92ColumnConstraintMatchTypeSyntax constraint)
-> Maybe (Sql92ColumnConstraintReferentialActionSyntax constraint)
-> Maybe (Sql92ColumnConstraintReferentialActionSyntax constraint)
-> constraint
class Sql92SerializableDataTypeSyntax dataType where
serializeDataType :: dataType -> Value
class Sql92SerializableConstraintDefinitionSyntax constraint where
serializeConstraint :: constraint -> Value