drifter-0.2.1: src/Drifter.hs
module Drifter
(
-- * Managing Migrations
resolveDependencyOrder
, changeSequence
, migrate
-- * Types
, Drifter(..)
, ChangeName(..)
, Change(..)
, Description
, Method
, DBConnection
) where
-------------------------------------------------------------------------------
import Data.List
-------------------------------------------------------------------------------
import Drifter.Graph
import Drifter.Types
-------------------------------------------------------------------------------
-- | 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]
changeSequence [] = []
changeSequence (x:xs) = reverse $ snd $ foldl' go (x, [x]) xs
where
go :: (Change a, [Change a]) -> Change a -> (Change a, [Change a])
go (lastChange, xs') c =
let c' = c { changeDependencies = [changeName lastChange] }
in (c', c':xs')