packages feed

rel8-1.0.0.0: src/Rel8/Query/Opaleye.hs

module Rel8.Query.Opaleye
  ( fromOpaleye
  , toOpaleye
  , mapOpaleye
  , zipOpaleyeWith
  )
where

-- base
import Prelude

-- opaleye
import qualified Opaleye.Select as Opaleye

-- rel8
import {-# SOURCE #-} Rel8.Query ( Query( Query ) )


fromOpaleye :: Opaleye.Select a -> Query a
fromOpaleye = Query


toOpaleye :: Query a -> Opaleye.Select a
toOpaleye (Query a) = a


mapOpaleye :: (Opaleye.Select a -> Opaleye.Select b) -> Query a -> Query b
mapOpaleye f = fromOpaleye . f . toOpaleye


zipOpaleyeWith :: ()
  => (Opaleye.Select a -> Opaleye.Select b -> Opaleye.Select c)
  -> Query a -> Query b -> Query c
zipOpaleyeWith f a b = fromOpaleye $ f (toOpaleye a) (toOpaleye b)