on b2e2fc9 help sign in
rel8/src/Rel8.hs
326 lines 5.9 kB history raw
1{-# language DuplicateRecordFields #-}
3module Rel8
4 ( -- * Database types
5 -- ** @DBType@
6 DBType(..)
8 -- *** Deriving-via helpers
9 -- **** @JSONEncoded@
10 , JSONEncoded(..)
11 , JSONBEncoded(..)
13 -- **** @ReadShow@
14 , ReadShow(..)
16 -- **** Generic
17 , Composite(..)
18 , Enum(..)
20 -- *** @TypeInformation@
21 , TypeInformation(..)
22 , mapTypeInformation
23 , parseTypeInformation
25 -- ** The @DBType@ hierarchy
26 , DBSemigroup(..)
27 , DBMonoid(..)
28 , DBNum
29 , DBIntegral
30 , DBFractional
32 -- * Tables and higher-kinded tables
33 , Rel8able, KRel8able
34 , Column, Field, Necessity( Required, Optional )
35 , Default
36 , HEither
37 , HMaybe
38 , HList
39 , HNonEmpty
40 , HThese
41 , Lift
43 , Table(..)
44 , AltTable((<|>:))
45 , EqTable, (==:), (/=:)
46 , OrdTable, ascTable, descTable
47 , lit
48 , bool
49 , case_
51 -- ** @MaybeTable@
52 , MaybeTable
53 , maybeTable, ($?), nothingTable, justTable
54 , isNothingTable, isJustTable
55 , optional
56 , catMaybeTable
57 , bindMaybeTable
58 , traverseMaybeTable
60 -- ** @EitherTable@
61 , EitherTable
62 , eitherTable, leftTable, rightTable
63 , isLeftTable, isRightTable
64 , keepLeftTable
65 , keepRightTable
66 , bindEitherTable
67 , bitraverseEitherTable
69 -- ** @TheseTable@
70 , TheseTable
71 , theseTable, thisTable, thatTable, thoseTable
72 , isThisTable, isThatTable, isThoseTable
73 , hasHereTable, hasThereTable
74 , justHereTable, justThereTable
75 , alignBy
76 , keepHereTable, loseHereTable
77 , keepThereTable, loseThereTable
78 , keepThisTable, loseThisTable
79 , keepThatTable, loseThatTable
80 , keepThoseTable, loseThoseTable
81 , bindTheseTable
82 , bitraverseTheseTable
84 -- ** @ListTable@
85 , ListTable
86 , many
88 -- ** @NonEmptyTable@
89 , NonEmptyTable
90 , some
92 -- ** Table schemas
93 , TableSchema(..)
94 , Name
95 , namesFromLabels
96 , namesFromLabelsWith
98 -- * Expressions
99 , Expr
100 , Sql
101 , litExpr
102 , unsafeCastExpr
104 -- ** @null@
105 , null
106 , nullify
107 , nullable
108 , isNull
109 , isNonNull
110 , mapNull
111 , liftOpNull
112 , catNull
113 , coalesce
115 -- ** Boolean operations
116 , DBEq
117 , true, false, not_
118 , (&&.), and_
119 , (||.), or_
120 , (==.), (/=.), (==?), (/=?)
121 , in_
122 , boolExpr, caseExpr
124 -- ** Ordering
125 , DBOrd
126 , (<.), (<=.), (>.), (>=.)
127 , (<?), (<=?), (>?), (>=?)
128 , leastExpr, greatestExpr
130 -- ** Functions
131 , Function
132 , function
133 , nullaryFunction
134 , binaryOperator
136 -- * Queries
137 , Query
138 , showQuery
140 -- ** Selecting rows
141 , Selects
142 , each
143 , values
145 -- ** Filtering
146 , filter
147 , where_
148 , whereExists
149 , whereNotExists
150 , distinct
151 , distinctOn
152 , distinctOnBy
154 -- ** @LIMIT@/@OFFSET@
155 , limit
156 , offset
158 -- ** @UNION@
159 , union
160 , unionAll
162 -- ** @INTERSECT@
163 , intersect
164 , intersectAll
166 -- ** @EXCEPT@
167 , except
168 , exceptAll
170 -- ** @EXISTS@
171 , exists
172 , with
173 , withBy
174 , without
175 , withoutBy
177 -- ** Aggregation
178 , Aggregate
179 , aggregate
180 , countRows
181 , array1DAggExpr
182 , listAgg, listAggWithOrder, listAggExpr
183 , nonEmptyAgg, nonEmptyAggWithOrder, nonEmptyAggExpr
184 , groupBy
185 , DBMax, max
186 , DBMin, min
187 , DBSum, sum, sumWhere
188 , DBString, stringAgg
189 , count
190 , countStar
191 , countDistinct
192 , countWhere
193 , and
194 , or
196 -- ** Ordering
197 , orderBy
198 , Order
199 , asc
200 , desc
201 , nullsFirst
202 , nullsLast
204 -- * IO
205 , Serializable
207 -- * Running statements
208 -- ** @SELECT@
209 , select
211 -- ** @INSERT@
212 , Insert(..)
213 , OnConflict(..)
214 , insert
215 , toInsert
216 , toInsertDefaults
218 -- ** @DELETE@
219 , Delete(..)
220 , delete
222 -- ** @UPDATE@
223 , update
224 , Update(..)
226 -- ** @.. RETURNING@
227 , Returning(..)
229 -- ** @CREATE VIEW@
230 , createView
232 -- * TODO
233 -- TODO
234 -- These need organizing, but are reachable from Rel8's documentation so we
235 -- do need to export and document them.
236 , Array1D( Array1D )
237 , NotArray
238 , Nullable
239 , NotNull
240 , HTable
241 , Labelable
242 , ToExprs(..)
243 , FromExprs
244 , Result
245 , HKDT(..)
246 ) where
248-- base
249import Prelude ()
251-- rel8
252import Rel8.Aggregate
253import Rel8.Expr
254import Rel8.Expr.Aggregate
255import Rel8.Expr.Bool
256import Rel8.Expr.Eq
257import Rel8.Expr.Function
258import Rel8.Expr.Null
259import Rel8.Expr.Opaleye (unsafeCastExpr)
260import Rel8.Expr.Ord
261import Rel8.Expr.Order
262import Rel8.Expr.Serialize
263import Rel8.Kind.Necessity
264import Rel8.Order
265import Rel8.Query
266import Rel8.Query.Aggregate
267import Rel8.Query.Distinct
268import Rel8.Query.Each
269import Rel8.Query.Either
270import Rel8.Query.Exists
271import Rel8.Query.Filter
272import Rel8.Query.Limit
273import Rel8.Query.List
274import Rel8.Query.Maybe
275import Rel8.Query.Null
276import Rel8.Query.Order
277import Rel8.Query.SQL (showQuery)
278import Rel8.Query.Set
279import Rel8.Query.These
280import Rel8.Query.Values
281import Rel8.Schema.Column
282import Rel8.Schema.Context.Label
283import Rel8.Schema.Field
284import Rel8.Schema.Generic
285import Rel8.Schema.HKD
286import Rel8.Schema.HTable
287import Rel8.Schema.Name
288import Rel8.Schema.Null hiding ( nullable )
289import Rel8.Schema.Result
290import Rel8.Schema.Table
291import Rel8.Statement.Delete
292import Rel8.Statement.Insert
293import Rel8.Statement.Returning
294import Rel8.Statement.Select
295import Rel8.Statement.Update
296import Rel8.Statement.View
297import Rel8.Table
298import Rel8.Table.Aggregate
299import Rel8.Table.Alternative
300import Rel8.Table.Bool
301import Rel8.Table.Either
302import Rel8.Table.Eq
303import Rel8.Table.Insert
304import Rel8.Table.List
305import Rel8.Table.Maybe
306import Rel8.Table.Name
307import Rel8.Table.NonEmpty
308import Rel8.Table.Ord
309import Rel8.Table.Order
310import Rel8.Table.Serialize
311import Rel8.Table.These
312import Rel8.Type
313import Rel8.Type.Array1D
314import Rel8.Type.Composite
315import Rel8.Type.Eq
316import Rel8.Type.Enum
317import Rel8.Type.Information
318import Rel8.Type.JSONBEncoded
319import Rel8.Type.JSONEncoded
320import Rel8.Type.Monoid
321import Rel8.Type.Num
322import Rel8.Type.Ord
323import Rel8.Type.ReadShow
324import Rel8.Type.Semigroup
325import Rel8.Type.String
326import Rel8.Type.Sum