| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Rel8.Internal.Table.Maybe
Synopsis
- data MaybeTable (context :: Context) a = MaybeTable {}
- maybeTable :: Table Expr b => b -> (a -> b) -> MaybeTable Expr a -> b
- nothingTable :: Table Expr a => MaybeTable Expr a
- justTable :: a -> MaybeTable Expr a
- isNothingTable :: MaybeTable Expr a -> Expr Bool
- isJustTable :: MaybeTable Expr a -> Expr Bool
- fromMaybeTable :: Table Expr a => a -> MaybeTable Expr a -> a
- ($?) :: forall a b. Sql DBType b => (a -> Expr b) -> MaybeTable Expr a -> Expr (Nullify b)
- nameMaybeTable :: Name (Maybe MaybeTag) -> a -> MaybeTable Name a
- makeMaybeTable :: FieldNullable SqlBool -> a -> MaybeTable Expr a
- unsafeFromJustTable :: MaybeTable Expr a -> a
Documentation
data MaybeTable (context :: Context) a Source #
MaybeTable t is the table t, but as the result of an outer join. If
the outer join fails to match any rows, this is essentialy Nothing, and if
the outer join does match rows, this is like Just. Unfortunately, SQL
makes it impossible to distinguish whether or not an outer join matched any
rows based generally on the row contents - if you were to join a row
entirely of nulls, you can't distinguish if you matched an all null row, or
if the match failed. For this reason MaybeTable contains an extra field -
a "nullTag" - to track whether or not the outer join produced any rows.
Instances
| (Table context a, Reifiable context, context ~ context') => Table context' (MaybeTable context a) Source # | |||||||||||||
Defined in Rel8.Internal.Table.Maybe Associated Types
Methods toColumns :: MaybeTable context a -> Columns (MaybeTable context a) context' Source # fromColumns :: Columns (MaybeTable context a) context' -> MaybeTable context a Source # fromResult :: Columns (MaybeTable context a) Result -> FromExprs (MaybeTable context a) Source # toResult :: FromExprs (MaybeTable context a) -> Columns (MaybeTable context a) Result Source # | |||||||||||||
| context ~ Expr => Applicative (MaybeTable context) Source # | Has the same behavior as the | ||||||||||||
Defined in Rel8.Internal.Table.Maybe Methods pure :: a -> MaybeTable context a # (<*>) :: MaybeTable context (a -> b) -> MaybeTable context a -> MaybeTable context b # liftA2 :: (a -> b -> c) -> MaybeTable context a -> MaybeTable context b -> MaybeTable context c # (*>) :: MaybeTable context a -> MaybeTable context b -> MaybeTable context b # (<*) :: MaybeTable context a -> MaybeTable context b -> MaybeTable context a # | |||||||||||||
| Nullifiable context => Functor (MaybeTable context) Source # | |||||||||||||
Defined in Rel8.Internal.Table.Maybe Methods fmap :: (a -> b) -> MaybeTable context a -> MaybeTable context b # (<$) :: a -> MaybeTable context b -> MaybeTable context a # | |||||||||||||
| context ~ Expr => Monad (MaybeTable context) Source # | Has the same behavior as the | ||||||||||||
Defined in Rel8.Internal.Table.Maybe Methods (>>=) :: MaybeTable context a -> (a -> MaybeTable context b) -> MaybeTable context b # (>>) :: MaybeTable context a -> MaybeTable context b -> MaybeTable context b # return :: a -> MaybeTable context a # | |||||||||||||
| context ~ Expr => AltTable (MaybeTable context) Source # | |||||||||||||
Defined in Rel8.Internal.Table.Maybe Methods (<|>:) :: Table Expr a => MaybeTable context a -> MaybeTable context a -> MaybeTable context a Source # | |||||||||||||
| context ~ Expr => AlternativeTable (MaybeTable context) Source # | |||||||||||||
Defined in Rel8.Internal.Table.Maybe Methods emptyTable :: Table Expr a => MaybeTable context a Source # | |||||||||||||
| Projectable (MaybeTable context) Source # | |||||||||||||
Defined in Rel8.Internal.Table.Maybe Methods project :: Projecting a b => Projection a b -> MaybeTable context a -> MaybeTable context b Source # | |||||||||||||
| context ~ Expr => Apply (MaybeTable context) Source # | |||||||||||||
Defined in Rel8.Internal.Table.Maybe Methods (<.>) :: MaybeTable context (a -> b) -> MaybeTable context a -> MaybeTable context b (.>) :: MaybeTable context a -> MaybeTable context b -> MaybeTable context b (<.) :: MaybeTable context a -> MaybeTable context b -> MaybeTable context a liftF2 :: (a -> b -> c) -> MaybeTable context a -> MaybeTable context b -> MaybeTable context c | |||||||||||||
| context ~ Expr => Bind (MaybeTable context) Source # | |||||||||||||
Defined in Rel8.Internal.Table.Maybe Methods (>>-) :: MaybeTable context a -> (a -> MaybeTable context b) -> MaybeTable context b join :: MaybeTable context (MaybeTable context a) -> MaybeTable context a | |||||||||||||
| (context ~ Expr, Table Expr a, Semigroup a) => Monoid (MaybeTable context a) Source # | |||||||||||||
Defined in Rel8.Internal.Table.Maybe Methods mempty :: MaybeTable context a # mappend :: MaybeTable context a -> MaybeTable context a -> MaybeTable context a # mconcat :: [MaybeTable context a] -> MaybeTable context a # | |||||||||||||
| (context ~ Expr, Table Expr a, Semigroup a) => Semigroup (MaybeTable context a) Source # | |||||||||||||
Defined in Rel8.Internal.Table.Maybe Methods (<>) :: MaybeTable context a -> MaybeTable context a -> MaybeTable context a # sconcat :: NonEmpty (MaybeTable context a) -> MaybeTable context a # stimes :: Integral b => b -> MaybeTable context a -> MaybeTable context a # | |||||||||||||
| (EqTable a, context ~ Expr) => EqTable (MaybeTable context a) Source # | |||||||||||||
Defined in Rel8.Internal.Table.Maybe | |||||||||||||
| (OrdTable a, context ~ Expr) => OrdTable (MaybeTable context a) Source # | |||||||||||||
Defined in Rel8.Internal.Table.Maybe | |||||||||||||
| (ToExprs exprs a, context ~ Expr) => ToExprs (MaybeTable context exprs) (Maybe a) Source # | |||||||||||||
Defined in Rel8.Internal.Table.Maybe | |||||||||||||
| type Transpose to (MaybeTable context a) Source # | |||||||||||||
Defined in Rel8.Internal.Table.Maybe | |||||||||||||
| type Columns (MaybeTable context a) Source # | |||||||||||||
Defined in Rel8.Internal.Table.Maybe | |||||||||||||
| type Context (MaybeTable context a) Source # | |||||||||||||
Defined in Rel8.Internal.Table.Maybe | |||||||||||||
| type FromExprs (MaybeTable context a) Source # | |||||||||||||
Defined in Rel8.Internal.Table.Maybe | |||||||||||||
maybeTable :: Table Expr b => b -> (a -> b) -> MaybeTable Expr a -> b Source #
Perform case analysis on a MaybeTable. Like maybe.
nothingTable :: Table Expr a => MaybeTable Expr a Source #
The null table. Like Nothing.
justTable :: a -> MaybeTable Expr a Source #
Lift any table into MaybeTable. Like Just. Note you can also use
pure.
isNothingTable :: MaybeTable Expr a -> Expr Bool Source #
Check if a MaybeTable is absent of any row. Like isNothing.
isJustTable :: MaybeTable Expr a -> Expr Bool Source #
Check if a MaybeTable contains a row. Like isJust.
fromMaybeTable :: Table Expr a => a -> MaybeTable Expr a -> a Source #
fromMaybe for MaybeTables.
($?) :: forall a b. Sql DBType b => (a -> Expr b) -> MaybeTable Expr a -> Expr (Nullify b) infixl 4 Source #
Project a single expression out of a MaybeTable. You can think of this
operator like the $ operator, but it also has the ability to return
null.
Arguments
| :: Name (Maybe MaybeTag) | The name of the column to track whether a row is a |
| -> a | Names of the columns in |
| -> MaybeTable Name a |
Construct a MaybeTable in the Name context. This can be useful if you
have a MaybeTable that you are storing in a table and need to construct a
TableSchema.
makeMaybeTable :: FieldNullable SqlBool -> a -> MaybeTable Expr a Source #
unsafeFromJustTable :: MaybeTable Expr a -> a Source #