packages feed

hpqtypes 1.9.0.1 → 1.9.1.0

raw patch · 3 files changed

+30/−17 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Database.PostgreSQL.PQTypes.JSON: aesonFromSQL :: FromJSON t => Maybe PGbytea -> IO t
+ Database.PostgreSQL.PQTypes.JSON: aesonToSQL :: ToJSON t => t -> ParamAllocator -> (Ptr PGbytea -> IO r) -> IO r

Files

CHANGELOG.md view
@@ -1,3 +1,6 @@+# hpqtypes-1.9.1.0 (2020-09-14)+* Expose aesonFromSQL and aesonToSQL for convenience.+ # hpqtypes-1.9.0.1 (2020-09-04) * Remove upper bounds of dependencies. 
hpqtypes.cabal view
@@ -1,5 +1,5 @@ name:                hpqtypes-version:             1.9.0.1+version:             1.9.1.0 synopsis:            Haskell bindings to libpqtypes  description:         Efficient and easy-to-use bindings to (slightly modified)
src/Database/PostgreSQL/PQTypes/JSON.hs view
@@ -1,6 +1,9 @@-module Database.PostgreSQL.PQTypes.JSON (-    JSON(..)+{-# LANGUAGE TypeApplications #-}+module Database.PostgreSQL.PQTypes.JSON+  ( JSON(..)   , JSONB(..)+  , aesonFromSQL+  , aesonToSQL   ) where  import Data.Aeson@@ -39,11 +42,11 @@  instance FromSQL (JSON Value) where   type PQBase (JSON Value) = PGbytea-  fromSQL = valueFromSQL JSON+  fromSQL = fmap JSON . aesonFromSQL  instance ToSQL (JSON Value) where   type PQDest (JSON Value) = PGbytea-  toSQL = valueToSQL unJSON+  toSQL = aesonToSQL . unJSON  ---------------------------------------- @@ -72,24 +75,31 @@  instance FromSQL (JSONB Value) where   type PQBase (JSONB Value) = PGbytea-  fromSQL = valueFromSQL JSONB+  fromSQL = fmap JSONB . aesonFromSQL  instance ToSQL (JSONB Value) where   type PQDest (JSONB Value) = PGbytea-  toSQL = valueToSQL unJSONB+  toSQL = aesonToSQL . unJSONB  ---------------------------------------- -valueFromSQL :: (Value -> json) -> Maybe PGbytea -> IO json-valueFromSQL jsonCon mbase = do+-- | Helper for defining 'FromSQL' instance for a type with 'FromJSON' instance.+--+-- @since 1.9.1.0+aesonFromSQL :: FromJSON t => Maybe PGbytea -> IO t+aesonFromSQL mbase = do   evalue <- eitherDecodeStrict' <$> fromSQL mbase   case evalue of-    Left err -> E.throwIO . E.ErrorCall $ "valueFromSQL: " ++ err-    Right value -> return $ jsonCon value+    Left err -> E.throwIO . E.ErrorCall $ "aesonFromSQL: " ++ err+    Right value -> return value -valueToSQL :: (json -> Value)-           -> json-           -> ParamAllocator-           -> (Ptr PGbytea -> IO r)-           -> IO r-valueToSQL jsonDecon = toSQL . BSL.toStrict . encode . jsonDecon+-- | Helper for defining 'ToSQL' instance for a type with 'ToJSON' instance.+--+-- @since 1.9.1.0+aesonToSQL+  :: ToJSON t+  => t+  -> ParamAllocator+  -> (Ptr PGbytea -> IO r)+  -> IO r+aesonToSQL = toSQL . BSL.toStrict . encode