{-# language FlexibleContexts #-}
module Rel8.Query.Set
( union, unionAll
, intersect, intersectAll
, except, exceptAll
)
where
import Prelude ()
import qualified Opaleye.Binary as Opaleye
import Rel8.Expr ( Expr )
import {-# SOURCE #-} Rel8.Query ( Query )
import Rel8.Query.Opaleye ( zipOpaleyeWith )
import Rel8.Table ( Table )
import Rel8.Table.Eq ( EqTable )
import Rel8.Table.Opaleye ( binaryspec )
union :: EqTable a => Query a -> Query a -> Query a
union :: forall a. EqTable a => Query a -> Query a -> Query a
union = forall a b c.
(Select a -> Select b -> Select c) -> Query a -> Query b -> Query c
zipOpaleyeWith (forall fields fields'.
Binaryspec fields fields'
-> Select fields -> Select fields -> Select fields'
Opaleye.unionExplicit forall a. Table Expr a => Binaryspec a a
binaryspec)
unionAll :: Table Expr a => Query a -> Query a -> Query a
unionAll :: forall a. Table Expr a => Query a -> Query a -> Query a
unionAll = forall a b c.
(Select a -> Select b -> Select c) -> Query a -> Query b -> Query c
zipOpaleyeWith (forall fields fields'.
Binaryspec fields fields'
-> Select fields -> Select fields -> Select fields'
Opaleye.unionAllExplicit forall a. Table Expr a => Binaryspec a a
binaryspec)
intersect :: EqTable a => Query a -> Query a -> Query a
intersect :: forall a. EqTable a => Query a -> Query a -> Query a
intersect = forall a b c.
(Select a -> Select b -> Select c) -> Query a -> Query b -> Query c
zipOpaleyeWith (forall fields fields'.
Binaryspec fields fields'
-> Select fields -> Select fields -> Select fields'
Opaleye.intersectExplicit forall a. Table Expr a => Binaryspec a a
binaryspec)
intersectAll :: EqTable a => Query a -> Query a -> Query a
intersectAll :: forall a. EqTable a => Query a -> Query a -> Query a
intersectAll = forall a b c.
(Select a -> Select b -> Select c) -> Query a -> Query b -> Query c
zipOpaleyeWith (forall fields fields'.
Binaryspec fields fields'
-> Select fields -> Select fields -> Select fields'
Opaleye.intersectAllExplicit forall a. Table Expr a => Binaryspec a a
binaryspec)
except :: EqTable a => Query a -> Query a -> Query a
except :: forall a. EqTable a => Query a -> Query a -> Query a
except = forall a b c.
(Select a -> Select b -> Select c) -> Query a -> Query b -> Query c
zipOpaleyeWith (forall fields fields'.
Binaryspec fields fields'
-> Select fields -> Select fields -> Select fields'
Opaleye.exceptExplicit forall a. Table Expr a => Binaryspec a a
binaryspec)
exceptAll :: EqTable a => Query a -> Query a -> Query a
exceptAll :: forall a. EqTable a => Query a -> Query a -> Query a
exceptAll = forall a b c.
(Select a -> Select b -> Select c) -> Query a -> Query b -> Query c
zipOpaleyeWith (forall fields fields'.
Binaryspec fields fields'
-> Select fields -> Select fields -> Select fields'
Opaleye.exceptAllExplicit forall a. Table Expr a => Binaryspec a a
binaryspec)