Copyright | 2013-2017 Kei Hibino |
---|---|
License | BSD3 |
Maintainer | [email protected] |
Stability | experimental |
Portability | unknown |
Safe Haskell | None |
Language | Haskell2010 |
Database.Relational.Monad.Class
Contents
Description
This module defines query building interface classes.
- class (Functor q, Monad q, Functor m, Monad m) => MonadQualify q m where
- class (Functor m, Monad m) => MonadRestrict c m where
- class (Functor m, Monad m, MonadQualify ConfigureQuery m) => MonadQuery m where
- class MonadQuery m => MonadAggregate m where
- class Monad m => MonadPartition c m where
- all' :: MonadQuery m => m ()
- distinct :: MonadQuery m => m ()
- on :: MonadQuery m => Predicate Flat -> m ()
- wheres :: MonadRestrict Flat m => Predicate Flat -> m ()
- having :: MonadRestrict Aggregated m => Predicate Aggregated -> m ()
Query interface classes
class (Functor q, Monad q, Functor m, Monad m) => MonadQualify q m where Source #
Lift interface from base qualify monad.
Minimal complete definition
Methods
liftQualify :: q a -> m a Source #
Lift from qualify monad q
into MonadQuery
m.
Qualify monad qualifies table form SubQuery
.
Instances
(Functor q, Monad q) => MonadQualify q q Source # | |
MonadQualify ConfigureQuery QueryUnique Source # | |
MonadQualify q m => MonadQualify q (QueryJoin m) Source # | |
MonadQualify q m => MonadQualify q (AggregatingSetT m) Source # | Aggregated |
MonadQualify q m => MonadQualify q (Restrictings c m) Source # | Restricted |
MonadQualify q m => MonadQualify q (Orderings c m) Source # |
|
MonadQualify q m => MonadQualify q (Assignings r m) Source # |
|
class (Functor m, Monad m) => MonadRestrict c m where Source #
Restrict context interface
Minimal complete definition
Methods
Add restriction to this context.
Instances
MonadRestrict c m => MonadRestrict c (AggregatingSetT m) Source # | Aggregated |
(Monad q, Functor q) => MonadRestrict c (Restrictings c q) Source # |
|
MonadRestrict rc m => MonadRestrict rc (Orderings c m) Source # |
|
MonadRestrict c m => MonadRestrict c (Assignings r m) Source # |
|
class (Functor m, Monad m, MonadQualify ConfigureQuery m) => MonadQuery m where Source #
Query building interface.
Minimal complete definition
Methods
setDuplication :: Duplication -> m () Source #
Specify duplication.
Add restriction to last join.
query' :: Relation p r -> m (PlaceHolders p, Record Flat r) Source #
Join sub-query with place-holder parameter p
. query result is not Maybe
.
queryMaybe' :: Relation p r -> m (PlaceHolders p, Record Flat (Maybe r)) Source #
Join sub-query with place-holder parameter p
. Query result is Maybe
.
Instances
MonadQuery QueryUnique Source # | |
MonadQuery (QueryJoin ConfigureQuery) Source # | Joinable query instance. |
MonadQuery m => MonadQuery (AggregatingSetT m) Source # | Aggregated |
MonadQuery q => MonadQuery (Restrictings c q) Source # | Restricted |
MonadQuery m => MonadQuery (Orderings c m) Source # |
|
class MonadQuery m => MonadAggregate m where Source #
Aggregated query building interface extends MonadQuery
.
Methods
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.
Arguments
:: AggregateKey (Record Aggregated r) | Key to aggretate for non-traditional group-by interface |
-> m (Record Aggregated r) | Result context and aggregated record |
Instances
MonadQuery m => MonadAggregate (AggregatingSetT m) Source # | Aggregated query instance. |
MonadAggregate m => MonadAggregate (Restrictings c m) Source # | Resticted |
MonadAggregate m => MonadAggregate (Orderings c m) Source # |
|
class Monad m => MonadPartition c m where Source #
Window specification building interface.
Minimal complete definition
Instances
MonadPartition c m => MonadPartition c (Orderings c m) Source # |
|
Monad m => MonadPartition c (PartitioningSetT c m) Source # | Partition clause instance |
all' :: MonadQuery m => m () Source #
Specify ALL attribute to query context.
distinct :: MonadQuery m => m () Source #
Specify DISTINCT attribute to query context.
on :: MonadQuery m => Predicate Flat -> m () Source #
Add restriction to last join. Record type version.
wheres :: MonadRestrict Flat m => Predicate Flat -> m () Source #
Add restriction to this not aggregated query.
having :: MonadRestrict Aggregated m => Predicate Aggregated -> m () Source #
Add restriction to this aggregated query. Aggregated Record type version.