| Safe Haskell | None |
|---|
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 {}
- data TableInfo = TableInfo {
- tableColumns :: [Column]
- tableUniques :: [UniqueDefInfo]
- tableReferences :: [(Maybe String, Reference)]
- type UniqueDefInfo = UniqueDef' String (Either String String)
- data AlterColumn
- = Type DbTypePrimitive
- | IsNull
- | NotNull
- | Default String
- | NoDefault
- | UpdateValue String
- data AlterTable
- data AlterDB
- = AddTable String
- | AlterTable (Maybe String) String String TableInfo TableInfo [AlterTable]
- | DropTrigger (Maybe String) String (Maybe String) String
- | AddTriggerOnDelete (Maybe String) String (Maybe String) String String
- | AddTriggerOnUpdate (Maybe String) String (Maybe String) String (Maybe String) String
- | CreateOrReplaceFunction String
- | DropFunction (Maybe String) String
- | 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 :: Maybe String -> String -> [(String, String)] -> m (Bool, [AlterDB])
- migTriggerOnUpdate :: Maybe String -> String -> [(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 :: Maybe String -> String -> m [String]
- analyzeTable :: Maybe String -> String -> m (Maybe TableInfo)
- analyzeTrigger :: Maybe String -> String -> m (Maybe String)
- analyzeFunction :: Maybe String -> String -> m (Maybe String)
- getMigrationPack :: m (MigrationPack m)
- migrateRecursively :: (PersistBackend m, PersistEntity v) => (String -> m SingleMigration) -> (EntityDef -> m SingleMigration) -> (DbType -> m SingleMigration) -> v -> StateT NamedMigrations 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
| |
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 (Maybe String) String String TableInfo TableInfo [AlterTable] | Table schema, table name, create statement, structure of table from DB, structure of table from datatype, alters |
| DropTrigger (Maybe String) String (Maybe String) String | Trigger schema, trigger name, table schema, table name |
| AddTriggerOnDelete (Maybe String) String (Maybe String) String String | Trigger schema, trigger name, table schema, table name, body |
| AddTriggerOnUpdate (Maybe String) String (Maybe String) String (Maybe String) String | Trigger schema, trigger name, table schema, table name, field name, body |
| CreateOrReplaceFunction String | Statement which creates the function |
| DropFunction (Maybe String) String | Function schema, function name |
| CreateSchema String Bool | Schema name, if not exists |
data MigrationPack m Source
Constructors
class (Applicative m, Monad m) => SchemaAnalyzer m whereSource
Arguments
| :: (PersistBackend m, PersistEntity v) | |
| => (String -> m SingleMigration) | migrate schema |
| -> (EntityDef -> m SingleMigration) | migrate entity |
| -> (DbType -> m SingleMigration) | migrate list |
| -> v | initial entity |
| -> StateT NamedMigrations 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 SingleMigrationSource
migrateEntity :: (SchemaAnalyzer m, PersistBackend m) => MigrationPack m -> EntityDef -> m SingleMigrationSource
migrateList :: (SchemaAnalyzer m, PersistBackend m) => MigrationPack m -> DbType -> m SingleMigrationSource
Arguments
| :: MigrationPack m | |
| -> TableInfo | From database |
| -> TableInfo | From datatype |
| -> [AlterTable] |
defaultMigConstr :: (SchemaAnalyzer m, PersistBackend m) => MigrationPack m -> EntityDef -> ConstructorDef -> m (Bool, SingleMigration)Source