persistent-migration 0.2.0 → 0.2.1
raw patch · 5 files changed
+27/−46 lines, 5 files
Files
- CHANGELOG.md +5/−0
- persistent-migration.cabal +2/−3
- src/Database/Persist/Migration/Operation.hs +1/−2
- src/Database/Persist/Migration/Operation/Types.hs +19/−10
- src/Database/Persist/Migration/Utils/Data.hs +0/−31
CHANGELOG.md view
@@ -1,3 +1,8 @@+## persistent-migration 0.2.1++Fixes:+* Fix build for persistent-2.12.0.0+ ## persistent-migration 0.2.0 Breaking changes:
persistent-migration.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: ba05ddb62204797a742d3b09fe26c8f9469e7c342a690d1e19a803873653c5f9+-- hash: 719969a82682f1123ab4f973c7366736f3b3fa2ccc013f2c901a334894fc6408 name: persistent-migration-version: 0.2.0+version: 0.2.1 synopsis: Manual migrations for the persistent library description: Manual migrations for the persistent library. category: Database@@ -34,7 +34,6 @@ Database.Persist.Migration.Operation Database.Persist.Migration.Operation.Types Database.Persist.Migration.Postgres- Database.Persist.Migration.Utils.Data Database.Persist.Migration.Utils.Plan Database.Persist.Migration.Utils.Sql other-modules:
src/Database/Persist/Migration/Operation.hs view
@@ -20,7 +20,6 @@ import Data.Maybe (isNothing, mapMaybe) import Data.Text (Text) import Database.Persist.Migration.Operation.Types-import Database.Persist.Migration.Utils.Data (isConstr) import Database.Persist.Migration.Utils.Sql (MigrateSql) import Database.Persist.Sql (PersistValue, SqlPersistT) @@ -87,7 +86,7 @@ mapM_ validateColumn schema - case length . filter (isConstr "PrimaryKey") $ constraints of+ case length . filter isPrimaryKey $ constraints of 0 -> fail' "No primary key specified" 1 -> return () _ -> fail' "Multiple primary keys specified"
src/Database/Persist/Migration/Operation/Types.hs view
@@ -6,13 +6,10 @@ Defines auxiliary data types that can be used in Operations. -}-{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-}-{-# LANGUAGE StandaloneDeriving #-}-{-# OPTIONS_GHC -fno-warn-orphans #-} module Database.Persist.Migration.Operation.Types ( ColumnIdentifier@@ -21,14 +18,14 @@ , validateColumn , ColumnProp(..) , TableConstraint(..)+ , isPrimaryKey , getConstraintColumns ) where import Control.Monad (when)-import Data.Data (Data)+import Data.List (nub) import Data.Text (Text) import qualified Data.Text as Text-import Database.Persist.Migration.Utils.Data (hasDuplicateConstrs) import Database.Persist.Sql (PersistValue(..)) import Database.Persist.Types (SqlType) @@ -48,9 +45,18 @@ -- | Validate a Column. validateColumn :: Column -> Either String ()-validateColumn col@Column{..} = when (hasDuplicateConstrs colProps) $+validateColumn col@Column{..} = when (hasDuplicates $ map getColumnPropName colProps) $ Left $ "Duplicate column properties detected: " ++ show col+ where+ hasDuplicates l = length l /= length (nub l) + getColumnPropName :: ColumnProp -> String+ getColumnPropName = \case+ NotNull{} -> "NotNull"+ References{} -> "References"+ AutoIncrement{} -> "AutoIncrement"+ Default{} -> "Default"+ -- | A property for a 'Column'. data ColumnProp = NotNull@@ -66,15 +72,18 @@ -- See 'AddColumn' for setting the default value for existing rows in a migration. -- -- More info: https://www.yesodweb.com/book/persistent#persistent_attributes- deriving (Show,Eq,Data)--deriving instance Data PersistValue+ deriving (Show,Eq) -- | Table constraints in a CREATE query. data TableConstraint = PrimaryKey [Text] -- ^ PRIMARY KEY (col1, col2, ...) | Unique Text [Text] -- ^ CONSTRAINT name UNIQUE (col1, col2, ...)- deriving (Show,Data)+ deriving (Show)++isPrimaryKey :: TableConstraint -> Bool+isPrimaryKey = \case+ PrimaryKey{} -> True+ _ -> False -- | Get the columns defined in the given TableConstraint. getConstraintColumns :: TableConstraint -> [Text]
− src/Database/Persist/Migration/Utils/Data.hs
@@ -1,31 +0,0 @@-{-|-Module : Database.Persist.Migration.Utils.Data-Maintainer : Brandon Chinn <brandonchinn178@gmail.com>-Stability : experimental-Portability : portable--Define functions useful for data constructors.--}--module Database.Persist.Migration.Utils.Data- ( showConstr- , isConstr- , hasDuplicateConstrs- ) where--import Data.Data (Data)-import qualified Data.Data as Data-import Data.Function (on)-import Data.List (nubBy)---- | Show the name of the constructor.-showConstr :: Data a => a -> String-showConstr = Data.showConstr . Data.toConstr---- | Return True if the given constructor has the given name.-isConstr :: Data a => String -> a -> Bool-isConstr name = (== name) . showConstr---- | Return True if the given list has duplicate constructors.-hasDuplicateConstrs :: Data a => [a] -> Bool-hasDuplicateConstrs l = length l /= length (nubBy ((==) `on` showConstr) l)