{-#LANGUAGE TypeFamilies #-}
module Database.Migrant.Driver.Class
where
import Database.Migrant.MigrationName (MigrationName)
import Data.Text (Text)
import Text.Printf (printf)
import Control.Monad
class Driver d where
withTransaction :: (d -> IO a) -> d -> IO a
initMigrations :: d -> IO ()
markUp :: MigrationName -> d -> IO ()
markDown :: MigrationName -> d -> IO ()
getMigrations :: d -> IO [MigrationName]
data DummyDriver = DummyDriver
instance Driver DummyDriver where
withTransaction :: (DummyDriver -> IO a) -> DummyDriver -> IO a
withTransaction = (DummyDriver -> IO a) -> DummyDriver -> IO a
forall a. a -> a
id
initMigrations :: DummyDriver -> IO ()
initMigrations = IO () -> DummyDriver -> IO ()
forall a b. a -> b -> a
const IO ()
forall (m :: * -> *) a. MonadPlus m => m a
mzero
markUp :: MigrationName -> DummyDriver -> IO ()
markUp MigrationName
migration DummyDriver
_ =
String -> MigrationName -> IO ()
forall r. PrintfType r => String -> r
printf String
"UP: %s" MigrationName
migration
markDown :: MigrationName -> DummyDriver -> IO ()
markDown MigrationName
migration DummyDriver
_ =
String -> MigrationName -> IO ()
forall r. PrintfType r => String -> r
printf String
"DOWN: %s" MigrationName
migration
getMigrations :: DummyDriver -> IO [MigrationName]
getMigrations DummyDriver
_ = [MigrationName] -> IO [MigrationName]
forall (m :: * -> *) a. Monad m => a -> m a
return []