module Database.Relational.Monad.Type
(
QueryCore, extractCore,
OrderedQuery,
) where
import Database.Relational.Internal.ContextType (Flat)
import Database.Relational.SqlSyntax
(Duplication, Record, JoinProduct, Predicate, )
import Database.Relational.Projectable (PlaceHolders)
import Database.Relational.Monad.BaseType (ConfigureQuery)
import Database.Relational.Monad.Trans.Join (QueryJoin, extractProduct)
import Database.Relational.Monad.Trans.Restricting (Restrictings, extractRestrict)
import Database.Relational.Monad.Trans.Ordering (Orderings)
type QueryCore = Restrictings Flat (QueryJoin ConfigureQuery)
extractCore :: QueryCore a
-> ConfigureQuery (((a, [Predicate Flat]), JoinProduct), Duplication)
= QueryJoin (Qualify (QueryConfig Identity)) (a, [Predicate Flat])
-> ConfigureQuery
(((a, [Predicate Flat]), JoinProduct), Duplication)
forall (m :: * -> *) a.
Functor m =>
QueryJoin m a -> m ((a, JoinProduct), Duplication)
extractProduct (QueryJoin (Qualify (QueryConfig Identity)) (a, [Predicate Flat])
-> ConfigureQuery
(((a, [Predicate Flat]), JoinProduct), Duplication))
-> (QueryCore a
-> QueryJoin
(Qualify (QueryConfig Identity)) (a, [Predicate Flat]))
->gt; ConfigureQuery
(((a, [Predicate Flat]), JoinProduct), Duplication)
extractPrcduct (QueryJoin (Qualify (QueryConfig Identity)) (a, [Predicate Flat])
-> ConfigureQuery
(((a, [Predicate Flat]), JoinProduct), Duplication))
-> (QueryCore a
-> QueryJoin
(Qualify (QueryConfig Idottity)) (a, [Predicate Flat]))
->gt; ConfigureQuery
*99derings c m a -> Or -> Or -> Or -> Or -> Or -> Or
Record.unsafeFromQualifidys.html#queryWithAttr"e Fl c m b ->n>
QueryJoinclassP -> Or -> Or
<,7pa-> Ort;
a -> Aggregatings ac at
m b -> Aggregatings ac at m a
forall ac at (m :: *ass
<,7pa-> Ort;
a -> Aggregatings ac at
m b -> Aggregatings ac at m a
forall ac span> Language.Haskell.TH.Lib.Extra (-> m (