commit
dfc20d5ae8
@ -44,7 +44,7 @@ module Database.Esqueleto
|
|||||||
, val, isNothing, just, nothing, joinV, withNonNull
|
, val, isNothing, just, nothing, joinV, withNonNull
|
||||||
, countRows, count, countDistinct
|
, countRows, count, countDistinct
|
||||||
, not_, (==.), (>=.), (>.), (<=.), (<.), (!=.), (&&.), (||.)
|
, not_, (==.), (>=.), (>.), (<=.), (<.), (!=.), (&&.), (||.)
|
||||||
, (+.), (-.), (/.), (*.)
|
, between, (+.), (-.), (/.), (*.)
|
||||||
, random_, round_, ceiling_, floor_
|
, random_, round_, ceiling_, floor_
|
||||||
, min_, max_, sum_, avg_, castNum, castNumM
|
, min_, max_, sum_, avg_, castNum, castNumM
|
||||||
, coalesce, coalesceDefault
|
, coalesce, coalesceDefault
|
||||||
|
|||||||
@ -352,6 +352,11 @@ class (Functor query, Applicative query, Monad query) =>
|
|||||||
(/.) :: PersistField a => expr (Value a) -> expr (Value a) -> expr (Value a)
|
(/.) :: PersistField a => expr (Value a) -> expr (Value a) -> expr (Value a)
|
||||||
(*.) :: PersistField a => expr (Value a) -> expr (Value a) -> expr (Value a)
|
(*.) :: PersistField a => expr (Value a) -> expr (Value a) -> expr (Value a)
|
||||||
|
|
||||||
|
-- | @BETWEEN@ operator
|
||||||
|
--
|
||||||
|
-- /Since: 2.8.0/
|
||||||
|
between :: PersistField typ => expr (Value typ) -> (expr (Value typ), expr (Value typ)) -> expr (Value Bool)
|
||||||
|
|
||||||
|
|
||||||
random_ :: (PersistField a, Num a) => expr (Value a)
|
random_ :: (PersistField a, Num a) => expr (Value a)
|
||||||
round_ :: (PersistField a, Num a, PersistField b, Num b) => expr (Value a) -> expr (Value b)
|
round_ :: (PersistField a, Num a, PersistField b, Num b) => expr (Value a) -> expr (Value b)
|
||||||
|
|||||||
@ -97,6 +97,7 @@ instance Exception EsqueletoError
|
|||||||
|
|
||||||
data CompositeKeyError =
|
data CompositeKeyError =
|
||||||
NotError
|
NotError
|
||||||
|
| BetweenError
|
||||||
| ToInsertionError
|
| ToInsertionError
|
||||||
| CombineInsertionError
|
| CombineInsertionError
|
||||||
| FoldHelpError
|
| FoldHelpError
|
||||||
@ -533,6 +534,12 @@ instance Esqueleto SqlQuery SqlExpr SqlBackend where
|
|||||||
(/.) = unsafeSqlBinOp " / "
|
(/.) = unsafeSqlBinOp " / "
|
||||||
(*.) = unsafeSqlBinOp " * "
|
(*.) = unsafeSqlBinOp " * "
|
||||||
|
|
||||||
|
a `between` (ERaw _ f, ERaw _ g) = unsafeSqlBinOp " BETWEEN " a $ ERaw Never $ \x ->
|
||||||
|
let (_, fv) = f x
|
||||||
|
(_, gv) = g x
|
||||||
|
in (" ? AND ? ", fv ++ gv)
|
||||||
|
_ `between` _ = throw $ CompositeKeyErr BetweenError
|
||||||
|
|
||||||
random_ = unsafeSqlValue "RANDOM()"
|
random_ = unsafeSqlValue "RANDOM()"
|
||||||
round_ = unsafeSqlFunction "ROUND"
|
round_ = unsafeSqlFunction "ROUND"
|
||||||
ceiling_ = unsafeSqlFunction "CEILING"
|
ceiling_ = unsafeSqlFunction "CEILING"
|
||||||
|
|||||||
@ -629,6 +629,16 @@ testSelectWhere run = do
|
|||||||
return p
|
return p
|
||||||
liftIO $ ret `shouldBe` [ p3e ]
|
liftIO $ ret `shouldBe` [ p3e ]
|
||||||
|
|
||||||
|
it "works for a simple example with between and [uses just . val]" $
|
||||||
|
run $ do
|
||||||
|
p1e <- insert' p1
|
||||||
|
_ <- insert' p2
|
||||||
|
_ <- insert' p3
|
||||||
|
ret <- select $
|
||||||
|
from $ \p -> do
|
||||||
|
where_ ((p ^. PersonAge) `between` (just $ val 20, just $ val 40))
|
||||||
|
return p
|
||||||
|
liftIO $ ret `shouldBe` [ p1e ]
|
||||||
it "works with avg_" $
|
it "works with avg_" $
|
||||||
run $ do
|
run $ do
|
||||||
_ <- insert' p1
|
_ <- insert' p1
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user