Advertisement
Guest User

Untitled

a guest
Dec 18th, 2014
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. {-# LANGUAGE FlexibleContexts #-}
  2.  
  3. module ArrowQuery (
  4. module Database.Relational.Query,
  5.  
  6. query, queryMaybe, query', queryMaybe', wheres, having, placeholder,
  7.  
  8. relation, relation', aggregateRelation, aggregateRelation',
  9.  
  10. QuerySimple, QueryAggregate,
  11. ) where
  12.  
  13. import Control.Arrow
  14.  
  15. import Database.Record
  16. import Database.Relational.Query hiding
  17. (query, queryMaybe, query', queryMaybe', wheres, having, placeholder,
  18. relation, relation', aggregateRelation, aggregateRelation',
  19. QuerySimple, QueryAggregate)
  20. import qualified Database.Relational.Query as Query
  21.  
  22.  
  23. type QuerySimple = Kleisli Query.QuerySimple
  24. type QueryAggregate = Kleisli Query.QueryAggregate
  25.  
  26.  
  27. query :: MonadQualify ConfigureQuery m =>
  28. Kleisli m (Query.Relation () r) (Projection Flat r)
  29. query = Kleisli Query.query
  30.  
  31. queryMaybe :: MonadQualify ConfigureQuery m =>
  32. Kleisli m (Query.Relation () r) (Projection Flat (Maybe r))
  33. queryMaybe = Kleisli Query.queryMaybe
  34.  
  35. query' :: MonadQualify ConfigureQuery m =>
  36. Kleisli m (Query.Relation p r) (PlaceHolders p, Projection Flat r)
  37. query' = Kleisli Query.query'
  38.  
  39. queryMaybe' :: MonadQualify ConfigureQuery m =>
  40. Kleisli m (Query.Relation p r) (PlaceHolders p, Projection Flat (Maybe r))
  41. queryMaybe' = Kleisli Query.queryMaybe'
  42.  
  43. wheres :: MonadRestrict Flat m =>
  44. Kleisli m (Projection Flat (Maybe Bool)) ()
  45. wheres = Kleisli Query.wheres
  46.  
  47. having :: MonadRestrict Aggregated m =>
  48. Kleisli m (Projection Aggregated (Maybe Bool)) ()
  49. having = Kleisli Query.having
  50.  
  51. placeholder :: (PersistableWidth t, SqlProjectable p, Monad m) =>
  52. Kleisli m (Kleisli m (p t) a) (PlaceHolders t, a)
  53. placeholder = Kleisli $ Query.placeholder . runKleisli
  54.  
  55. relation :: QuerySimple () (Projection Flat r) -> Relation () r
  56. relation = Query.relation . (`runKleisli` ())
  57.  
  58. relation' :: QuerySimple () (PlaceHolders p, Projection Flat r)
  59. -> Relation p r
  60. relation' = Query.relation' . (`runKleisli` ())
  61.  
  62. aggregateRelation :: QueryAggregate () (Projection Aggregated r)
  63. -> Relation () r
  64. aggregateRelation = Query.aggregateRelation . (`runKleisli` ())
  65.  
  66. aggregateRelation' :: QueryAggregate () (PlaceHolders p, Projection Aggregated r)
  67. -> Relation p r
  68. aggregateRelation' = Query.aggregateRelation' . (`runKleisli` ())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement