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