From: Michael Orlitzky Date: Tue, 13 Jan 2015 07:24:44 +0000 (-0500) Subject: Rewrite TSN.DbImport.run_dbmigrate for groundhog-0.7. X-Git-Tag: 0.2.1~4 X-Git-Url: https://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=cc0fa217e3d1b3505a34642a68950ef40d3b4007;p=dead%2Fhtsn-import.git Rewrite TSN.DbImport.run_dbmigrate for groundhog-0.7. --- diff --git a/src/TSN/DbImport.hs b/src/TSN/DbImport.hs index 4f4c8f2..066b5a0 100644 --- a/src/TSN/DbImport.hs +++ b/src/TSN/DbImport.hs @@ -23,8 +23,15 @@ module TSN.DbImport ( where -- System imports -import Control.Monad.IO.Class ( MonadIO ) -import Database.Groundhog ( runMigration ) +import Control.Monad ( forM_ ) +import Control.Monad.IO.Class ( MonadIO( liftIO ) ) +import qualified Data.Map as Map ( elems ) +import Database.Groundhog ( executeRaw ) +import Database.Groundhog.Core ( NamedMigrations ) +import Database.Groundhog.Generic ( + createMigration, + getQueries, + mergeMigrations ) import Database.Groundhog.Core ( Migration, PersistBackend ) import Network.Services.TSN.Report ( report_info ) @@ -56,11 +63,18 @@ class DbImport a where -- | A migration runner that will use our normal info reporting --- mechanism. +-- mechanism. The top-level code was stolen from 'runMigration' in +-- "Data.Groundhog.Generic" and the 'execute_pretty' code was stolen +-- from 'executeMigration'' in the same module. -- run_dbmigrate :: (MonadIO m, PersistBackend m) => Migration m -> m () -run_dbmigrate = - runMigration pretty_migration_logger +run_dbmigrate migration = createMigration migration >>= execute_pretty where - pretty_migration_logger x = - report_info ("Migration: " ++ x ++ ";") + execute_pretty :: (PersistBackend m, MonadIO m) => NamedMigrations -> m () + execute_pretty m = do + let migs = getQueries False $ mergeMigrations $ Map.elems m + case migs of + Left errs -> fail $ unlines errs + Right qs -> forM_ qs $ \q -> do + liftIO $ report_info ("Migration: " ++ q ++ ";") + executeRaw False q []