on 3c5f54c help sign in
rel8/src/Rel8/Query/Filter.hs
29 lines 567 B history raw
1module Rel8.Query.Filter
2 ( filter
3 , where_
4 )
5where
7-- base
8import Prelude hiding ( filter )
10-- opaleye
11import qualified Opaleye.Operators as Opaleye
13-- profunctors
14import Data.Profunctor ( lmap )
16-- rel8
17import Rel8.Expr ( Expr )
18import Rel8.Expr.Opaleye ( toColumn, toPrimExpr )
19import Rel8.Query ( Query )
20import Rel8.Query.Opaleye ( fromOpaleye )
23filter :: (a -> Expr Bool) -> a -> Query a
24filter f a = a <$ where_ (f a)
27where_ :: Expr Bool -> Query ()
28where_ condition =
29 fromOpaleye $ lmap (\_ -> toColumn $ toPrimExpr condition) Opaleye.restrict