hasql-migration 0.2.0 → 0.3.0
raw patch · 4 files changed
+15/−15 lines, 4 filesdep −data-default-classdep ~hasqlPVP ok
version bump matches the API change (PVP)
Dependencies removed: data-default-class
Dependency ranges changed: hasql
API changes (from Hackage documentation)
Files
- hasql-migration.cabal +3/−4
- src/Hasql/Migration.hs +9/−8
- src/Hasql/Migration/Util.hs +1/−2
- test/Hasql/MigrationTest.hs +2/−1
hasql-migration.cabal view
@@ -1,5 +1,5 @@ name: hasql-migration-version: 0.2.0+version: 0.3.0 synopsis: PostgreSQL Schema Migrations homepage: https://github.com/tvh/hasql-migration Bug-reports: https://github.com/tvh/hasql-migration/issues@@ -12,7 +12,7 @@ build-type: Simple cabal-version: >= 1.10 description: A PostgreSQL-simple schema migration utility-tested-with: GHC==8.0.1, GHC==8.2.2, GHC==8.4.3+tested-with: GHC==8.0.1, GHC==8.2.2, GHC==8.4.3, GHC==8.6.5 extra-source-files: License Readme.markdown @@ -36,9 +36,8 @@ bytestring >= 0.10, contravariant >= 1.3, cryptonite >= 0.11,- data-default-class >= 0.0.1, directory >= 1.2,- hasql >= 1.3,+ hasql >= 1.4, hasql-transaction >= 0.7, memory, text >= 1.2,
src/Hasql/Migration.hs view
@@ -34,10 +34,8 @@ , SchemaMigration(..) ) where -import Control.Arrow import Crypto.Hash (hashWith, MD5(..)) import Data.ByteArray.Encoding-import Data.Default.Class import Data.Functor.Contravariant import Data.List (isPrefixOf, sort) import Data.Time (LocalTime)@@ -46,6 +44,7 @@ import Hasql.Statement import Hasql.Transaction import System.Directory (getDirectoryContents)+import Data.Semigroup ((<>)) import qualified Data.ByteString as BS (ByteString, readFile) import qualified Data.Text as T import qualified Data.Text.Encoding as T@@ -95,12 +94,13 @@ return Nothing ScriptNotExecuted -> do sql contents- statement (name, checksum) (Statement q (contramap (first T.pack) def) Decoders.unit False)+ statement (name, checksum) (Statement q enc Decoders.noResult False) return Nothing ScriptModified _ -> do return (Just $ ScriptChanged name) where q = "insert into schema_migrations(filename, checksum) values($1, $2)"+ enc = ((T.pack . fst) >$< Encoders.param (Encoders.nonNullable Encoders.text)) <> (snd >$< Encoders.param (Encoders.nonNullable Encoders.text)) -- | Initializes the database schema with a helper table containing -- meta-information about executed migrations.@@ -147,7 +147,8 @@ -- will be executed and its meta-information will be recorded. checkScript :: ScriptName -> Checksum -> Transaction CheckScriptResult checkScript name checksum =- statement name (Statement q (contramap T.pack (Encoders.param def)) (Decoders.rowMaybe (Decoders.column def)) False) >>= \case+ statement name (Statement q (contramap T.pack (Encoders.param (Encoders.nonNullable Encoders.text))) + (Decoders.rowMaybe (Decoders.column (Decoders.nonNullable Decoders.text))) False) >>= \case Nothing -> return ScriptNotExecuted Just actualChecksum | checksum == actualChecksum ->@@ -201,7 +202,7 @@ -- | Produces a list of all executed 'SchemaMigration's. getMigrations :: Transaction [SchemaMigration] getMigrations =- statement () $ Statement q def (Decoders.rowList decodeSchemaMigration) False+ statement () $ Statement q Encoders.noParams (Decoders.rowList decodeSchemaMigration) False where q = mconcat [ "select filename, checksum, executed_at "@@ -225,6 +226,6 @@ decodeSchemaMigration :: Decoders.Row SchemaMigration decodeSchemaMigration = SchemaMigration- <$> Decoders.column def- <*> Decoders.column def- <*> Decoders.column def+ <$> Decoders.column (Decoders.nonNullable Decoders.bytea)+ <*> Decoders.column (Decoders.nonNullable Decoders.text)+ <*> Decoders.column (Decoders.nonNullable Decoders.timestamp)
src/Hasql/Migration/Util.hs view
@@ -21,12 +21,11 @@ import qualified Hasql.Decoders as Decoders import Hasql.Transaction (statement, Transaction) import Data.Text (Text)-import Data.Default.Class -- | Checks if the table with the given name exists in the database. existsTable :: Text -> Transaction Bool existsTable table = fmap (not . null) $ statement table q where- q = Statement sql (Encoders.param def) (Decoders.rowList (Decoders.column Decoders.int8)) False+ q = Statement sql (Encoders.param (Encoders.nonNullable Encoders.text)) (Decoders.rowList (Decoders.column (Decoders.nullable Decoders.int8))) False sql = "select relname from pg_class where relname = $1"
test/Hasql/MigrationTest.hs view
@@ -31,7 +31,8 @@ migrationSpec con = describe "Migrations" $ do let migrationScript = MigrationScript "test.sql" q let migrationScriptAltered = MigrationScript "test.sql" ""- [migrationDir] <- runIO $ loadMigrationsFromDirectory "share/test/scripts"+ mds <- runIO $ loadMigrationsFromDirectory "share/test/scripts"+ let migrationDir = head mds migrationFile <- runIO $ loadMigrationFromFile "s.sql" "share/test/script.sql" it "initializes a database" $ do