beam-core 0.9.1.0 → 0.9.2.0
raw patch · 5 files changed
+58/−17 lines, 5 filesdep ~bytestringdep ~dlistdep ~ghc-primPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: bytestring, dlist, ghc-prim, hashable, time, vector-sized
API changes (from Hackage documentation)
+ Database.Beam.Query: like_' :: (BeamSqlBackendIsString be left, BeamSqlBackendIsString be right, BeamSqlBackend be) => QGenExpr ctxt be s left -> QGenExpr ctxt be s right -> QGenExpr ctxt be s Bool
+ Database.Beam.Query: similarTo_' :: (BeamSqlBackendIsString be left, BeamSqlBackendIsString be right, BeamSql99ExpressionBackend be) => QGenExpr ctxt be s left -> QGenExpr ctxt be s right -> QGenExpr ctxt be s left
Files
- ChangeLog.md +7/−0
- Database/Beam/Backend/SQL/Row.hs +8/−1
- Database/Beam/Query/Operator.hs +35/−8
- beam-core.cabal +7/−7
- test/Database/Beam/Test/SQL.hs +1/−1
ChangeLog.md view
@@ -1,3 +1,10 @@+# 0.9.2.0++## Added features++ * Heterogeneous variants of `like_` and `similarTo_`: `like_'` and `similarTo_'`+ * GHC 9.2 and 9.0 support+ # 0.9.1.0 ## Added features
Database/Beam/Backend/SQL/Row.hs view
@@ -3,6 +3,7 @@ {-# LANGUAGE UndecidableInstances #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE LambdaCase #-} {-# LANGUAGE PolyKinds #-} module Database.Beam.Backend.SQL.Row@@ -57,7 +58,11 @@ ParseOneField :: (BackendFromField be a, Typeable a) => (a -> f) -> FromBackendRowF be f Alt :: FromBackendRowM be a -> FromBackendRowM be a -> (a -> f) -> FromBackendRowF be f FailParseWith :: BeamRowReadError -> FromBackendRowF be f-deriving instance Functor (FromBackendRowF be)+instance Functor (FromBackendRowF be) where+ fmap f = \case+ ParseOneField p -> ParseOneField $ f . p+ Alt a b p -> Alt a b $ f . p+ FailParseWith e -> FailParseWith e newtype FromBackendRowM be a = FromBackendRowM (F (FromBackendRowF be) a) deriving (Functor, Applicative) @@ -192,7 +197,9 @@ pure ())) valuesNeeded be _ = valuesNeeded be (Proxy @x) +#if !MIN_VERSION_base(4, 16, 0) deriving instance Generic (a, b, c, d, e, f, g, h)+#endif instance (BeamBackend be, FromBackendRow be t) => FromBackendRow be (Tagged tag t) where fromBackendRow = Tagged <$> fromBackendRow
Database/Beam/Query/Operator.hs view
@@ -6,6 +6,7 @@ , (&&?.), (||?.), sqlNot_ , like_, similarTo_+ , like_', similarTo_' , concat_ ) where@@ -59,17 +60,43 @@ infixr 2 ||., ||?. -- | SQL @LIKE@ operator-like_ :: ( BeamSqlBackendIsString be text- , BeamSqlBackend be )- => QGenExpr ctxt be s text -> QGenExpr ctxt be s text -> QGenExpr ctxt be s Bool-like_ (QExpr scrutinee) (QExpr search) =+like_+ :: (BeamSqlBackendIsString be text, BeamSqlBackend be)+ => QGenExpr ctxt be s text+ -> QGenExpr ctxt be s text+ -> QGenExpr ctxt be s Bool+like_ = like_'++-- | SQL @LIKE@ operator but heterogeneous over the text type+like_'+ :: ( BeamSqlBackendIsString be left+ , BeamSqlBackendIsString be right+ , BeamSqlBackend be+ )+ => QGenExpr ctxt be s left+ -> QGenExpr ctxt be s right+ -> QGenExpr ctxt be s Bool+like_' (QExpr scrutinee) (QExpr search) = QExpr (liftA2 likeE scrutinee search) -- | SQL99 @SIMILAR TO@ operator-similarTo_ :: ( BeamSqlBackendIsString be text- , BeamSql99ExpressionBackend be )- => QGenExpr ctxt be s text -> QGenExpr ctxt be s text -> QGenExpr ctxt be s text-similarTo_ (QExpr scrutinee) (QExpr search) =+similarTo_+ :: (BeamSqlBackendIsString be text, BeamSql99ExpressionBackend be)+ => QGenExpr ctxt be s text+ -> QGenExpr ctxt be s text+ -> QGenExpr ctxt be s text+similarTo_ = similarTo_'++-- | SQL99 @SIMILAR TO@ operator but heterogeneous over the text type+similarTo_'+ :: ( BeamSqlBackendIsString be left+ , BeamSqlBackendIsString be right+ , BeamSql99ExpressionBackend be+ )+ => QGenExpr ctxt be s left+ -> QGenExpr ctxt be s right+ -> QGenExpr ctxt be s left+similarTo_' (QExpr scrutinee) (QExpr search) = QExpr (liftA2 similarToE scrutinee search) infix 4 `like_`, `similarTo_`
beam-core.cabal view
@@ -2,7 +2,7 @@ -- see http://haskell.org/cabal/users-guide/ name: beam-core-version: 0.9.1.0+version: 0.9.2.0 synopsis: Type-safe, feature-complete SQL query and manipulation interface for Haskell description: Beam is a Haskell library for type-safe querying and manipulation of SQL databases. Beam is modular and supports various backends. In order to use beam, you will need to use@@ -63,19 +63,19 @@ build-depends: base >=4.9 && <5.0, aeson >=0.11 && <1.6, text >=1.2.2.0 && <1.3,- bytestring >=0.10 && <0.11,+ bytestring >=0.10 && <0.12, mtl >=2.2.1 && <2.3, microlens >=0.4 && <0.5,- ghc-prim >=0.5 && <0.7,+ ghc-prim >=0.5 && <0.9, free >=4.12 && <5.2,- dlist >=0.7.1.2 && <0.9,- time >=1.6 && <1.10,- hashable >=1.2.4.0 && <1.4,+ dlist >=0.7.1.2 && <1.1,+ time >=1.6 && <1.12,+ hashable >=1.2.4.0 && <1.5, network-uri >=2.6 && <2.7, containers >=0.5 && <0.7, scientific >=0.3 && <0.4, vector >=0.11 && <0.13,- vector-sized >=0.5 && <1.5,+ vector-sized >=0.5 && <1.6, tagged >=0.8 && <0.9 Default-language: Haskell2010
test/Database/Beam/Test/SQL.hs view
@@ -868,7 +868,7 @@ related :: TestTree related = testCase "related_ generate the correct ON conditions" $- do SqlSelect Select { .. } <-+ do SqlSelect Select{} <- pure $ selectMock $ do r <- all_ (_roles employeeDbSettings) e <- related_ (_employees employeeDbSettings) (_roleForEmployee r)