persistable-record 0.6.0.4 → 0.6.0.5
raw patch · 4 files changed
+62/−39 lines, 4 filesdep +th-bang-compatdep +th-constraint-compatPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: th-bang-compat, th-constraint-compat
API changes (from Hackage documentation)
- Database.Record.FromSql: instance (Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull a, Database.Record.FromSql.FromSql q a, Database.Record.Persistable.PersistableType q) => Database.Record.FromSql.FromSql q (GHC.Base.Maybe a)
- Database.Record.Persistable: instance Database.Record.Persistable.PersistableWidth a => Database.Record.Persistable.PersistableWidth (GHC.Base.Maybe a)
- Database.Record.ToSql: instance (Database.Record.Persistable.PersistableType q, Database.Record.ToSql.ToSql q a) => Database.Record.ToSql.ToSql q (GHC.Base.Maybe a)
+ Database.Record: class FromSql q a
+ Database.Record: class HasColumnConstraint c a
+ Database.Record: class HasKeyConstraint c a
+ Database.Record: class Eq q => PersistableType q
+ Database.Record: class PersistableWidth a
+ Database.Record: class PersistableWidth a => ToSql q a
+ Database.Record: columnConstraint :: HasColumnConstraint c a => ColumnConstraint c a
+ Database.Record: data ColumnConstraint c r
+ Database.Record: data KeyConstraint c r
+ Database.Record: data NotNull
+ Database.Record: data PersistableSqlType q
+ Database.Record: data Primary
+ Database.Record: data RecordFromSql q a
+ Database.Record: data RecordToSql q a
+ Database.Record: data Unique
+ Database.Record: deriveComposite :: ColumnConstraint c r -> KeyConstraint c r
+ Database.Record: derivedCompositePrimary :: HasColumnConstraint Primary r => PrimaryConstraint r
+ Database.Record: derivedNotNullColumnConstraint :: HasColumnConstraint Primary r => NotNullColumnConstraint r
+ Database.Record: derivedUniqueColumnConstraint :: HasColumnConstraint Primary r => UniqueColumnConstraint r
+ Database.Record: derivedUniqueConstraint :: HasKeyConstraint Primary r => UniqueConstraint r
+ Database.Record: derivedWidth :: PersistableWidth a => (PersistableRecordWidth a, Int)
+ Database.Record: fromRecord :: ToSql q a => a -> [q]
+ Database.Record: keyConstraint :: HasKeyConstraint c a => KeyConstraint c a
+ Database.Record: notNullColumn :: PrimaryColumnConstraint r -> NotNullColumnConstraint r
+ Database.Record: persistableType :: PersistableType q => PersistableSqlType q
+ Database.Record: persistableWidth :: (PersistableWidth a, Generic a, GFieldWidthList (Rep a)) => PersistableRecordWidth a
+ Database.Record: putEmpty :: () -> ToSqlM q ()
+ Database.Record: putRecord :: ToSql q a => a -> ToSqlM q ()
+ Database.Record: recordFromSql :: (FromSql q a, Generic a, GFromSql q (Rep a)) => RecordFromSql q a
+ Database.Record: recordToSql :: (ToSql q a, Generic a, GToSql q (Rep a)) => RecordToSql q a
+ Database.Record: sqlNullValue :: PersistableType q => q
+ Database.Record: takeRecord :: FromSql q a => [q] -> (a, [q])
+ Database.Record: toRecord :: FromSql q a => [q] -> a
+ Database.Record: type NotNullColumnConstraint = ColumnConstraint NotNull
+ Database.Record: type PersistableRecordWidth a = ProductConst (Sum Int) a
+ Database.Record: type PrimaryColumnConstraint = ColumnConstraint Primary
+ Database.Record: type PrimaryConstraint = KeyConstraint Primary
+ Database.Record: type ToSqlM q a = Writer (DList q) a
+ Database.Record: type UniqueColumnConstraint = ColumnConstraint Unique
+ Database.Record: type UniqueConstraint = KeyConstraint Unique
+ Database.Record: unique :: PrimaryConstraint r -> UniqueConstraint r
+ Database.Record: uniqueColumn :: PrimaryColumnConstraint r -> UniqueColumnConstraint r
+ Database.Record: updateValuesByPrimary :: (HasKeyConstraint Primary ra, ToSql q ra) => ra -> [q]
+ Database.Record: updateValuesByUnique :: ToSql q ra => KeyConstraint Unique ra -> ra -> [q]
+ Database.Record: valueRecordFromSql :: (q -> a) -> RecordFromSql q a
+ Database.Record: valueRecordToSql :: (a -> q) -> RecordToSql q a
+ Database.Record.FromSql: instance (Database.Record.KeyConstraint.HasColumnConstraint Database.Record.KeyConstraint.NotNull a, Database.Record.FromSql.FromSql q a, Database.Record.Persistable.PersistableType q) => Database.Record.FromSql.FromSql q (GHC.Maybe.Maybe a)
+ Database.Record.Persistable: instance Database.Record.Persistable.PersistableWidth a => Database.Record.Persistable.PersistableWidth (GHC.Maybe.Maybe a)
+ Database.Record.ToSql: instance (Database.Record.Persistable.PersistableType q, Database.Record.ToSql.ToSql q a) => Database.Record.ToSql.ToSql q (GHC.Maybe.Maybe a)
Files
- ChangeLog.md +8/−0
- persistable-record.cabal +47/−35
- src/Database/Record/InternalTH.hs +2/−1
- src/Database/Record/TH.hs +5/−3
ChangeLog.md view
@@ -1,5 +1,13 @@ <!-- -*- Markdown -*- --> +## 0.6.0.5++- apply compat interface packages of TH.++## 0.6.0.4++- update documentation.+ ## 0.6.0.3 - fix example of NameConfig customization.
persistable-record.cabal view
@@ -1,5 +1,5 @@ name: persistable-record-version: 0.6.0.4+version: 0.6.0.5 synopsis: Binding between SQL database values and haskell records. description: This package contiains types to represent table constraints and interfaces to bind between SQL database values and Haskell records.@@ -8,11 +8,13 @@ license-file: LICENSE author: Kei Hibino maintainer: ex8k.hibino@gmail.com-copyright: Copyright (c) 2013-2017 Kei Hibino+copyright: Copyright (c) 2013-2020 Kei Hibino category: Database build-type: Simple cabal-version: >=1.10-tested-with: GHC == 8.4.1, GHC == 8.4.2, GHC == 8.4.3+tested-with: GHC == 8.8.1, GHC == 8.8.2+ , GHC == 8.6.1, GHC == 8.6.2, GHC == 8.6.3, GHC == 8.6.4, GHC == 8.6.5+ , GHC == 8.4.1, GHC == 8.4.2, GHC == 8.4.3, GHC == 8.4.4 , GHC == 8.2.1, GHC == 8.2.2 , GHC == 8.0.1, GHC == 8.0.2 , GHC == 7.10.1, GHC == 7.10.2, GHC == 7.10.3@@ -23,47 +25,57 @@ library exposed-modules:- Database.Record.FromSql- Database.Record.ToSql- Database.Record.Persistable- Database.Record.TupleInstances- Database.Record.Instances- Database.Record.KeyConstraint- Database.Record- Database.Record.TH+ Database.Record.FromSql+ Database.Record.ToSql+ Database.Record.Persistable+ Database.Record.TupleInstances+ Database.Record.Instances+ Database.Record.KeyConstraint+ Database.Record+ Database.Record.TH other-modules:- Database.Record.InternalTH+ Database.Record.InternalTH - build-depends: base <5- , template-haskell- , th-data-compat- , product-isomorphic >= 0.0.3- , array- , containers- , transformers- , dlist- , names-th+ build-depends: base <5+ , template-haskell+ , th-data-compat+ , th-constraint-compat+ , th-bang-compat+ , product-isomorphic >= 0.0.3+ , array+ , containers+ , transformers+ , dlist+ , names-th if impl(ghc == 7.4.*)- build-depends: ghc-prim == 0.2.*+ build-depends: ghc-prim == 0.2.* - hs-source-dirs: src- ghc-options: -Wall- default-language: Haskell2010+ hs-source-dirs: src+ ghc-options: -Wall+ if impl(ghc >= 8)+ ghc-options: -Wcompat+ if impl(ghc >= 8) && impl(ghc < 8.8)+ ghc-options: -Wnoncanonical-monadfail-instances + default-language: Haskell2010+ test-suite nested- build-depends: base <5- , quickcheck-simple- , persistable-record+ build-depends: base <5+ , quickcheck-simple+ , persistable-record if impl(ghc == 7.4.*)- build-depends: ghc-prim == 0.2.*+ build-depends: ghc-prim == 0.2.* - type: exitcode-stdio-1.0- main-is: nestedEq.hs- other-modules: Model- hs-source-dirs: test- ghc-options: -Wall- default-language: Haskell2010+ type: exitcode-stdio-1.0+ main-is: nestedEq.hs+ other-modules: Model+ hs-source-dirs: test+ ghc-options: -Wall+ if impl(ghc >= 8)+ ghc-options: -Wcompat++ default-language: Haskell2010 source-repository head type: git
src/Database/Record/InternalTH.hs view
@@ -12,7 +12,8 @@ import Data.Int (Int32, Int64) import Language.Haskell.TH (Q, mkName, Name, tupleTypeName,- TypeQ, varT, classP, Dec, instanceD, )+ TypeQ, varT, Dec, instanceD, )+import Language.Haskell.TH.Compat.Constraint (classP) import Data.Functor.ProductIsomorphic.TH (reifyRecordType) import Database.Record.Persistable (PersistableWidth)
src/Database/Record/TH.hs view
@@ -55,9 +55,11 @@ toTypeCon, toDataCon, ) import Language.Haskell.TH.Lib.Extra (integralE, simpleValD, reportWarning) import Language.Haskell.TH.Compat.Data (dataD')+import Language.Haskell.TH.Compat.Bang+ (varBangType, bangType, bang,+ noSourceUnpackedness, sourceStrict) import Language.Haskell.TH- (Q, nameBase, Name, Dec, TypeQ, conT, ExpQ, listE, sigE,- recC, cxt, varStrictType, strictType, isStrict)+ (Q, nameBase, Name, Dec, TypeQ, conT, ExpQ, listE, sigE, recC, cxt) import Control.Arrow ((&&&)) @@ -184,7 +186,7 @@ -> Q [Dec] -- ^ The data type record definition defineRecordType typeName' columns derives = do let typeName = conName typeName'- fld (n, tq) = varStrictType (varName n) (strictType isStrict tq)+ fld (n, tq) = varBangType (varName n) (bangType (bang noSourceUnpackedness sourceStrict) tq) derives1 <- if (''Generic `notElem` derives) then do reportWarning "HRR needs Generic instance, please add ''Generic manually." return $ ''Generic : derives