persistable-record 0.4.1.0 → 0.4.1.1
raw patch · 2 files changed
+80/−4 lines, 2 filesdep +persistable-recorddep +quickcheck-simplePVP ok
version bump matches the API change (PVP)
Dependencies added: persistable-record, quickcheck-simple
API changes (from Hackage documentation)
Files
- persistable-record.cabal +13/−4
- test/nestedEq.hs +67/−0
persistable-record.cabal view
@@ -1,5 +1,5 @@ name: persistable-record-version: 0.4.1.0+version: 0.4.1.1 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,11 @@ license-file: LICENSE author: Kei Hibino maintainer: ex8k.hibino@gmail.com-copyright: Copyright (c) 2013-2016 Kei Hibino+copyright: Copyright (c) 2013-2017 Kei Hibino category: Database build-type: Simple cabal-version: >=1.10-tested-with: GHC == 8.0.1+tested-with: GHC == 8.0.1, GHC == 8.0.2 , GHC == 7.10.1, GHC == 7.10.2, GHC == 7.10.3 , GHC == 7.8.1, GHC == 7.8.2, GHC == 7.8.3, GHC == 7.8.4 , GHC == 7.6.1, GHC == 7.6.2, GHC == 7.6.3@@ -38,9 +38,18 @@ , names-th hs-source-dirs: src ghc-options: -Wall- default-language: Haskell2010 +test-suite nested+ build-depends: base <5+ , quickcheck-simple+ , persistable-record++ type: exitcode-stdio-1.0+ main-is: nestedEq.hs+ hs-source-dirs: test+ ghc-options: -Wall+ default-language: Haskell2010 source-repository head type: git
+ test/nestedEq.hs view
@@ -0,0 +1,67 @@+{-# OPTIONS -fno-warn-orphans #-}+{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}++import Control.Applicative ((<$>), (<*>))+import Test.QuickCheck.Simple (defaultMain, eqTest)++import Database.Record+ (PersistableType (..),+ FromSql (..), valueRecordFromSql, toRecord,+ ToSql (..), valueRecordToSql)+import Database.Record.Persistable (unsafePersistableSqlTypeFromNull)+++instance PersistableType String where+ persistableType = unsafePersistableSqlTypeFromNull "<null>"+++instance FromSql String String where+ recordFromSql = valueRecordFromSql id++instance FromSql String Int where+ recordFromSql = valueRecordFromSql read++instance ToSql String String where+ recordToSql = valueRecordToSql id++instance ToSql String Int where+ recordToSql = valueRecordToSql show+++data User =+ User+ { uid :: Int+ , uname :: String+ , note :: String+ } deriving (Eq, Show)++data Group =+ Group+ { gid :: Int+ , gname :: String+ } deriving (Eq, Show)++data Membership =+ Membership+ { user :: User+ , group :: Group+ } deriving (Eq, Show)++instance FromSql String User where+ recordFromSql = User <$> recordFromSql <*> recordFromSql <*> recordFromSql++instance FromSql String Group where+ recordFromSql = Group <$> recordFromSql <*> recordFromSql++instance FromSql String Membership where+ recordFromSql = Membership <$> recordFromSql <*> recordFromSql++main :: IO ()+main =+ defaultMain+ [ eqTest+ "nestedEq"+ (Membership { user = User { uid = 1, uname = "Kei Hibino", note = "HRR developer" }+ , group = Group { gid = 1, gname = "Haskellers" }+ } )+ (toRecord ["1", "Kei Hibino", "HRR developer", "1", "Haskellers"]) ]