esqueleto 1.2.3 → 1.2.4
raw patch · 5 files changed
+75/−1 lines, 5 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Database.Esqueleto: avg_ :: (Esqueleto query expr backend, PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+ Database.Esqueleto: ceiling_ :: (Esqueleto query expr backend, PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+ Database.Esqueleto: floor_ :: (Esqueleto query expr backend, PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+ Database.Esqueleto: max_ :: (Esqueleto query expr backend, PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+ Database.Esqueleto: min_ :: (Esqueleto query expr backend, PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+ Database.Esqueleto: random_ :: (Esqueleto query expr backend, PersistField a) => expr (Value a)
+ Database.Esqueleto: round_ :: (Esqueleto query expr backend, PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+ Database.Esqueleto: sum_ :: (Esqueleto query expr backend, PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+ Database.Esqueleto.Internal.Language: avg_ :: (Esqueleto query expr backend, PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+ Database.Esqueleto.Internal.Language: ceiling_ :: (Esqueleto query expr backend, PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+ Database.Esqueleto.Internal.Language: floor_ :: (Esqueleto query expr backend, PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+ Database.Esqueleto.Internal.Language: max_ :: (Esqueleto query expr backend, PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+ Database.Esqueleto.Internal.Language: min_ :: (Esqueleto query expr backend, PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+ Database.Esqueleto.Internal.Language: random_ :: (Esqueleto query expr backend, PersistField a) => expr (Value a)
+ Database.Esqueleto.Internal.Language: round_ :: (Esqueleto query expr backend, PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
+ Database.Esqueleto.Internal.Language: sum_ :: (Esqueleto query expr backend, PersistField a, PersistField b) => expr (Value a) -> expr (Value b)
Files
- esqueleto.cabal +1/−1
- src/Database/Esqueleto.hs +1/−0
- src/Database/Esqueleto/Internal/Language.hs +10/−0
- src/Database/Esqueleto/Internal/Sql.hs +9/−0
- test/Test.hs +54/−0
esqueleto.cabal view
@@ -1,5 +1,5 @@ name: esqueleto-version: 1.2.3+version: 1.2.4 synopsis: Bare bones, type-safe EDSL for SQL queries on persistent backends. homepage: https://github.com/meteficha/esqueleto license: BSD3
src/Database/Esqueleto.hs view
@@ -43,6 +43,7 @@ , val, isNothing, just, nothing, countRows, count, not_ , (==.), (>=.), (>.), (<=.), (<.), (!=.), (&&.), (||.) , (+.), (-.), (/.), (*.)+ , random_, sum_, round_, ceiling_, floor_, avg_, min_, max_ , like, (%), concat_, (++.) , subList_select, subList_selectDistinct, valList , in_, notIn, exists, notExists
src/Database/Esqueleto/Internal/Language.hs view
@@ -231,6 +231,16 @@ (/.) :: PersistField a => expr (Value a) -> expr (Value a) -> expr (Value a) (*.) :: PersistField a => expr (Value a) -> expr (Value a) -> expr (Value a) ++ random_ :: PersistField a => expr (Value a)+ round_ :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b)+ ceiling_ :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b)+ floor_ :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b)+ sum_ :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b)+ min_ :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b)+ max_ :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b)+ avg_ :: (PersistField a, PersistField b) => expr (Value a) -> expr (Value b)+ -- | @LIKE@ operator. like :: (PersistField s, IsString s) => expr (Value s) -> expr (Value s) -> expr (Value Bool) -- | The string @'%'@. May be useful while using 'like' and
src/Database/Esqueleto/Internal/Sql.hs view
@@ -333,6 +333,15 @@ (/.) = unsafeSqlBinOp " / " (*.) = unsafeSqlBinOp " * " + random_ = unsafeSqlValue "RANDOM()"+ sum_ = unsafeSqlFunction "SUM"+ round_ = unsafeSqlFunction "ROUND"+ ceiling_ = unsafeSqlFunction "CEILING"+ floor_ = unsafeSqlFunction "FLOOR"+ avg_ = unsafeSqlFunction "AVG"+ min_ = unsafeSqlFunction "MIN"+ max_ = unsafeSqlFunction "MAX"+ like = unsafeSqlBinOp " LIKE " (%) = unsafeSqlValue "'%'" concat_ = unsafeSqlFunction "CONCAT"
test/Test.hs view
@@ -265,6 +265,60 @@ return p liftIO $ ret `shouldBe` [ p3e ] + it "works with sum_" $+ run $ do+ _ <- insert' p1+ _ <- insert' p2+ _ <- insert' p3+ _ <- insert' p4+ ret <- select $+ from $ \p->+ return $ sum_ (p ^. PersonAge)+ liftIO $ ret `shouldBe` [ Value (36 + 17 + 17 :: Int) ]++ it "works with sum_" $+ run $ do+ _ <- insert' p1+ _ <- insert' p2+ _ <- insert' p3+ _ <- insert' p4+ ret <- select $+ from $ \p->+ return $ avg_ (p ^. PersonAge)+ liftIO $ ret `shouldBe` [ Value ((36 + 17 + 17) / 3 :: Double) ]++ it "works with min_" $+ run $ do+ _ <- insert' p1+ _ <- insert' p2+ _ <- insert' p3+ _ <- insert' p4+ ret <- select $+ from $ \p->+ return $ min_ (p ^. PersonAge)+ liftIO $ ret `shouldBe` [ Value (17 :: Int) ]++ it "works with max_" $+ run $ do+ _ <- insert' p1+ _ <- insert' p2+ _ <- insert' p3+ _ <- insert' p4+ ret <- select $+ from $ \p->+ return $ max_ (p ^. PersonAge)+ liftIO $ ret `shouldBe` [ Value (36 :: Int) ]++ it "works with random_" $+ run $ do+ ret <- select $ return (random_ :: SqlExpr (Value Int))+ return ()++ it "works with round_" $+ run $ do+ ret <- select $ return $ round_ (val (16.2 :: Double))+ liftIO $ ret `shouldBe` [ Value (16 :: Double) ]+ it "works with isNothing" $ run $ do _ <- insert' p1