on bdf2d87 help sign in
rel8/src/Rel8.hs
370 lines 6.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
31 , DBFloating
33 -- * Tables and higher-kinded tables
34 , Rel8able, KRel8able
35 , Column, Field, Necessity( Required, Optional )
36 , Default
37 , HADT
38 , HEither
39 , HMaybe
40 , HList
41 , HNonEmpty
42 , HThese
43 , Lift
45 , Table(..)
46 , AltTable((<|>:))
47 , EqTable, (==:), (/=:)
48 , OrdTable, ascTable, descTable
49 , lit
50 , bool
51 , case_
53 -- ** @MaybeTable@
54 , MaybeTable
55 , maybeTable, ($?), nothingTable, justTable
56 , isNothingTable, isJustTable
57 , optional
58 , catMaybeTable
59 , bindMaybeTable
60 , traverseMaybeTable
61 , aggregateMaybeTable
62 , insertMaybeTable
63 , nameMaybeTable
65 -- ** @EitherTable@
66 , EitherTable
67 , eitherTable, leftTable, rightTable
68 , isLeftTable, isRightTable
69 , keepLeftTable
70 , keepRightTable
71 , bindEitherTable
72 , bitraverseEitherTable
73 , aggregateEitherTable
74 , insertEitherTable
75 , nameEitherTable
77 -- ** @TheseTable@
78 , TheseTable
79 , theseTable, thisTable, thatTable, thoseTable
80 , isThisTable, isThatTable, isThoseTable
81 , hasHereTable, hasThereTable
82 , justHereTable, justThereTable
83 , alignBy
84 , keepHereTable, loseHereTable
85 , keepThereTable, loseThereTable
86 , keepThisTable, loseThisTable
87 , keepThatTable, loseThatTable
88 , keepThoseTable, loseThoseTable
89 , bindTheseTable
90 , bitraverseTheseTable
91 , aggregateTheseTable
92 , insertTheseTable
93 , nameTheseTable
95 -- ** @ListTable@
96 , ListTable
97 , listTable
98 , insertListTable
99 , nameListTable
100 , many
101 , manyExpr
103 -- ** @NonEmptyTable@
104 , NonEmptyTable
105 , nonEmptyTable
106 , insertNonEmptyTable
107 , nameNonEmptyTable
108 , some
109 , someExpr
111 -- ** @ADT@
112 , ADT, ADTable, fromADT, toADT
113 , ConstructADT, constructADT
114 , DeconstructADT, deconstructADT
115 , InsertADT, insertADT
116 , NameADT, nameADT
117 , AggregateADT, aggregateADT
119 -- ** @HKD@
120 , HKD, HKDable, fromHKD, toHKD
121 , ConstructHKD, constructHKD
122 , DeconstructHKD, deconstructHKD
123 , InsertHKD, insertHKD
124 , NameHKD, nameHKD
125 , AggregateHKD, aggregateHKD
127 -- ** Table schemas
128 , TableSchema(..)
129 , Name
130 , namesFromLabels
131 , namesFromLabelsWith
133 -- * Expressions
134 , Expr
135 , Sql
136 , litExpr
137 , unsafeCastExpr
139 -- ** @null@
140 , null
141 , nullify
142 , nullable
143 , isNull
144 , isNonNull
145 , mapNull
146 , liftOpNull
147 , catNull
148 , coalesce
150 -- ** Boolean operations
151 , DBEq
152 , true, false, not_
153 , (&&.), and_
154 , (||.), or_
155 , (==.), (/=.), (==?), (/=?)
156 , in_
157 , boolExpr, caseExpr
159 -- ** Ordering
160 , DBOrd
161 , (<.), (<=.), (>.), (>=.)
162 , (<?), (<=?), (>?), (>=?)
163 , leastExpr, greatestExpr
165 -- ** Functions
166 , Function
167 , function
168 , nullaryFunction
169 , binaryOperator
171 -- * Queries
172 , Query
173 , showQuery
175 -- ** Selecting rows
176 , Selects
177 , each
178 , values
180 -- ** Filtering
181 , filter
182 , where_
183 , whereExists
184 , whereNotExists
185 , distinct
186 , distinctOn
187 , distinctOnBy
189 -- ** @LIMIT@/@OFFSET@
190 , limit
191 , offset
193 -- ** @UNION@
194 , union
195 , unionAll
197 -- ** @INTERSECT@
198 , intersect
199 , intersectAll
201 -- ** @EXCEPT@
202 , except
203 , exceptAll
205 -- ** @EXISTS@
206 , exists
207 , with
208 , withBy
209 , without
210 , withoutBy
212 -- ** Aggregation
213 , Aggregate
214 , aggregate
215 , countRows
216 , array1DAggExpr
217 , listAgg, listAggWithOrder, listAggExpr
218 , nonEmptyAgg, nonEmptyAggWithOrder, nonEmptyAggExpr
219 , groupBy
220 , DBMax, max
221 , DBMin, min
222 , DBSum, sum, sumWhere
223 , DBString, stringAgg
224 , count
225 , countStar
226 , countDistinct
227 , countWhere
228 , and
229 , or
231 -- ** Ordering
232 , orderBy
233 , Order
234 , asc
235 , desc
236 , nullsFirst
237 , nullsLast
239 -- * IO
240 , Serializable
242 -- * Running statements
243 -- ** @SELECT@
244 , select
246 -- ** @INSERT@
247 , Insert(..)
248 , OnConflict(..)
249 , insert
250 , toInsert
251 , toInsertDefaults
253 -- ** @DELETE@
254 , Delete(..)
255 , delete
257 -- ** @UPDATE@
258 , update
259 , Update(..)
261 -- ** @.. RETURNING@
262 , Returning(..)
264 -- ** @CREATE VIEW@
265 , createView
267 -- * TODO
268 -- TODO
269 -- These need organizing, but are reachable from Rel8's documentation so we
270 -- do need to export and document them.
271 , Array1D( Array1D )
272 , NotArray
273 , Nullable
274 , NotNull
275 , HTable
276 , Labelable
277 , ToExprs(..)
278 , FromExprs
279 , Result
280 , HKDT(..)
281 ) where
283-- base
284import Prelude ()
286-- rel8
287import Rel8.Aggregate
288import Rel8.Column
289import Rel8.Column.ADT
290import Rel8.Column.Either
291import Rel8.Column.Field
292import Rel8.Column.Lift
293import Rel8.Column.List
294import Rel8.Column.Maybe
295import Rel8.Column.NonEmpty
296import Rel8.Column.These
297import Rel8.Expr
298import Rel8.Expr.Aggregate
299import Rel8.Expr.Bool
300import Rel8.Expr.Eq
301import Rel8.Expr.Function
302import Rel8.Expr.Null
303import Rel8.Expr.Opaleye (unsafeCastExpr)
304import Rel8.Expr.Ord
305import Rel8.Expr.Order
306import Rel8.Expr.Serialize
307import Rel8.Generic.Rel8able ( KRel8able, Rel8able )
308import Rel8.Kind.Necessity
309import Rel8.Order
310import Rel8.Query
311import Rel8.Query.Aggregate
312import Rel8.Query.Distinct
313import Rel8.Query.Each
314import Rel8.Query.Either
315import Rel8.Query.Exists
316import Rel8.Query.Filter
317import Rel8.Query.Limit
318import Rel8.Query.List
319import Rel8.Query.Maybe
320import Rel8.Query.Null
321import Rel8.Query.Order
322import Rel8.Query.SQL (showQuery)
323import Rel8.Query.Set
324import Rel8.Query.These
325import Rel8.Query.Values
326import Rel8.Schema.Context.Label
327import Rel8.Schema.HTable
328import Rel8.Schema.Name
329import Rel8.Schema.Null hiding ( nullable )
330import Rel8.Schema.Result ( Result )
331import Rel8.Schema.Table
332import Rel8.Statement.Delete
333import Rel8.Statement.Insert
334import Rel8.Statement.Returning
335import Rel8.Statement.Select
336import Rel8.Statement.Update
337import Rel8.Statement.View
338import Rel8.Table
339import Rel8.Table.ADT
340import Rel8.Table.Aggregate
341import Rel8.Table.Alternative
342import Rel8.Table.Bool
343import Rel8.Table.Either
344import Rel8.Table.Eq
345import Rel8.Table.HKD
346import Rel8.Table.Insert
347import Rel8.Table.List
348import Rel8.Table.Maybe
349import Rel8.Table.Name
350import Rel8.Table.NonEmpty
351import Rel8.Table.Ord
352import Rel8.Table.Order
353import Rel8.Table.Rel8able ()
354import Rel8.Table.Serialize
355import Rel8.Table.These
356import Rel8.Type
357import Rel8.Type.Array1D
358import Rel8.Type.Composite
359import Rel8.Type.Eq
360import Rel8.Type.Enum
361import Rel8.Type.Information
362import Rel8.Type.JSONBEncoded
363import Rel8.Type.JSONEncoded
364import Rel8.Type.Monoid
365import Rel8.Type.Num
366import Rel8.Type.Ord
367import Rel8.Type.ReadShow
368import Rel8.Type.Semigroup
369import Rel8.Type.String
370import Rel8.Type.Sum