on 60cbc6a help sign in
rel8/src/Rel8.hs
370 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(..), DBComposite(..), compose, decompose
18 , Enum(..), DBEnum(..), Enumable
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
36 , HADT
37 , HEither
38 , HMaybe
39 , HList
40 , HNonEmpty
41 , HThese
42 , Lift
44 , Table(..)
45 , AltTable((<|>:))
46 , AlternativeTable( emptyTable )
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 , nameMaybeTable
63 -- ** @EitherTable@
64 , EitherTable
65 , eitherTable, leftTable, rightTable
66 , isLeftTable, isRightTable
67 , keepLeftTable
68 , keepRightTable
69 , bindEitherTable
70 , bitraverseEitherTable
71 , nameEitherTable
73 -- ** @TheseTable@
74 , TheseTable
75 , theseTable, thisTable, thatTable, thoseTable
76 , isThisTable, isThatTable, isThoseTable
77 , hasHereTable, hasThereTable
78 , justHereTable, justThereTable
79 , alignBy
80 , keepHereTable, loseHereTable
81 , keepThereTable, loseThereTable
82 , keepThisTable, loseThisTable
83 , keepThatTable, loseThatTable
84 , keepThoseTable, loseThoseTable
85 , bindTheseTable
86 , bitraverseTheseTable
87 , nameTheseTable
89 -- ** @ListTable@
90 , ListTable
91 , listTable
92 , nameListTable
93 , many
94 , manyExpr
95 , catListTable
96 , catList
98 -- ** @NonEmptyTable@
99 , NonEmptyTable
100 , nonEmptyTable
101 , nameNonEmptyTable
102 , some
103 , someExpr
104 , catNonEmptyTable
105 , catNonEmpty
107 -- ** @ADT@
108 , ADT, ADTable, fromADT, toADT
109 , BuildADT, buildADT
110 , ConstructADT, constructADT
111 , DeconstructADT, deconstructADT
112 , NameADT, nameADT
113 , AggregateADT, aggregateADT
115 -- ** @HKD@
116 , HKD, HKDable, fromHKD, toHKD
117 , BuildHKD, buildHKD
118 , ConstructHKD, constructHKD
119 , DeconstructHKD, deconstructHKD
120 , NameHKD, nameHKD
121 , AggregateHKD, aggregateHKD
123 -- ** Table schemas
124 , TableSchema(..)
125 , Name
126 , namesFromLabels
127 , namesFromLabelsWith
129 -- * Expressions
130 , Expr
131 , Sql
132 , litExpr
133 , unsafeCastExpr
134 , unsafeLiteral
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 , Aggregates
212 , aggregate
213 , countRows
214 , groupBy
215 , listAgg, listAggExpr
216 , nonEmptyAgg, nonEmptyAggExpr
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
248 -- ** @DELETE@
249 , Delete(..)
250 , delete
252 -- ** @UPDATE@
253 , update
254 , Update(..)
256 -- ** @.. RETURNING@
257 , Returning(..)
259 -- ** @CREATE VIEW@
260 , createView
262 -- ** Sequences
263 , nextval
265 , Evaluate
266 , eval
267 , evaluate
269 -- * TODO
270 -- TODO
271 -- These need organizing, but are reachable from Rel8's documentation so we
272 -- do need to export and document them.
273 , Recontextualize
274 , Nullable
275 , NotNull
276 , HTable
277 , Labelable
278 , ToExprs(..)
279 , FromExprs
280 , Result
281 , HKDT(..)
282 ) where
284-- base
285import Prelude ()
287-- rel8
288import Rel8.Aggregate
289import Rel8.Column
290import Rel8.Column.ADT
291import Rel8.Column.Either
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, unsafeLiteral)
304import Rel8.Expr.Ord
305import Rel8.Expr.Order
306import Rel8.Expr.Serialize
307import Rel8.Expr.Sequence
308import Rel8.Generic.Rel8able ( KRel8able, Rel8able )
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.Evaluate
316import Rel8.Query.Exists
317import Rel8.Query.Filter
318import Rel8.Query.Limit
319import Rel8.Query.List
320import Rel8.Query.Maybe
321import Rel8.Query.Null
322import Rel8.Query.Order
323import Rel8.Query.SQL (showQuery)
324import Rel8.Query.Set
325import Rel8.Query.These
326import Rel8.Query.Values
327import Rel8.Schema.Context.Label
328import Rel8.Schema.HTable
329import Rel8.Schema.Name
330import Rel8.Schema.Null hiding ( nullable )
331import Rel8.Schema.Result ( Result )
332import Rel8.Schema.Table
333import Rel8.Statement.Delete
334import Rel8.Statement.Insert
335import Rel8.Statement.Returning
336import Rel8.Statement.Select
337import Rel8.Statement.Update
338import Rel8.Statement.View
339import Rel8.Table
340import Rel8.Table.ADT
341import Rel8.Table.Aggregate
342import Rel8.Table.Alternative
343import Rel8.Table.Bool
344import Rel8.Table.Either
345import Rel8.Table.Eq
346import Rel8.Table.HKD
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.Recontextualize
354import Rel8.Table.Rel8able ()
355import Rel8.Table.Serialize
356import Rel8.Table.These
357import Rel8.Type
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