beam-migrate 0.3.1.0 → 0.3.2.0
raw patch · 3 files changed
+43/−2 lines, 3 filesdep ~aesonPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: aeson
API changes (from Hackage documentation)
+ Database.Beam.Migrate.Simple: haskellSchema :: MonadBeam cmd be hdl m => BeamMigrationBackend cmd be handle m -> m String
Files
- ChangeLog.md +4/−0
- Database/Beam/Migrate/Simple.hs +37/−0
- beam-migrate.cabal +2/−2
ChangeLog.md view
@@ -1,3 +1,7 @@+## 0.3.2.0++Added `haskellSchema` shortcut+ ## 0.3.1.0 Add `Semigroup` instances to prepare for GHC 8.4 and Stackage nightly
Database/Beam/Migrate/Simple.hs view
@@ -16,6 +16,8 @@ , defaultUpToDateHooks , bringUpToDate, bringUpToDateWithHooks + , haskellSchema+ , module Database.Beam.Migrate.Actions , module Database.Beam.Migrate.Types ) where @@ -27,6 +29,7 @@ import Database.Beam.Migrate.Types import Database.Beam.Migrate.Actions import Database.Beam.Migrate.Log+import Database.Beam.Haskell.Syntax import Control.Monad.Cont import Control.Monad.Writer@@ -273,3 +276,37 @@ -> String backendMigrationScript render mig = migrateScript ((++"\n") . T.unpack) ((++"\n") . render) (migrationStep "Migration Script" (\() -> mig))++-- | Given a 'BeamMigrationBackend', get a string representing a Haskell module+-- that would be a good starting point for further development.+--+-- For example, for a postgres database named @chinook@+--+-- > import Database.Beam.Migrate.Simple+-- > import Database.Beam.Postgres (runBeamPostgres)+-- > import Database.Beam.Postgres.Migrate (migrationBackend)+-- > import Database.PostgreSQL.Simple+-- >+-- > getSchema :: IO String+-- > getSchema = do pg <- connectPostgreSQL+-- > runBeamPostgres pg (haskellSchema migrationBackend)+--+-- Backends that have a migration backend typically export it under the module+-- name @Database.Beam./Backend/.Migrate@.+haskellSchema :: MonadBeam cmd be hdl m+ => BeamMigrationBackend cmd be handle m+ -> m String+haskellSchema BeamMigrationBackend { backendGetDbConstraints = getCs+ , backendConvertToHaskell = HaskellPredicateConverter conv2Hs } = do+ constraints <- getCs+ let hsConstraints = [ hsConstraint | c <- constraints, Just hsConstraint <- [ conv2Hs c ] ]++ solver = heuristicSolver (defaultActionProvider @HsAction) [] hsConstraints++ case finalSolution solver of+ Solved cmds ->+ let hsModule = hsActionsToModule "NewBeamSchema" (map migrationCommand cmds)+ in case renderHsSchema hsModule of+ Left err -> fail ("Error writing Haskell schema: " ++ err)+ Right modStr -> pure modStr+ Candidates {} -> fail "Could not form Haskell schema"
beam-migrate.cabal view
@@ -1,5 +1,5 @@ name: beam-migrate-version: 0.3.1.0+version: 0.3.2.0 synopsis: SQL DDL support and migrations support library for Beam description: This package provides type classes to allow backends to implement SQL DDL support for beam. This allows you to use beam syntax to@@ -62,7 +62,7 @@ build-depends: base >=4.9 && <5.0, beam-core >=0.7 && <0.8, text >=1.2 && <1.3,- aeson >=0.11 && <1.3,+ aeson >=0.11 && <1.4, bytestring >=0.10 && <0.11, free >=4.12 && <5.1, time >=1.6 && <1.10,