postgresql-migration-0.2.1.6: PostgreSQL Schema Migrations
Copyright(c) 2014 Andreas Meingast <ameingast@gmail.com>
LicenseBSD-style
Maintainerandre@andrevdm.com
Stabilityexperimental
PortabilityGHC
Safe HaskellSafe-Inferred
LanguageHaskell2010

Database.PostgreSQL.Simple.Migration

Description

A migration library for postgresql-simple.

For usage, see Readme.markdown.

Synopsis

Migration actions

runMigration :: Connection -> MigrationOptions -> MigrationCommand -> IO (MigrationResult String) Source #

Executes migrations inside the provided MigrationContext.

Returns MigrationSuccess if the provided MigrationCommand executes without error. If an error occurs, execution is stopped and a MigrationError is returned.

runMigrations Source #

Arguments

:: Connection

The postgres connection to use

-> MigrationOptions

The options for this migration

-> [MigrationCommand]

The commands to run

-> IO (MigrationResult String) 

Execute a sequence of migrations

Returns MigrationSuccess if all of the provided MigrationCommands execute without error. If an error occurs, execution is stopped and the MigrationError is returned.

sequenceMigrations :: Monad m => [m (MigrationResult e)] -> m (MigrationResult e) Source #

Run a sequence of contexts, stopping on the first failure

Migration types

type Checksum = ByteString Source #

The checksum type of a migration script.

data MigrationOptions Source #

Constructors

MigrationOptions 

Fields

data MigrationCommand Source #

MigrationCommand determines the action of the runMigration script.

Constructors

MigrationInitialization

Initializes the database with a helper table containing meta information.

MigrationDirectory FilePath

Executes migrations based on SQL scripts in the provided FilePath in alphabetical order.

MigrationFile ScriptName FilePath

Executes a migration based on script located at the provided FilePath.

MigrationScript ScriptName ByteString

Executes a migration based on the provided bytestring.

MigrationValidation MigrationCommand

Validates that the provided MigrationCommand has been executed.

MigrationCommands [MigrationCommand]

Performs a series of MigrationCommands in sequence.

Instances

Instances details
Monoid MigrationCommand Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

Semigroup MigrationCommand Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

Read MigrationCommand Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

Show MigrationCommand Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

Eq MigrationCommand Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

Ord MigrationCommand Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

data MigrationResult a Source #

A sum-type denoting the result of a migration.

Constructors

MigrationError a

There was an error in script migration.

MigrationSuccess

All scripts have been executed successfully.

Instances

Instances details
Foldable MigrationResult Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

Methods

fold :: Monoid m => MigrationResult m -> m #

foldMap :: Monoid m => (a -> m) -> MigrationResult a -> m #

foldMap' :: Monoid m => (a -> m) -> MigrationResult a -> m #

foldr :: (a -> b -> b) -> b -> MigrationResult a -> b #

foldr' :: (a -> b -> b) -> b -> MigrationResult a -> b #

foldl :: (b -> a -> b) -> b -> MigrationResult a -> b #

foldl' :: (b -> a -> b) -> b -> MigrationResult a -> b #

foldr1 :: (a -> a -> a) -> MigrationResult a -> a #

foldl1 :: (a -> a -> a) -> MigrationResult a -> a #

toList :: MigrationResult a -> [a] #

null :: MigrationResult a -> Bool #

length :: MigrationResult a -> Int #

elem :: Eq a => a -> MigrationResult a -> Bool #

maximum :: Ord a => MigrationResult a -> a #

minimum :: Ord a => MigrationResult a -> a #

sum :: Num a => MigrationResult a -> a #

product :: Num a => MigrationResult a -> a #

Traversable MigrationResult Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

Methods

traverse :: Applicative f => (a -> f b) -> MigrationResult a -> f (MigrationResult b) #

sequenceA :: Applicative f => MigrationResult (f a) -> f (MigrationResult a) #

mapM :: Monad m => (a -> m b) -> MigrationResult a -> m (MigrationResult b) #

sequence :: Monad m => MigrationResult (m a) -> m (MigrationResult a) #

Functor MigrationResult Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

Methods

fmap :: (a -> b) -> MigrationResult a -> MigrationResult b #

(<$) :: a -> MigrationResult b -> MigrationResult a #

Read a => Read (MigrationResult a) Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

Show a => Show (MigrationResult a) Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

Eq a => Eq (MigrationResult a) Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

Ord a => Ord (MigrationResult a) Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

type ScriptName = String Source #

The name of a script. Typically the filename or a custom name when using Haskell migrations.

data TransactionControl Source #

Determines how transactions are handled Its is recommened to use transaction when running migrations Certain actions require a transaction per script, if you are doing this use TransactionPerStep If you want a single transaction for all migrations use TransactionPerRun If you do not want a transaction, or are using an existing transaction then use NoNewTransaction

Constructors

NoNewTransaction

No new transaction will be started. Up to the caller to decide if the run is in a transaction or not

TransactionPerRun

Call withTransaction once for the entire MigrationCommand

TransactionPerStep

Call withTransaction once for each step in a MigrationCommand (i.e. new transaction per script)

data Verbosity Source #

Constructors

Verbose 
Quiet 

Instances

Instances details
Show Verbosity Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

Eq Verbosity Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

Migration result actions

getMigrations :: Connection -> IO [SchemaMigration] Source #

Produces a list of all executed SchemaMigrations in the default schema_migrations table

getMigrations' :: Connection -> ByteString -> IO [SchemaMigration] Source #

Produces a list of all executed SchemaMigrations.

Migration result types

data SchemaMigration Source #

A product type representing a single, executed SchemaMigration.

Constructors

SchemaMigration 

Fields