packages feed

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 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,