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