Safe Haskell | None |
---|---|
Language | Haskell98 |
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
Column | |
|
Reference | |
|
type QualifiedName = (Maybe String, String) Source
Schema-qualified name of a table of another database object
TableInfo | |
|
type UniqueDefInfo = UniqueDef' String (Either String String) Source
Either column name or expression
data AlterColumn Source
data AlterTable Source
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
class (Applicative m, Monad m) => SchemaAnalyzer m where Source
getCurrentSchema :: m (Maybe String) Source
:: QualifiedName | Qualified table name |
-> m [String] |
:: QualifiedName | Qualified table name |
-> m (Maybe TableInfo) |
:: QualifiedName | Qualified trigger name |
-> m (Maybe String) |
:: QualifiedName | Qualified function name |
-> m (Maybe (Maybe [DbTypePrimitive], Maybe DbTypePrimitive, String)) | Argument types, return type, and body |
getMigrationPack :: m (MigrationPack m) Source
:: (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
:: MigrationPack m | |
-> TableInfo | From database |
-> TableInfo | From datatype |
-> [AlterTable] |
defaultMigConstr :: (SchemaAnalyzer m, PersistBackend m) => MigrationPack m -> EntityDef -> ConstructorDef -> m (Bool, SingleMigration) Source