Add between function
This commit is contained in:
parent
5f98e7b253
commit
6847f8cbc9
@ -44,7 +44,7 @@ module Database.Esqueleto
|
||||
, val, isNothing, just, nothing, joinV, withNonNull
|
||||
, countRows, count, countDistinct
|
||||
, not_, (==.), (>=.), (>.), (<=.), (<.), (!=.), (&&.), (||.)
|
||||
, (+.), (-.), (/.), (*.)
|
||||
, between, (+.), (-.), (/.), (*.)
|
||||
, random_, round_, ceiling_, floor_
|
||||
, min_, max_, sum_, avg_, castNum, castNumM
|
||||
, coalesce, coalesceDefault
|
||||
|
||||
@ -352,6 +352,8 @@ 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)
|
||||
|
||||
between :: PersistField typ => expr (Value typ) -> expr (Value typ) -> expr (Value typ) -> expr (Value Bool)
|
||||
|
||||
|
||||
random_ :: (PersistField a, Num a) => expr (Value a)
|
||||
round_ :: (PersistField a, Num a, PersistField b, Num b) => expr (Value a) -> expr (Value b)
|
||||
|
||||
@ -533,6 +533,12 @@ instance Esqueleto SqlQuery SqlExpr SqlBackend where
|
||||
(/.) = unsafeSqlBinOp " / "
|
||||
(*.) = unsafeSqlBinOp " * "
|
||||
|
||||
between a@(ERaw _ _) (ERaw _ f) (ERaw _ g) = unsafeSqlBinOp " BETWEEN " a $ ERaw Never $ \x ->
|
||||
let (_, fv) = f x
|
||||
(_, gv) = g x
|
||||
in (" ? AND ? ", fv ++ gv)
|
||||
between _ _ _ = throw (CompositeKeyErr NotError)
|
||||
|
||||
random_ = unsafeSqlValue "RANDOM()"
|
||||
round_ = unsafeSqlFunction "ROUND"
|
||||
ceiling_ = unsafeSqlFunction "CEILING"
|
||||
|
||||
@ -630,6 +630,16 @@ testSelectWhere run = do
|
||||
return p
|
||||
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_ (between (p ^. PersonAge) (just $ val 20) (just $ val 40))
|
||||
return p
|
||||
liftIO $ ret `shouldBe` [ p1e ]
|
||||
it "works with avg_" $
|
||||
run $ do
|
||||
_ <- insert' p1
|
||||
|
||||
Loading…
Reference in New Issue
Block a user