beam-core-0.6.0.0: Database/Beam/Query/Operator.hs
module Database.Beam.Query.Operator
( -- ** General-purpose operators
(&&.), (||.), not_, div_, mod_
, like_, similarTo_
, isTrue_, isNotTrue_
, isFalse_, isNotFalse_
, isUnknown_, isNotUnknown_
, concat_
) where
import Database.Beam.Backend.SQL
import Database.Beam.Query.Internal
import Control.Applicative
import qualified Data.Text as T
-- | SQL @AND@ operator
(&&.) :: IsSql92ExpressionSyntax syntax
=> QGenExpr context syntax s Bool
-> QGenExpr context syntax s Bool
-> QGenExpr context syntax s Bool
(&&.) = qBinOpE andE
-- | SQL @OR@ operator
(||.) :: IsSql92ExpressionSyntax syntax
=> QGenExpr context syntax s Bool
-> QGenExpr context syntax s Bool
-> QGenExpr context syntax s Bool
(||.) = qBinOpE orE
infixr 3 &&.
infixr 2 ||.
-- | SQL @LIKE@ operator
like_ ::
( IsSqlExpressionSyntaxStringType syntax text
, IsSql92ExpressionSyntax syntax ) =>
QExpr syntax s text -> QExpr syntax s text -> QExpr syntax s Bool
like_ (QExpr scrutinee) (QExpr search) =
QExpr (liftA2 likeE scrutinee search)
-- | SQL99 @SIMILAR TO@ operator
similarTo_ ::
( IsSqlExpressionSyntaxStringType syntax text
, IsSql99ExpressionSyntax syntax ) =>
QExpr syntax s text -> QExpr syntax s text -> QExpr syntax s text
similarTo_ (QExpr scrutinee) (QExpr search) =
QExpr (liftA2 similarToE scrutinee search)
-- | SQL @NOT@ operator
not_ :: forall syntax context s.
IsSql92ExpressionSyntax syntax
=> QGenExpr context syntax s Bool
-> QGenExpr context syntax s Bool
not_ (QExpr a) = QExpr (fmap notE a)
-- | SQL @/@ operator
div_ :: (Integral a, IsSql92ExpressionSyntax syntax)
=> QGenExpr context syntax s a -> QGenExpr context syntax s a
-> QGenExpr context syntax s a
div_ = qBinOpE divE
-- | SQL @%@ operator
mod_ :: (Integral a, IsSql92ExpressionSyntax syntax)
=> QGenExpr context syntax s a -> QGenExpr context syntax s a
-> QGenExpr context syntax s a
mod_ = qBinOpE modE
-- | SQL @IS TRUE@ operator
isTrue_ :: IsSql92ExpressionSyntax syntax
=> QGenExpr context syntax s a -> QGenExpr context syntax s Bool
isTrue_ (QExpr s) = QExpr (fmap isTrueE s)
-- | SQL @IS NOT TRUE@ operator
isNotTrue_ :: IsSql92ExpressionSyntax syntax
=> QGenExpr context syntax s a -> QGenExpr context syntax s Bool
isNotTrue_ (QExpr s) = QExpr (fmap isNotTrueE s)
-- | SQL @IS FALSE@ operator
isFalse_ :: IsSql92ExpressionSyntax syntax
=> QGenExpr context syntax s a -> QGenExpr context syntax s Bool
isFalse_ (QExpr s) = QExpr (fmap isFalseE s)
-- | SQL @IS NOT FALSE@ operator
isNotFalse_ :: IsSql92ExpressionSyntax syntax
=> QGenExpr context syntax s a -> QGenExpr context syntax s Bool
isNotFalse_ (QExpr s) = QExpr (fmap isNotFalseE s)
-- | SQL @IS UNKNOWN@ operator
isUnknown_ :: IsSql92ExpressionSyntax syntax
=> QGenExpr context syntax s a -> QGenExpr context syntax s Bool
isUnknown_ (QExpr s) = QExpr (fmap isUnknownE s)
-- | SQL @IS NOT UNKNOWN@ operator
isNotUnknown_ :: IsSql92ExpressionSyntax syntax
=> QGenExpr context syntax s a -> QGenExpr context syntax s Bool
isNotUnknown_ (QExpr s) = QExpr (fmap isNotUnknownE s)
-- | SQL @CONCAT@ function
concat_ :: IsSql99ConcatExpressionSyntax syntax
=> [ QGenExpr context syntax s T.Text ] -> QGenExpr context syntax s T.Text
concat_ es = QExpr (concatE <$> mapM (\(QExpr e) -> e) es)