Copyright | 2013 Kei Hibino |
---|---|
License | BSD3 |
Maintainer | [email protected] |
Stability | experimental |
Portability | unknown |
Safe Haskell | None |
Language | Haskell2010 |
Database.Relational.Query.Projection
Description
This module defines query projection type structure and interfaces.
- data Projection c t
- width :: Projection c r -> Int
- columns :: Projection c r -> [ColumnSQL]
- untype :: Projection c r -> UntypedProjection
- unsafeFromSqlTerms :: [StringSQL] -> Projection c t
- unsafeFromQualifiedSubQuery :: Qualified SubQuery -> Projection c t
- unsafeFromScalarSubQuery :: SubQuery -> Projection c t
- unsafeFromTable :: Table r -> Projection c r
- unsafeStringSql :: Projection c r -> StringSQL
- pi :: Projection c a -> Pi a b -> Projection c b
- piMaybe :: Projection c (Maybe a) -> Pi a b -> Projection c (Maybe b)
- piMaybe' :: Projection c (Maybe a) -> Pi a (Maybe b) -> Projection c (Maybe b)
- flattenMaybe :: Projection c (Maybe (Maybe a)) -> Projection c (Maybe a)
- just :: Projection c r -> Projection c (Maybe r)
- unsafeToAggregated :: Projection Flat r -> Projection Aggregated r
- unsafeToFlat :: Projection Aggregated r -> Projection Flat r
- unsafeChangeContext :: Projection c r -> Projection c' r
- unsafeStringSqlNotNullMaybe :: HasColumnConstraint NotNull r => Projection c (Maybe r) -> StringSQL
- pfmap :: ProductConstructor (a -> b) => (a -> b) -> Projection c a -> Projection c b
- pap :: Projection c (a -> b) -> Projection c a -> Projection c b
- data ListProjection p t
- list :: [p t] -> ListProjection p t
- unsafeListFromSubQuery :: SubQuery -> ListProjection p t
- unsafeStringSqlList :: (p t -> StringSQL) -> ListProjection p t -> StringSQL
Projection data structure and interface
data Projection c t Source #
Phantom typed projection. Projected into Haskell record type t
.
Instances
ProjectableApplicative (Projection c) Source # | Compose record type |
ProjectableFunctor (Projection c) Source # | Compose seed of record type |
ProjectableMaybe (Projection c) Source # | Control phantom |
ProjectableShowSql (Projection c) Source # | Unsafely get SQL term from |
SqlProjectable (Projection OverWindow) Source # | Unsafely make |
SqlProjectable (Projection Aggregated) Source # | Unsafely make |
SqlProjectable (Projection Flat) Source # | Unsafely make |
Show (Projection c t) Source # | |
width :: Projection c r -> Int Source #
Width of Projection
.
Arguments
:: Projection c r | Source |
-> [ColumnSQL] | Result SQL string list |
Get column SQL string list of projection.
untype :: Projection c r -> UntypedProjection Source #
Unsafely get untyped projection.
unsafeFromSqlTerms :: [StringSQL] -> Projection c t Source #
Unsafely generate Projection
from SQL expression strings.
unsafeFromQualifiedSubQuery :: Qualified SubQuery -> Projection c t Source #
Unsafely generate Projection
from qualified (joined) sub-query.
unsafeFromScalarSubQuery :: SubQuery -> Projection c t Source #
Unsafely generate Projection
from scalar sub-query.
unsafeFromTable :: Table r -> Projection c r Source #
Unsafely generate unqualified Projection
from Table
.
unsafeStringSql :: Projection c r -> StringSQL Source #
Unsafely get SQL term from Proejction
.
Projections
Arguments
:: Projection c a | Source |
-> Pi a b | Projection path |
-> Projection c b | Narrower |
Trace projection path to get narrower Projection
.
Arguments
:: Projection c (Maybe a) | Source |
-> Pi a b | Projection path |
-> Projection c (Maybe b) | Narrower |
Trace projection path to get narrower Projection
. From Maybe
type to Maybe
type.
Arguments
:: Projection c (Maybe a) | Source |
-> Pi a (Maybe b) | Projection path. |
-> Projection c (Maybe b) | Narrower |
Trace projection path to get narrower Projection
. From Maybe
type to Maybe
type.
Leaf type of projection path is Maybe
.
flattenMaybe :: Projection c (Maybe (Maybe a)) -> Projection c (Maybe a) Source #
Composite nested Maybe
on projection phantom type.
just :: Projection c r -> Projection c (Maybe r) Source #
Cast into Maybe
on projection phantom type.
unsafeToAggregated :: Projection Flat r -> Projection Aggregated r Source #
Unsafely lift to aggregated context.
unsafeToFlat :: Projection Aggregated r -> Projection Flat r Source #
Unsafely down to flat context.
unsafeChangeContext :: Projection c r -> Projection c' r Source #
Unsafely cast context type tag.
unsafeStringSqlNotNullMaybe :: HasColumnConstraint NotNull r => Projection c (Maybe r) -> StringSQL Source #
Unsafely get SQL string expression of not null key projection.
pfmap :: ProductConstructor (a -> b) => (a -> b) -> Projection c a -> Projection c b Source #
Projectable fmap of Projection
type.
pap :: Projection c (a -> b) -> Projection c a -> Projection c b Source #
Projectable ap of Projection
type.
List Projection
data ListProjection p t Source #
Projection type for row list.
list :: [p t] -> ListProjection p t Source #
Make row list projection from Projection
list.
unsafeListFromSubQuery :: SubQuery -> ListProjection p t Source #
Make row list projection from SubQuery
.
unsafeStringSqlList :: (p t -> StringSQL) -> ListProjection p t -> StringSQL Source #
Map projection show operatoions and concatinate to single SQL expression.