on 08dea9f help sign in
rel8/src/Rel8.hs
368 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
102 -- ** @NonEmptyTable@
103 , NonEmptyTable
104 , nonEmptyTable
105 , insertNonEmptyTable
106 , nameNonEmptyTable
107 , some
109 -- ** @ADT@
110 , ADT, ADTable, fromADT, toADT
111 , ConstructADT, constructADT
112 , DeconstructADT, deconstructADT
113 , InsertADT, insertADT
114 , NameADT, nameADT
115 , AggregateADT, aggregateADT
117 -- ** @HKD@
118 , HKD, HKDable, fromHKD, toHKD
119 , ConstructHKD, constructHKD
120 , DeconstructHKD, deconstructHKD
121 , InsertHKD, insertHKD
122 , NameHKD, nameHKD
123 , AggregateHKD, aggregateHKD
125 -- ** Table schemas
126 , TableSchema(..)
127 , Name
128 , namesFromLabels
129 , namesFromLabelsWith
131 -- * Expressions
132 , Expr
133 , Sql
134 , litExpr
135 , unsafeCastExpr
137 -- ** @null@
138 , null
139 , nullify
140 , nullable
141 , isNull
142 , isNonNull
143 , mapNull
144 , liftOpNull
145 , catNull
146 , coalesce
148 -- ** Boolean operations
149 , DBEq
150 , true, false, not_
151 , (&&.), and_
152 , (||.), or_
153 , (==.), (/=.), (==?), (/=?)
154 , in_
155 , boolExpr, caseExpr
157 -- ** Ordering
158 , DBOrd
159 , (<.), (<=.), (>.), (>=.)
160 , (<?), (<=?), (>?), (>=?)
161 , leastExpr, greatestExpr
163 -- ** Functions
164 , Function
165 , function
166 , nullaryFunction
167 , binaryOperator
169 -- * Queries
170 , Query
171 , showQuery
173 -- ** Selecting rows
174 , Selects
175 , each
176 , values
178 -- ** Filtering
179 , filter
180 , where_
181 , whereExists
182 , whereNotExists
183 , distinct
184 , distinctOn
185 , distinctOnBy
187 -- ** @LIMIT@/@OFFSET@
188 , limit
189 , offset
191 -- ** @UNION@
192 , union
193 , unionAll
195 -- ** @INTERSECT@
196 , intersect
197 , intersectAll
199 -- ** @EXCEPT@
200 , except
201 , exceptAll
203 -- ** @EXISTS@
204 , exists
205 , with
206 , withBy
207 , without
208 , withoutBy
210 -- ** Aggregation
211 , Aggregate
212 , aggregate
213 , countRows
214 , array1DAggExpr
215 , listAgg, listAggWithOrder, listAggExpr
216 , nonEmptyAgg, nonEmptyAggWithOrder, nonEmptyAggExpr
217 , groupBy
218 , DBMax, max
219 , DBMin, min
220 , DBSum, sum, sumWhere
221 , DBString, stringAgg
222 , count
223 , countStar
224 , countDistinct
225 , countWhere
226 , and
227 , or
229 -- ** Ordering
230 , orderBy
231 , Order
232 , asc
233 , desc
234 , nullsFirst
235 , nullsLast
237 -- * IO
238 , Serializable
240 -- * Running statements
241 -- ** @SELECT@
242 , select
244 -- ** @INSERT@
245 , Insert(..)
246 , OnConflict(..)
247 , insert
248 , toInsert
249 , toInsertDefaults
251 -- ** @DELETE@
252 , Delete(..)
253 , delete
255 -- ** @UPDATE@
256 , update
257 , Update(..)
259 -- ** @.. RETURNING@
260 , Returning(..)
262 -- ** @CREATE VIEW@
263 , createView
265 -- * TODO
266 -- TODO
267 -- These need organizing, but are reachable from Rel8's documentation so we
268 -- do need to export and document them.
269 , Array1D( Array1D )
270 , NotArray
271 , Nullable
272 , NotNull
273 , HTable
274 , Labelable
275 , ToExprs(..)
276 , FromExprs
277 , Result
278 , HKDT(..)
279 ) where
281-- base
282import Prelude ()
284-- rel8
285import Rel8.Aggregate
286import Rel8.Column
287import Rel8.Column.ADT
288import Rel8.Column.Either
289import Rel8.Column.Field
290import Rel8.Column.Lift
291import Rel8.Column.List
292import Rel8.Column.Maybe
293import Rel8.Column.NonEmpty
294import Rel8.Column.These
295import Rel8.Expr
296import Rel8.Expr.Aggregate
297import Rel8.Expr.Bool
298import Rel8.Expr.Eq
299import Rel8.Expr.Function
300import Rel8.Expr.Null
301import Rel8.Expr.Opaleye (unsafeCastExpr)
302import Rel8.Expr.Ord
303import Rel8.Expr.Order
304import Rel8.Expr.Serialize
305import Rel8.Generic.Rel8able ( KRel8able, Rel8able )
306import Rel8.Kind.Necessity
307import Rel8.Order
308import Rel8.Query
309import Rel8.Query.Aggregate
310import Rel8.Query.Distinct
311import Rel8.Query.Each
312import Rel8.Query.Either
313import Rel8.Query.Exists
314import Rel8.Query.Filter
315import Rel8.Query.Limit
316import Rel8.Query.List
317import Rel8.Query.Maybe
318import Rel8.Query.Null
319import Rel8.Query.Order
320import Rel8.Query.SQL (showQuery)
321import Rel8.Query.Set
322import Rel8.Query.These
323import Rel8.Query.Values
324import Rel8.Schema.Context.Label
325import Rel8.Schema.HTable
326import Rel8.Schema.Name
327import Rel8.Schema.Null hiding ( nullable )
328import Rel8.Schema.Result ( Result )
329import Rel8.Schema.Table
330import Rel8.Statement.Delete
331import Rel8.Statement.Insert
332import Rel8.Statement.Returning
333import Rel8.Statement.Select
334import Rel8.Statement.Update
335import Rel8.Statement.View
336import Rel8.Table
337import Rel8.Table.ADT
338import Rel8.Table.Aggregate
339import Rel8.Table.Alternative
340import Rel8.Table.Bool
341import Rel8.Table.Either
342import Rel8.Table.Eq
343import Rel8.Table.HKD
344import Rel8.Table.Insert
345import Rel8.Table.List
346import Rel8.Table.Maybe
347import Rel8.Table.Name
348import Rel8.Table.NonEmpty
349import Rel8.Table.Ord
350import Rel8.Table.Order
351import Rel8.Table.Rel8able ()
352import Rel8.Table.Serialize
353import Rel8.Table.These
354import Rel8.Type
355import Rel8.Type.Array1D
356import Rel8.Type.Composite
357import Rel8.Type.Eq
358import Rel8.Type.Enum
359import Rel8.Type.Information
360import Rel8.Type.JSONBEncoded
361import Rel8.Type.JSONEncoded
362import Rel8.Type.Monoid
363import Rel8.Type.Num
364import Rel8.Type.Ord
365import Rel8.Type.ReadShow
366import Rel8.Type.Semigroup
367import Rel8.Type.String
368import Rel8.Type.Sum