relational-query-0.8.3.2: Typeful, Modular, Relational, algebraic query engine

Copyright2013-2016 Kei Hibino
LicenseBSD3
Maintainerex8k.hibino@gmail.com
Stabilityexperimental
Portabilityunknown
Safe HaskellNone
LanguageHaskell2010

Database.Relational.Query.Sub

Contents

Description

This module defines sub-query structure used in query products.

Synopsis

Sub-query

data SubQuery Source

Sub-query type

Instances

fromTable Source

Arguments

:: Table r

Typed Table metadata

-> SubQuery

Result SubQuery

flatSubQuery :: Config -> UntypedProjection -> Duplication -> JoinProduct -> QueryRestriction Flat -> OrderingTerms -> SubQuery Source

Unsafely generate flat SubQuery from untyped components.

union :: Duplication -> SubQuery -> SubQuery -> SubQuery Source

Union binary operator on SubQuery

except :: Duplication -> SubQuery -> SubQuery -> SubQuery Source

Except binary operator on SubQuery

intersect :: Duplication -> SubQuery -> SubQuery -> SubQuery Source

Intersect binary operator on SubQuery

showSQL :: SubQuery -> StringSQL Source

SQL StringSQL for toplevel-SQL.

toSQL :: SubQuery -> String Source

SQL string for toplevel-SQL.

unitSQL :: SubQuery -> String Source

SQL string for nested-qeury.

Qualified Sub-query

newtype Qualifier Source

Qualifier type.

Constructors

Qualifier Int 

Instances

data Qualified a Source

Qualified query.

qualifier :: Qualified a -> Qualifier Source

Get qualifier

unQualify :: Qualified a -> a Source

Unqualify.

qualify :: a -> Qualifier -> Qualified a Source

Add qualifier

Sub-query columns

column :: Qualified SubQuery -> Int -> ColumnSQL Source

Get column SQL string of SubQuery.

Projection

data Projection c t Source

Phantom typed projection. Projected into Haskell record type t.

Instances

ProjectableApplicative (Projection c) Source

Compose record type Projection using applicative style.

ProjectableFunctor (Projection c) Source

Compose seed of record type Projection.

ProjectableMaybe (Projection c) Source

Control phantom Maybe type in projection type Projection.

ProjectableShowSql (Projection c) Source

Unsafely get SQL term from Proejction.

SqlProjectable (Projection OverWindow) Source

Unsafely make Projection from SQL terms.

SqlProjectable (Projection Aggregated) Source

Unsafely make Projection from SQL terms.

SqlProjectable (Projection Flat) Source

Unsafely make Projection from SQL terms.

Show (Projection c t) Source 

data ProjectionUnit Source

Projection structure unit

type UntypedProjection = [ProjectionUnit] Source

Untyped projection. Forgot record type.

untypedProjectionFromColumns :: [ColumnSQL] -> UntypedProjection Source

Make untyped projection from columns.

untypedProjectionFromJoinedSubQuery :: Qualified SubQuery -> UntypedProjection Source

Make untyped projection from joined sub-query.

untypedProjectionFromScalarSubQuery :: SubQuery -> UntypedProjection Source

Make untyped projection from scalar sub-query.

columnsOfUntypedProjection Source

Arguments

:: UntypedProjection

Source Projection

-> [ColumnSQL]

Result SQL string list

Get column SQL string list of projection.

projectionColumns Source

Arguments

:: Projection c r

Source Projection

-> [ColumnSQL]

Result SQL string list

Get column SQL string list of projection.

unsafeProjectionStringSql :: Projection c r -> StringSQL Source

Unsafely get SQL term from Proejction.

unsafeProjectFromColumns Source

Arguments

:: [ColumnSQL]

SQL string list specifies columns

-> Projection c r

Result Projection

Unsafely generate Projection from SQL string list.

Product of sub-queries

type JoinProduct = Maybe QueryProductTree Source

Type for join product of query.

data NodeAttr Source

node attribute for product.

Instances

nodeTree :: Node rs -> ProductTree rs Source

Get tree from node.

type ProductBuilder = Node QueryRestrictionBuilder Source

Product noe with join restriction builder.

Query restriction

type QueryRestriction c = [Projection c (Maybe Bool)] Source

Type for restriction of query.

composeWhere :: QueryRestriction Flat -> StringSQL Source

Compose WHERE clause from QueryRestriction.

composeHaving :: QueryRestriction Aggregated -> StringSQL Source

Compose HAVING clause from QueryRestriction.