on 1eaa683 help sign in
rel8/src/Rel8.hs
365 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 -- * 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 , Recontextualize
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.Lift
289import Rel8.Column.List
290import Rel8.Column.Maybe
291import Rel8.Column.NonEmpty
292import Rel8.Column.These
293import Rel8.Expr
294import Rel8.Expr.Aggregate
295import Rel8.Expr.Bool
296import Rel8.Expr.Eq
297import Rel8.Expr.Function
298import Rel8.Expr.Null
299import Rel8.Expr.Opaleye (unsafeCastExpr, unsafeLiteral)
300import Rel8.Expr.Ord
301import Rel8.Expr.Order
302import Rel8.Expr.Serialize
303import Rel8.Expr.Sequence
304import Rel8.Generic.Rel8able ( KRel8able, Rel8able )
305import Rel8.Order
306import Rel8.Query
307import Rel8.Query.Aggregate
308import Rel8.Query.Distinct
309import Rel8.Query.Each
310import Rel8.Query.Either
311import Rel8.Query.Exists
312import Rel8.Query.Filter
313import Rel8.Query.Limit
314import Rel8.Query.List
315import Rel8.Query.Maybe
316import Rel8.Query.Null
317import Rel8.Query.Order
318import Rel8.Query.SQL (showQuery)
319import Rel8.Query.Set
320import Rel8.Query.These
321import Rel8.Query.Values
322import Rel8.Schema.Context.Label
323import Rel8.Schema.HTable
324import Rel8.Schema.Name
325import Rel8.Schema.Null hiding ( nullable )
326import Rel8.Schema.Result ( Result )
327import Rel8.Schema.Table
328import Rel8.Statement.Delete
329import Rel8.Statement.Insert
330import Rel8.Statement.Returning
331import Rel8.Statement.Select
332import Rel8.Statement.Update
333import Rel8.Statement.View
334import Rel8.Table
335import Rel8.Table.ADT
336import Rel8.Table.Aggregate
337import Rel8.Table.Alternative
338import Rel8.Table.Bool
339import Rel8.Table.Either
340import Rel8.Table.Eq
341import Rel8.Table.HKD
342import Rel8.Table.List
343import Rel8.Table.Maybe
344import Rel8.Table.Name
345import Rel8.Table.NonEmpty
346import Rel8.Table.Ord
347import Rel8.Table.Order
348import Rel8.Table.Recontextualize
349import Rel8.Table.Rel8able ()
350import Rel8.Table.Serialize
351import Rel8.Table.These
352import Rel8.Type
353import Rel8.Type.Composite
354import Rel8.Type.Eq
355import Rel8.Type.Enum
356import Rel8.Type.Information
357import Rel8.Type.JSONBEncoded
358import Rel8.Type.JSONEncoded
359import Rel8.Type.Monoid
360import Rel8.Type.Num
361import Rel8.Type.Ord
362import Rel8.Type.ReadShow
363import Rel8.Type.Semigroup
364import Rel8.Type.String
365import Rel8.Type.Sum