module Opaleye.SQLite.Column (module Opaleye.SQLite.Column,
Column,
Nullable,
unsafeCoerce,
unsafeCoerceColumn) where
import Opaleye.SQLite.Internal.Column (Column, Nullable, unsafeCoerce, unsafeCoerceColumn)
import qualified Opaleye.SQLite.Internal.Column as C
import qualified Opaleye.SQLite.Internal.HaskellDB.PrimQuery as HPQ
import qualified Opaleye.SQLite.PGTypes as T
import Prelude hiding (null)
null :: Column (Nullable a)
null :: Column (Nullable a)
null = PrimExpr -> Column (Nullable a)
forall a. PrimExpr -> Column a
C.Column (Literal -> PrimExpr
HPQ.ConstExpr Literal
HPQ.NullLit)
isNull :: Column (Nullable a) -> Column T.PGBool
isNull :: Column (Nullable a) -> Column PGBool
isNull = UnOp -> Column (Nullable a) -> Column PGBool
forall a b. UnOp -> Column a -> Column b
C.unOp UnOp
HPQ.OpIsNull
matchNullable :: Column b -> (Column a -> Column b) -> Column (Nullable a)
-> Column b
matchNullable :: Column b
-> (Column a -> Column b) -> Column (Nullable a) -> Column b
matchNullable Column b
replacement Column a -> Column b
f Column (Nullable a)
x = Column PGBool -> Column b -> Column b -> Column b
forall pgBool a. Column pgBool -> Column a -> Column a -> Column a
C.unsafeIfThenElse (Column (Nullable a) -> Column PGBool
forall a. Column (Nullable a) -> Column PGBool
isNull Column (Nullable a)
x) Column b
replacement
(Column a -> Column b
f (Column (Nullable a) -> Column a
forall a b. Column a -> Column b
unsafeCoerceColumn Column (Nullable a)
x))
fromNullable :: Column a -> Column (Nullable a) -> Column a
fromNullable :: Column a -> Column (Nullable a) -> Column a
fromNullable = (Column a
-> (Column a -> Column a) -> Column (Nullable a) -> Column a)
-> (Column a -> Column a)
-> Column a
-> Column (Nullable a)
-> Column a
forall a b c. (a -> b -> c) -> b -> a -> c
flip Column a
-> (Column a -> Column a) -> Column (Nullable a) -> Column a
forall b a.
Column b
-> (Column a -> Column b) -> Column (Nullable a) -> Column b
matchNullable Column a -> Column a
forall a. a -> a
id
toNullable :: Column a -> Column (Nullable a)
toNullable :: Column a -> Column (Nullable a)
toNullable = Column a -> Column (Nullable a)
forall a b. Column a -> Column b
unsafeCoerceColumn
maybeToNullable :: Maybe (Column a) -> Column (Nullable a)
maybeToNullable :: Maybe (Column a) -> Column (Nullable a)
maybeToNullable = Column (Nullable a)
-> (Column a -> Column (Nullable a))
-> Maybe (Column a)
-> Column (Nullable a)
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Column (Nullable a)
forall a. Column (Nullable a)
null Column a -> Column (Nullable a)
forall a. Column a -> Column (Nullable a)
toNullable
unsafeCast :: String -> Column a -> Column b
unsafeCast :: String -> Column a -> Column b
unsafeCast = String -> Column a -> Column b
forall a b. String -> Column a -> Column b
C.unsafeCast