{-#LANGUAGE OverloadedStrings #-} module Database.Sqlite.Easy.Migrant ( module Database.Migrant.Driver.Class ) where import Database.Migrant.Driver.Class import Database.Migrant.MigrationName import qualified Database.Sqlite.Easy.Internal as Sqlite import qualified Database.SQLite3 as Sqlite instance Driver Sqlite.Database where withTransaction action conn = Sqlite.asTransaction' conn (action conn) initMigrations conn = do [] <- Sqlite.run "CREATE TABLE IF NOT EXISTS _migrations (id INTEGER PRIMARY KEY, name TEXT)" conn pure () markUp name conn = do [] <- Sqlite.runWith "INSERT INTO _migrations (name) VALUES (?)" [Sqlite.SQLText $ unpackMigrationName name] conn pure () markDown name conn = do [] <- Sqlite.runWith "DELETE FROM _migrations WHERE name = ?" [Sqlite.SQLText $ unpackMigrationName name] conn pure () getMigrations conn = do result <- Sqlite.run "SELECT name FROM _migrations ORDER BY id" conn return [ MigrationName name | [Sqlite.SQLText name] <- result ]