relational-query-0.12.3.0: Typeful, Modular, Relational, algebraic query engine
Copyright2013-2018 Kei Hibino
LicenseBSD3
Maintainerex8k.hibino@gmail.com
Stabilityexperimental
Portabilityunknown
Safe HaskellNone
LanguageHaskell2010

Database.Relational.Monad.Trans.Aggregating

Description

This module defines monad transformer which lift from MonadQuery into Aggregated query.

Synopsis

Transformer into aggregated query

data Aggregatings ac at m a Source #

Type to accumulate aggregating context. Type ac is aggregating-context type like aggregating key set building, aggregating key sets set building and partition key set building. Type at is aggregating term type.

Instances

Instances details
MonadQualify q m => MonadQualify q (AggregatingSetT m) Source #

Aggregated MonadQualify.

Instance details

Defined in Database.Relational.Monad.Trans.Aggregating

Methods

liftQualify :: q a -> AggregatingSetT m a Source #

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

Aggregated MonadRestrict.

Instance details

Defined in Database.Relational.Monad.Trans.Aggregating

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

Partition clause instance

Instance details

Defined in Database.Relational.Monad.Trans.Aggregating

Methods

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

MonadQuery m => MonadAggregate (AggregatingSetT m) Source #

Aggregated query instance.

Instance details

Defined in Database.Relational.Monad.Trans.Aggregating

MonadQuery m => MonadQuery (AggregatingSetT m) Source #

Aggregated MonadQuery.

Instance details

Defined in Database.Relational.Monad.Trans.Aggregating

MonadTrans (Aggregatings ac at) Source # 
Instance details

Defined in Database.Relational.Monad.Trans.Aggregating

Methods

lift :: Monad m => m a -> Aggregatings ac at m a #

Monad m => Monad (Aggregatings ac at m) Source # 
Instance details

Defined in Database.Relational.Monad.Trans.Aggregating

Methods

(>>=) :: Aggregatings ac at m a -> (a -> Aggregatings ac at m b) -> Aggregatings ac at m b #

(>>) :: Aggregatings ac at m a -> Aggregatings ac at m b -> Aggregatings ac at m b #

return :: a -> Aggregatings ac at m a #

Functor m => Functor (Aggregatings ac at m) Source # 
Instance details

Defined in Database.Relational.Monad.Trans.Aggregating

Methods

fmap :: (a -> b) -> Aggregatings ac at m a -> Aggregatings ac at m b #

(<$) :: a -> Aggregatings ac at m b -> Aggregatings ac at m a #

Applicative m => Applicative (Aggregatings ac at m) Source # 
Instance details

Defined in Database.Relational.Monad.Trans.Aggregating

Methods

pure :: a -> Aggregatings ac at m a #

(<*>) :: Aggregatings ac at m (a -> b) -> Aggregatings ac at m a -> Aggregatings ac at m b #

liftA2 :: (a -> b -> c) -> Aggregatings ac at m a -> Aggregatings ac at m b -> Aggregatings ac at m c #

(*>) :: Aggregatings ac at m a -> Aggregatings ac at m b -> Aggregatings ac at m b #

(<*) :: Aggregatings ac at m a -> Aggregatings ac at m b -> Aggregatings ac at m a #

aggregatings :: Monad m => m a -> Aggregatings ac at m a Source #

Lift to Aggregatings.

type AggregatingSetT = Aggregatings Set AggregateElem Source #

Context type building one grouping set.

type AggregatingSetListT = Aggregatings SetList AggregateSet Source #

Context type building grouping sets list.

type AggregatingPowerSetT = Aggregatings Power AggregateBitKey Source #

Context type building power group set.

type PartitioningSetT c = Aggregatings c AggregateColumnRef Source #

Context type building partition keys set.

Result

extractAggregateTerms :: (Monad m, Functor m) => Aggregatings ac at m a -> m (a, [at]) Source #

Run Aggregatings to get terms list.

Grouping sets support

type AggregatingSet = AggregatingSetT Identity Source #

Context monad type to build single grouping set.

type AggregatingPowerSet = AggregatingPowerSetT Identity Source #

Context monad type to build grouping power set.

type AggregatingSetList = AggregatingSetListT Identity Source #

Context monad type to build grouping set list.

type PartitioningSet c = PartitioningSetT c Identity Source #

Context monad type to build partition keys set.

key :: Record Flat r -> AggregatingSet (Record Aggregated (Maybe r)) Source #

Specify key of single grouping set from Record.

key' :: AggregateKey a -> AggregatingSet a Source #

Specify key of single grouping set.

set :: AggregatingSet a -> AggregatingSetList a Source #

Finalize and specify single grouping set.

bkey :: Record Flat r -> AggregatingPowerSet (Record Aggregated (Maybe r)) Source #

Specify key of rollup and cube power set.

rollup :: AggregatingPowerSet a -> AggregateKey a Source #

Finalize grouping power set as rollup power set.

cube :: AggregatingPowerSet a -> AggregateKey a Source #

Finalize grouping power set as cube power set.

groupingSets :: AggregatingSetList a -> AggregateKey a Source #

Finalize grouping set list.