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

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

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 where #

Lift interface from base qualify monad.

Minimal complete definition

liftQualify

Methods

liftQualify :: q a -> m a #

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

Instances

(Functor q, Monad q) => MonadQualify q q # 

Methods

liftQualify :: q a -> q a #

MonadQualify ConfigureQuery QueryUnique # 
MonadQualify q m => MonadQualify q (AggregatingSetT m) #

Aggregated MonadQualify.

Methods

liftQualify :: q a -> AggregatingSetT m a #

MonadQualify q m => MonadQualify q (QueryJoin m) # 

Methods

liftQualify :: q a -> QueryJoin m a #

MonadQualify q m => MonadQualify q (Assignings r m) #

MonadQualify with assigning.

Methods

liftQualify :: q a -> Assignings r m a #

MonadQualify q m => MonadQualify q (Orderings c m) #

MonadQualify with ordering.

Methods

liftQualify :: q a -> Orderings c m a #

MonadQualify q m => MonadQualify q (Restrictings c m) #

Restricted MonadQualify instance.

Methods

liftQualify :: q a -> Restrictings c m a #

class (Functor m, Monad m) => MonadRestrict c m where #

Restrict context interface

Minimal complete definition

restrict

Methods

restrict :: Projection c (Maybe Bool) -> m () #

Add restriction to this context.

Instances

MonadRestrict c m => MonadRestrict c (AggregatingSetT m) #

Aggregated MonadRestrict.

MonadRestrict c m => MonadRestrict c (Assignings r m) #

MonadRestrict with assigning.

Methods

restrict :: Projection c (Maybe Bool) -> Assignings r m () #

MonadRestrict rc m => MonadRestrict rc (Orderings c m) #

MonadRestrict with ordering.

Methods

restrict :: Projection rc (Maybe Bool) -> Orderings c m () #

(Monad q, Functor q) => MonadRestrict c (Restrictings c q) #

MonadRestrict instance.

Methods

restrict :: Projection c (Maybe Bool) -> Restrictings c q () #

class (Functor m, Monad m, MonadQualify ConfigureQuery m) => MonadQuery m where #

Query building interface.

Minimal complete definition

setDuplication, restrictJoin, query', queryMaybe'

Methods

setDuplication :: Duplication -> m () #

Specify duplication.

restrictJoin :: Projection Flat (Maybe Bool) -> m () #

Add restriction to last join.

query' :: Relation p r -> m (PlaceHolders p, Projection Flat r) #

Join sub-query with place-holder parameter p. query result is not Maybe.

queryMaybe' :: Relation p r -> m (PlaceHolders p, Projection Flat (Maybe r)) #

Join sub-query with place-holder parameter p. Query result is Maybe.

Instances

MonadQuery QueryUnique # 
MonadQuery m => MonadQuery (AggregatingSetT m) #

Aggregated MonadQuery.

MonadQuery (QueryJoin ConfigureQuery) #

Joinable query instance.

MonadQuery m => MonadQuery (Orderings c m) #

MonadQuery with ordering.

MonadQuery q => MonadQuery (Restrictings c q) #

Restricted MonadQuery instance.

class MonadQuery m => MonadAggregate m where #

Aggregated query building interface extends MonadQuery.

Minimal complete definition

groupBy, groupBy'

Methods

groupBy :: Projection Flat r -> m (Projection Aggregated r) #

Add GROUP BY term into context and get aggregated projection.

groupBy' :: AggregateKey (Projection Aggregated r) -> m (Projection Aggregated r) #

class Monad m => MonadPartition c m where #

Window specification building interface.

Minimal complete definition

partitionBy

Methods

partitionBy :: Projection c r -> m () #

Add PARTITION BY term into context.

Instances

Monad m => MonadPartition c (PartitioningSetT c m) #

Partition clause instance

Methods

partitionBy :: Projection c r -> PartitioningSetT c m () #

MonadPartition c m => MonadPartition c (Orderings c m) #

MonadPartition with ordering.

Methods

partitionBy :: Projection c r -> Orderings c m () #

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

Specify ALL attribute to query context.

distinct :: MonadQuery m => m () #

Specify DISTINCT attribute to query context.

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

Add restriction to last join. Projection type version.

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

Add restriction to this not aggregated query.

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

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