Safe Haskell | None |
---|---|
Language | Haskell2010 |
Database.Groundhog.Generic.Migration
Description
This helper module is intended for use by the backend creators
Synopsis
- data Column = Column {
- colName :: String
- colNull :: Bool
- colType :: DbTypePrimitive
- colDefault :: Maybe String
- data Reference = Reference {}
- type QualifiedName = (Maybe String, String)
- data TableInfo = TableInfo {
- tableColumns :: [Column]
- tableUniques :: [UniqueDefInfo]
- tableReferences :: [(Maybe String, Reference)]
- type UniqueDefInfo = UniqueDef' String (Either String String)
- data AlterColumn
- data AlterTable
- data AlterDB
- = AddTable String
- | AlterTable QualifiedName String TableInfo TableInfo [AlterTable]
- | DropTrigger QualifiedName QualifiedName
- | AddTriggerOnDelete QualifiedName QualifiedName String
- | AddTriggerOnUpdate QualifiedName QualifiedName (Maybe String) String
- | CreateOrReplaceFunction String
- | DropFunction QualifiedName
- | CreateSchema String Bool
- data MigrationPack conn = MigrationPack {
- compareTypes :: DbTypePrimitive -> DbTypePrimitive -> Bool
- compareRefs :: (Maybe String, Reference) -> (Maybe String, Reference) -> Bool
- compareUniqs :: UniqueDefInfo -> UniqueDefInfo -> Bool
- compareDefaults :: String -> String -> Bool
- migTriggerOnDelete :: QualifiedName -> [(String, String)] -> Action conn (Bool, [AlterDB])
- migTriggerOnUpdate :: QualifiedName -> [(String, String)] -> Action conn [(Bool, [AlterDB])]
- migConstr :: EntityDef -> ConstructorDef -> Action conn (Bool, SingleMigration)
- escape :: String -> String
- autoincrementedKeyTypeName :: String
- mainTableId :: String
- defaultPriority :: Int
- addUniquesReferences :: [UniqueDefInfo] -> [Reference] -> ([String], [AlterTable])
- showSqlType :: DbTypePrimitive -> String
- showColumn :: Column -> String
- showAlterDb :: AlterDB -> SingleMigration
- defaultReferenceOnDelete :: ReferenceActionType
- defaultReferenceOnUpdate :: ReferenceActionType
- class PersistBackendConn conn => SchemaAnalyzer conn where
- schemaExists :: (PersistBackend m, Conn m ~ conn) => String -> m Bool
- getCurrentSchema :: (PersistBackend m, Conn m ~ conn) => m (Maybe String)
- listTables :: (PersistBackend m, Conn m ~ conn) => Maybe String -> m [String]
- listTableTriggers :: (PersistBackend m, Conn m ~ conn) => QualifiedName -> m [String]
- analyzeTable :: (PersistBackend m, Conn m ~ conn) => QualifiedName -> m (Maybe TableInfo)
- analyzeTrigger :: (PersistBackend m, Conn m ~ conn) => QualifiedName -> m (Maybe String)
- analyzeFunction :: (PersistBackend m, Conn m ~ conn) => QualifiedName -> m (Maybe (Maybe [DbTypePrimitive], Maybe DbTypePrimitive, String))
- getMigrationPack :: (PersistBackend m, Conn m ~ conn) => m (MigrationPack conn)
- migrateRecursively :: (PersistBackend m, PersistEntity v) => (String -> m SingleMigration) -> (EntityDef -> m SingleMigration) -> (DbType -> m SingleMigration) -> v -> Migration m
- migrateSchema :: SchemaAnalyzer conn => MigrationPack conn -> String -> Action conn SingleMigration
- migrateEntity :: (SchemaAnalyzer conn, PersistBackendConn conn) => MigrationPack conn -> EntityDef -> Action conn SingleMigration
- migrateList :: (SchemaAnalyzer conn, PersistBackendConn conn) => MigrationPack conn -> DbType -> Action conn SingleMigration
- getAlters :: MigrationPack m -> TableInfo -> TableInfo -> [AlterTable]
- defaultMigConstr :: (SchemaAnalyzer conn, PersistBackendConn conn) => MigrationPack conn -> EntityDef -> ConstructorDef -> Action conn (Bool, SingleMigration)
- showReferenceAction :: ReferenceActionType -> String
- readReferenceAction :: String -> Maybe ReferenceActionType
Documentation
Constructors
Column | |
Fields
|
Constructors
Reference | |
Fields
|
type QualifiedName = (Maybe String, String) Source #
Schema-qualified name of a table of another database object
Constructors
TableInfo | |
Fields
|
type UniqueDefInfo = UniqueDef' String (Either String String) Source #
Either column name or expression
data AlterColumn Source #
Constructors
Type DbTypePrimitive | |
IsNull | |
NotNull | |
Default String | |
NoDefault | |
UpdateValue String |
Instances
Show AlterColumn Source # | |
Defined in Database.Groundhog.Generic.Migration Methods showsPrec :: Int -> AlterColumn -> ShowS # show :: AlterColumn -> String # showList :: [AlterColumn] -> ShowS # |
data AlterTable Source #
Constructors
AddUnique UniqueDefInfo | |
DropConstraint String | |
DropIndex String | |
AddReference Reference | |
DropReference String | |
DropColumn String | |
AddColumn Column | |
AlterColumn Column [AlterColumn] |
Instances
Show AlterTable Source # | |
Defined in Database.Groundhog.Generic.Migration Methods showsPrec :: Int -> AlterTable -> ShowS # show :: AlterTable -> String # showList :: [AlterTable] -> ShowS # |
Constructors
AddTable String | |
AlterTable QualifiedName String TableInfo TableInfo [AlterTable] | Qualified table name, create statement, structure of table from DB, structure of table from datatype, alters |
DropTrigger QualifiedName QualifiedName | Qualified trigger name, qualified table name |
AddTriggerOnDelete QualifiedName QualifiedName String | Qualified trigger name, qualified table name, body |
AddTriggerOnUpdate QualifiedName QualifiedName (Maybe String) String | Qualified trigger name, qualified table name, field name, body |
CreateOrReplaceFunction String | Statement which creates the function |
DropFunction QualifiedName | Qualified function name |
CreateSchema String Bool | Schema name, if not exists |
data MigrationPack conn Source #
Constructors
class PersistBackendConn conn => SchemaAnalyzer conn where Source #
Methods
Arguments
:: (PersistBackend m, Conn m ~ conn) | |
=> String | Schema name |
-> m Bool |
getCurrentSchema :: (PersistBackend m, Conn m ~ conn) => m (Maybe String) Source #
Arguments
:: (PersistBackend m, Conn m ~ conn) | |
=> Maybe String | Schema name |
-> m [String] |
Arguments
:: (PersistBackend m, Conn m ~ conn) | |
=> QualifiedName | Qualified table name |
-> m [String] |
Arguments
:: (PersistBackend m, Conn m ~ conn) | |
=> QualifiedName | Qualified table name |
-> m (Maybe TableInfo) |
Arguments
:: (PersistBackend m, Conn m ~ conn) | |
=> QualifiedName | Qualified trigger name |
-> m (Maybe String) |
Arguments
:: (PersistBackend m, Conn m ~ conn) | |
=> QualifiedName | Qualified function name |
-> m (Maybe (Maybe [DbTypePrimitive], Maybe DbTypePrimitive, String)) | Argument types, return type, and body |
getMigrationPack :: (PersistBackend m, Conn m ~ conn) => m (MigrationPack conn) Source #
Arguments
:: (PersistBackend m, PersistEntity v) | |
=> (String -> m SingleMigration) | migrate schema |
-> (EntityDef -> m SingleMigration) | migrate entity |
-> (DbType -> m SingleMigration) | migrate list |
-> v | initial entity |
-> Migration m |
Create migration for a given entity and all entities it depends on. The stateful Map is used to avoid duplicate migrations when an entity type occurs several times in a datatype
migrateSchema :: SchemaAnalyzer conn => MigrationPack conn -> String -> Action conn SingleMigration Source #
migrateEntity :: (SchemaAnalyzer conn, PersistBackendConn conn) => MigrationPack conn -> EntityDef -> Action conn SingleMigration Source #
migrateList :: (SchemaAnalyzer conn, PersistBackendConn conn) => MigrationPack conn -> DbType -> Action conn SingleMigration Source #
Arguments
:: MigrationPack m | |
-> TableInfo | From database |
-> TableInfo | From datatype |
-> [AlterTable] |
defaultMigConstr :: (SchemaAnalyzer conn, PersistBackendConn conn) => MigrationPack conn -> EntityDef -> ConstructorDef -> Action conn (Bool, SingleMigration) Source #