-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Simple schema management for arbitrary databases.
--   
--   Simple support for migrating database schemas, which allows haskell
--   functions to be run as a part of the migration. Note that this library
--   isn't meant to be used directly, but rather as a base library for a
--   specific driver. For an example of a functioning driver, you shold
--   check out <a>drifter-postgresql</a>.
@package drifter
@version 0.2.3

module Drifter

-- | Take an unordered list of changes and put them in dependency order.
--   <a>migrate</a> will do this automatically.
resolveDependencyOrder :: [Change a] -> [Change a]

-- | This is a helper for the common case of where you just want
--   dependencies to run in list order. This will take the input list and
--   set their dependencies to run in the given sequence.
changeSequence :: [Change a] -> [Change a]

-- | Runs a list of changes. They will automatically be sorted and run in
--   dependency order. Will terminate early on error.
migrate :: Drifter a => DBConnection a -> [Change a] -> IO (Either String ())
class Drifter a

-- | How to run a single, isolated migration.
migrateSingle :: Drifter a => DBConnection a -> Change a -> IO (Either String ())
newtype ChangeName
ChangeName :: Text -> ChangeName
[changeNameText] :: ChangeName -> Text
data Change a
Change :: ChangeName -> Maybe Description -> [ChangeName] -> Method a -> Change a
[changeName] :: Change a -> ChangeName
[changeDescription] :: Change a -> Maybe Description
[changeDependencies] :: Change a -> [ChangeName]
[changeMethod] :: Change a -> Method a
type Description = Text
