groundhog-0.3.0: Type-safe datatype-database mapping library.

Safe HaskellNone

Database.Groundhog.Generic.Migration

Description

This helper module is intended for use by the backend creators

Synopsis

Documentation

data Column Source

Constructors

Column 

Fields

colName :: String
 
colNull :: Bool
 
colType :: DbType

contains DbType that maps to one column (no DbEmbedded)

colDefault :: Maybe String
 

Instances

data TableInfo Source

Constructors

TableInfo 

Fields

tableColumns :: [Column]
 
tableUniques :: [UniqueDef']
 
tableReferences :: [(Maybe String, Reference)]

constraint name and reference

Instances

data AlterDB Source

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

Instances

data MigrationPack m Source

Constructors

MigrationPack 

Fields

compareTypes :: DbType -> DbType -> Bool
 
compareRefs :: (Maybe String, Reference) -> (Maybe String, Reference) -> Bool
 
compareUniqs :: UniqueDef' -> UniqueDef' -> 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
 
primaryKeyType :: DbType
 
primaryKeyTypeName :: String
 
foreignKeyTypeName :: String
 
mainTableId :: String
 
defaultPriority :: Int
 
addUniquesReferences :: [UniqueDef'] -> [Reference] -> ([String], [AlterTable])

Sql pieces for the create table statement that add constraints and alterations for running after the table is created

showColumn :: Column -> String
 
showAlterDb :: AlterDB -> SingleMigration
 

class SchemaAnalyzer m whereSource

Methods

listTablesSource

Arguments

:: Maybe String

Schema name

-> m [String] 

listTableTriggersSource

Arguments

:: Maybe String

Schema name

-> String

Table name

-> m [String] 

analyzeTableSource

Arguments

:: Maybe String

Schema name

-> String

Table name

-> m (Either [String] (Maybe TableInfo)) 

analyzeTriggerSource

Arguments

:: Maybe String

Schema name

-> String

Trigger name

-> m (Maybe String) 

analyzeFunctionSource

Arguments

:: Maybe String

Schema name

-> String

Function name

-> m (Maybe String) 

migrateRecursivelySource

Arguments

:: (Monad m, PersistEntity v) 
=> (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

getAltersSource

Arguments

:: MigrationPack m 
-> TableInfo

From database

-> TableInfo

From datatype

-> [AlterTable]