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

Portabilityunknown
Stabilityexperimental
Maintainerex8k.hibino@gmail.com
Safe HaskellNone

Database.Relational.Query.Monad.Class

Contents

Description

This module defines query building interface classes.

Synopsis

Query interface classes

class (Functor q, Monad q, Functor m, Monad m) => MonadQualify q m whereSource

Lift interface from base qualify monad.

Methods

liftQualify :: q a -> m aSource

Lift from qualify monad q into MonadQuery m. Qualify monad qualifies table form SubQuery.

Instances

MonadQualify ConfigureQuery Restrict

Instance to lift from qualified table forms into Restrict.

MonadQualify ConfigureQuery QueryAggregate

Instance to lift from qualified table forms into QueryAggregate.

MonadQualify ConfigureQuery (Assign r)

Instance to lift from qualified table forms into Restrict.

MonadQualify ConfigureQuery (Orderings Flat QueryCore)

Instance to lift from qualified table forms into QuerySimple.

class (Functor q, Monad q, MonadQuery m) => MonadQualifyUnique q m whereSource

Lift interface from base qualify monad. Another constraint to support unique query.

Methods

liftQualifyUnique :: q a -> m aSource

Lift from qualify monad q into MonadQuery m. Qualify monad qualifies table form SubQuery.

Instances

MonadQualifyUnique ConfigureQuery QueryUnique

Instance to lift from qualified table forms into QueryUnique.

class (Functor m, Monad m) => MonadRestrict c m whereSource

Restrict context interface

Methods

restrictSource

Arguments

:: Projection c (Maybe Bool)

Projection which represent restriction

-> m ()

Restricted query context

Add restriction to this context.

class (Functor m, Monad m) => MonadQuery m whereSource

Query building interface.

Methods

setDuplication :: Duplication -> m ()Source

Specify duplication.

restrictJoinSource

Arguments

:: Projection Flat (Maybe Bool)

Projection which represent restriction

-> m ()

Restricted query context | Unsafely join subquery with this query.

Add restriction to last join.

unsafeSubQuerySource

Arguments

:: NodeAttr

Attribute maybe or just

-> Qualified SubQuery

SubQuery to join

-> m (Projection Flat r)

Result joined context and SubQuery result projection.

Instances

MonadQuery QueryUnique 
MonadQuery m => MonadQuery (AggregatingSetT m)

Aggregated MonadQuery.

(Monad q, Functor q) => MonadQuery (QueryJoin q)

Joinable query instance.

MonadQuery q => MonadQuery (Restrictings c q)

Restricted MonadQuery instance.

MonadQuery m => MonadQuery (Orderings c m)

MonadQuery with ordering.

class MonadQuery m => MonadAggregate m whereSource

Aggregated query building interface extends MonadQuery.

Methods

unsafeAddAggregateElementSource

Arguments

:: AggregateElem

Grouping element to add into group by clause

-> m ()

Result context

Add group by term into context and get aggregated projection.

Instances

MonadQuery m => MonadAggregate (AggregatingSetT m)

Aggregated query instance.

MonadAggregate m => MonadAggregate (Restrictings c m)

Resticted MonadAggregate instance.

MonadAggregate m => MonadAggregate (Orderings c m)

MonadAggregate with ordering.

class Monad m => MonadPartition m whereSource

Window specification building interface.

Methods

unsafeAddPartitionKeySource

Arguments

:: AggregateColumnRef

Partitioning key to add into partition by clause

-> m ()

Result context

Instances

Monad m => MonadPartition (PartitioningSetT c m)

Partition clause instance

MonadPartition m => MonadPartition (Orderings c m)

MonadPartition with ordering.

all' :: MonadQuery m => m ()Source

Specify ALL attribute to query context.

distinct :: MonadQuery m => m ()Source

Specify DISTINCT attribute to query context.

onE :: MonadQuery m => Expr Flat (Maybe Bool) -> m ()Source

Add restriction to last join.

on :: MonadQuery m => Projection Flat (Maybe Bool) -> m ()Source

Add restriction to last join. Projection type version.

wheresE :: MonadRestrict Flat m => Expr Flat (Maybe Bool) -> m ()Source

Add restriction to this query. Expr type version.

wheres :: MonadRestrict Flat m => Projection Flat (Maybe Bool) -> m ()Source

Add restriction to this not aggregated query.

groupBySource

Arguments

:: MonadAggregate m 
=> Projection Flat r

Projection to add into group by

-> m (Projection Aggregated r)

Result context and aggregated projection

Add GROUP BY term into context and get aggregated projection.

havingE :: MonadRestrict Aggregated m => Expr Aggregated (Maybe Bool) -> m ()Source

Add restriction to this aggregated query. Expr type version.

having :: MonadRestrict Aggregated m => Projection Aggregated (Maybe Bool) -> m ()Source

Add restriction to this aggregated query. Aggregated Projection type version.