postgresql-migration-0.2.1.8: PostgreSQL Schema Migrations
Copyright(c) 2014 Andreas Meingast <ameingast@gmail.com>
LicenseBSD-style
Maintainerandre@andrevdm.com
Stabilityexperimental
PortabilityGHC
Safe HaskellNone
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 using the provided MigrationOptions.

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

Methods

showsPrec :: Int -> MigrationCommand -> ShowS

show :: MigrationCommand -> String

showList :: [MigrationCommand] -> ShowS

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

Methods

readsPrec :: Int -> ReadS (MigrationResult a)

readList :: ReadS [MigrationResult a]

readPrec :: ReadPrec (MigrationResult a)

readListPrec :: ReadPrec [MigrationResult a]

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

Defined in Database.PostgreSQL.Simple.Migration

Methods

showsPrec :: Int -> MigrationResult a -> ShowS

show :: MigrationResult a -> String

showList :: [MigrationResult a] -> ShowS

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

Defined in Database.PostgreSQL.Simple.Migration

Methods

(==) :: MigrationResult a -> MigrationResult a -> Bool

(/=) :: MigrationResult a -> MigrationResult a -> Bool

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. It 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)

Instances

Instances details
Show TransactionControl Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

Methods

showsPrec :: Int -> TransactionControl -> ShowS

show :: TransactionControl -> String

showList :: [TransactionControl] -> ShowS

data Verbosity Source #

Constructors

Verbose 
Quiet 

Instances

Instances details
Show Verbosity Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

Methods

showsPrec :: Int -> Verbosity -> ShowS

show :: Verbosity -> String

showList :: [Verbosity] -> ShowS

Eq Verbosity Source # 
Instance details

Defined in Database.PostgreSQL.Simple.Migration

Methods

(==) :: Verbosity -> Verbosity -> Bool

(/=) :: Verbosity -> Verbosity -> Bool

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