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

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

Database.Relational.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 # 
Instance details

Defined in Database.Relational.Monad.Class

Methods

liftQualify :: q a -> q a #

MonadQualify ConfigureQuery QueryUnique # 
Instance details

Defined in Database.Relational.Monad.Unique

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

Defined in Database.Relational.Monad.Trans.Join

Methods

liftQualify :: q a -> QueryJoin m a #

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

Aggregated MonadQualify.

Instance details

Defined in Database.Relational.Monad.Trans.Aggregating

Methods

liftQualify :: q a -> AggregatingSetT m a #

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

Restricted MonadQualify instance.

Instance details

Defined in Database.Relational.Monad.Trans.Restricting

Methods

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

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

MonadQualify with ordering.

Instance details

Defined in Database.Relational.Monad.Trans.Ordering

Methods

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

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

MonadQualify with assigning.

Instance details

Defined in Database.Relational.Monad.Trans.Assigning

Methods

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

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

Restrict context interface

Minimal complete definition

restrict

Methods

restrict #

Arguments

:: Predicate c

Record which represent restriction

-> m ()

Restricted query context

Add restriction to this context.

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

Aggregated MonadRestrict.

Instance details

Defined in Database.Relational.Monad.Trans.Aggregating

Methods

restrict :: Predicate c -> AggregatingSetT m () #

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

MonadRestrict instance.

Instance details

Defined in Database.Relational.Monad.Trans.Restricting

Methods

restrict :: Predicate c -> Restrictings c q () #

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

MonadRestrict with ordering.

Instance details

Defined in Database.Relational.Monad.Trans.Ordering

Methods

restrict :: Predicate rc -> Orderings c m () #

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

MonadRestrict with assigning.

Instance details

Defined in Database.Relational.Monad.Trans.Assigning

Methods

restrict :: Predicate c -> Assignings r m () #

MonadRestrict Flat q => MonadRestrict Flat (Restrictings Aggregated q) #

Restricted MonadRestrict instance.

Instance details

Defined in Database.Relational.Monad.Aggregate

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 #

Arguments

:: Predicate Flat

Record which represent restriction

-> m ()

Restricted query context

Add restriction to last join.

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

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

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

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

Instances
MonadQuery QueryUnique # 
Instance details

Defined in Database.Relational.Monad.Unique

MonadQuery (QueryJoin ConfigureQuery) #

Joinable query instance.

Instance details

Defined in Database.Relational.Monad.Trans.Join

MonadQuery m => MonadQuery (AggregatingSetT m) #

Aggregated MonadQuery.

Instance details

Defined in Database.Relational.Monad.Trans.Aggregating

MonadQuery q => MonadQuery (Restrictings c q) #

Restricted MonadQuery instance.

Instance details

Defined in Database.Relational.Monad.Trans.Restricting

MonadQuery m => MonadQuery (Orderings c m) #

MonadQuery with ordering.

Instance details

Defined in Database.Relational.Monad.Trans.Ordering

class MonadQuery m => MonadAggregate m where #

Aggregated query building interface extends MonadQuery.

Minimal complete definition

groupBy, groupBy'

Methods

groupBy #

Arguments

:: Record Flat r

Record to add into group by

-> m (Record Aggregated r)

Result context and aggregated record | Add GROUP BY term into context and get aggregated record. Non-traditional group-by version.

Add GROUP BY term into context and get aggregated record.

groupBy' #

Arguments

:: AggregateKey (Record Aggregated r)

Key to aggretate for non-traditional group-by interface

-> m (Record Aggregated r)

Result context and aggregated record

class Monad m => MonadPartition c m where #

Window specification building interface.

Minimal complete definition

partitionBy

Methods

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

Add PARTITION BY term into context.

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

MonadPartition with ordering.

Instance details

Defined in Database.Relational.Monad.Trans.Ordering

Methods

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

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

Partition clause instance

Instance details

Defined in Database.Relational.Monad.Trans.Aggregating

Methods

partitionBy :: Record c r -> PartitioningSetT 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 => Predicate Flat -> m () #

Add restriction to last join. Record type version.

wheres :: MonadRestrict Flat m => Predicate Flat -> m () #

Add restriction to this not aggregated query.

having :: MonadRestrict Aggregated m => Predicate Aggregated -> m () #

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