| Safe Haskell | None |
|---|---|
| Language | Haskell98 |
Database.Groundhog.Generic.Migration
Description
This helper module is intended for use by the backend creators
- 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 m = 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)] -> m (Bool, [AlterDB])
- migTriggerOnUpdate :: QualifiedName -> [(String, String)] -> m [(Bool, [AlterDB])]
- migConstr :: MigrationPack m -> EntityDef -> ConstructorDef -> m (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 (Applicative m, Monad m) => SchemaAnalyzer m where
- schemaExists :: String -> m Bool
- getCurrentSchema :: m (Maybe String)
- listTables :: Maybe String -> m [String]
- listTableTriggers :: QualifiedName -> m [String]
- analyzeTable :: QualifiedName -> m (Maybe TableInfo)
- analyzeTrigger :: QualifiedName -> m (Maybe String)
- analyzeFunction :: QualifiedName -> m (Maybe (Maybe [DbTypePrimitive], Maybe DbTypePrimitive, String))
- getMigrationPack :: m (MigrationPack m)
- migrateRecursively :: (PersistBackend m, PersistEntity v) => (String -> m SingleMigration) -> (EntityDef -> m SingleMigration) -> (DbType -> m SingleMigration) -> v -> Migration m
- migrateSchema :: SchemaAnalyzer m => MigrationPack m -> String -> m SingleMigration
- migrateEntity :: (SchemaAnalyzer m, PersistBackend m) => MigrationPack m -> EntityDef -> m SingleMigration
- migrateList :: (SchemaAnalyzer m, PersistBackend m) => MigrationPack m -> DbType -> m SingleMigration
- getAlters :: MigrationPack m -> TableInfo -> TableInfo -> [AlterTable]
- defaultMigConstr :: (SchemaAnalyzer m, PersistBackend m) => MigrationPack m -> EntityDef -> ConstructorDef -> m (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
data AlterTable Source
Constructors
| AddUnique UniqueDefInfo | |
| DropConstraint String | |
| DropIndex String | |
| AddReference Reference | |
| DropReference String | |
| DropColumn String | |
| AddColumn Column | |
| AlterColumn Column [AlterColumn] |
Instances
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 m Source
Constructors
class (Applicative m, Monad m) => SchemaAnalyzer m where Source
Methods
getCurrentSchema :: m (Maybe String) Source
Arguments
| :: QualifiedName | Qualified table name |
| -> m [String] |
Arguments
| :: QualifiedName | Qualified table name |
| -> m (Maybe TableInfo) |
Arguments
| :: QualifiedName | Qualified trigger name |
| -> m (Maybe String) |
Arguments
| :: QualifiedName | Qualified function name |
| -> m (Maybe (Maybe [DbTypePrimitive], Maybe DbTypePrimitive, String)) | Argument types, return type, and body |
getMigrationPack :: m (MigrationPack m) 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 m => MigrationPack m -> String -> m SingleMigration Source
migrateEntity :: (SchemaAnalyzer m, PersistBackend m) => MigrationPack m -> EntityDef -> m SingleMigration Source
migrateList :: (SchemaAnalyzer m, PersistBackend m) => MigrationPack m -> DbType -> m SingleMigration Source
Arguments
| :: MigrationPack m | |
| -> TableInfo | From database |
| -> TableInfo | From datatype |
| -> [AlterTable] |
defaultMigConstr :: (SchemaAnalyzer m, PersistBackend m) => MigrationPack m -> EntityDef -> ConstructorDef -> m (Bool, SingleMigration) Source