opaleye 0.9.1.0 → 0.9.2.0
raw patch · 4 files changed
+43/−7 lines, 4 filesdep ~aesonPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: aeson
API changes (from Hackage documentation)
+ Opaleye.Internal.MaybeFields: maybeFieldsToNullable :: MaybeFields (Field a) -> FieldNullable a
+ Opaleye.Internal.MaybeFields: nullableToMaybeFields :: FieldNullable a -> MaybeFields (Field a)
+ Opaleye.MaybeFields: maybeFieldsToNullable :: MaybeFields (Field a) -> FieldNullable a
+ Opaleye.MaybeFields: nullableToMaybeFields :: FieldNullable a -> MaybeFields (Field a)
Files
- CHANGELOG.md +4/−0
- opaleye.cabal +1/−1
- src/Opaleye/Internal/MaybeFields.hs +28/−3
- src/Opaleye/MaybeFields.hs +10/−3
CHANGELOG.md view
@@ -1,3 +1,7 @@+## 0.9.2.0++* Added `nullableToMaybeFields` and `maybeFieldsToNullable`+ ## 0.9.1.0 * Added `distinctOnExplicit` and `distinctOnByExplicit`
opaleye.cabal view
@@ -1,6 +1,6 @@ name: opaleye copyright: Copyright (c) 2014-2018 Purely Agile Limited; 2019-2022 Tom Ellis-version: 0.9.1.0+version: 0.9.2.0 synopsis: An SQL-generating DSL targeting PostgreSQL description: An SQL-generating DSL targeting PostgreSQL. Allows Postgres queries to be written within Haskell in a
src/Opaleye/Internal/MaybeFields.hs view
@@ -42,7 +42,9 @@ import qualified Database.PostgreSQL.Simple.FromRow as PGSR --- | The Opaleye analogue of 'Data.Maybe.Maybe'+-- | The Opaleye analogue of 'Data.Maybe.Maybe'. A value of type+-- @MaybeFields a@ either contains a value of type @a@, or it contains+-- nothing. data MaybeFields fields = MaybeFields { mfPresent :: Opaleye.Column.Column Opaleye.SqlTypes.SqlBool@@ -105,13 +107,20 @@ fromMaybeFields :: PP.Default IfPP b b => b -> MaybeFields b -> b fromMaybeFields = fromMaybeFieldsExplicit PP.def --- | The Opaleye analogue of 'Data.Maybe.maybeToList'+-- | The Opaleye analogue of 'Data.Maybe.maybeToList'. Unless you are+-- using arrow notation you'll probably find 'catMaybeFields' easier+-- to use. maybeFieldsToSelect :: SelectArr (MaybeFields a) a maybeFieldsToSelect = proc mf -> do restrict -< mfPresent mf returnA -< mfFields mf --- | The Opaleye analogue of 'Data.Maybe.catMaybes'+-- | The Opaleye analogue of 'Data.Maybe.catMaybes'. Most commonly+-- you will want to use this at type+--+-- @+-- catMaybeFields :: Select (MaybeFields a) -> Select a+-- @ catMaybeFields :: SelectArr i (MaybeFields a) -> SelectArr i a catMaybeFields = (>>> maybeFieldsToSelect) @@ -172,6 +181,22 @@ a <- q -< () restrict -< cond a returnA -< a++-- | Convert @NULL@ to 'nothingFields' and non-@NULL@ to a 'justFields'+nullableToMaybeFields :: Opaleye.Field.FieldNullable a -> MaybeFields (Field a)+nullableToMaybeFields x = MaybeFields+ { mfPresent = Opaleye.Internal.Operators.not (Opaleye.Field.isNull x)+ , mfFields = unsafeFromNonNull x+ }+ where unsafeFromNonNull :: Opaleye.Field.FieldNullable a -> Field a+ unsafeFromNonNull = Opaleye.Field.unsafeCoerceField++-- | Convert 'nothingFields' to @NULL@ to a 'justFields' to non-@NULL@+maybeFieldsToNullable :: MaybeFields (Field a) -> Opaleye.Field.FieldNullable a+maybeFieldsToNullable x =+ IC.unsafeIfThenElse (mfPresent x)+ (Opaleye.Field.toNullable (mfFields x))+ Opaleye.Field.null fromFieldsMaybeFields :: RQ.FromFields fields haskells -> RQ.FromFields (MaybeFields fields) (Maybe haskells)
src/Opaleye/MaybeFields.hs view
@@ -7,17 +7,24 @@ -- 'Opaleye.Join.optionalRestrict' and 'Opaleye.Join.optional'. module Opaleye.MaybeFields (+ -- * 'MaybeFields' type MaybeFields,+ -- * Creating a 'MaybeFields' nothingFields,+ nothingFieldsOfTypeOf, justFields,+ nullableToMaybeFields,+ -- * Using a 'MaybeFields' matchMaybe, fromMaybeFields, maybeFields,- maybeFieldsToSelect,- nothingFieldsOfTypeOf,- catMaybeFields,+ maybeFieldsToNullable,+ -- * Creating a 'Select' which returns 'MaybeFields' Opaleye.Join.optional, Opaleye.MaybeFields.traverseMaybeFields,+ -- * Using a 'Select' which returns 'MaybeFields'+ catMaybeFields,+ maybeFieldsToSelect, -- * Adaptors Nullspec, nullspecField,