module Web.Simple.Migrations
  ( Migration
  , newMigration
  ) where

import System.Locale
import System.Time

type Migration =  String -- ^ Version
               -> String -- ^ Migration name
               -> IO Bool

newMigration :: String -> IO ()
newMigration name = do
  time <- getClockTime >>= return . toUTCTime
  let timestr = formatCalendarTime defaultTimeLocale
                  "%Y%m%d%H%M%S" time
  writeFile ("migrate/" ++ timestr ++ "_" ++ name ++ ".hs") migrationTemplate

migrationTemplate :: String
migrationTemplate = concat
  [ "import Web.Simple.Migrations\n\n"
  , "up :: Migration\n"
  , "up = const . const $ return False\n\n"
  , "down :: Migration\n"
  , "down = const . const $ return False\n\n"]