on b4a542a help sign in
rel8/src/Rel8.hs
367 lines 6.7 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 , traverseMaybeTable
60 , nameMaybeTable
62 -- ** @EitherTable@
63 , EitherTable
64 , eitherTable, leftTable, rightTable
65 , isLeftTable, isRightTable
66 , keepLeftTable
67 , keepRightTable
68 , bitraverseEitherTable
69 , nameEitherTable
71 -- ** @TheseTable@
72 , TheseTable
73 , theseTable, thisTable, thatTable, thoseTable
74 , isThisTable, isThatTable, isThoseTable
75 , hasHereTable, hasThereTable
76 , justHereTable, justThereTable
77 , alignBy
78 , keepHereTable, loseHereTable
79 , keepThereTable, loseThereTable
80 , keepThisTable, loseThisTable
81 , keepThatTable, loseThatTable
82 , keepThoseTable, loseThoseTable
83 , bitraverseTheseTable
84 , nameTheseTable
86 -- ** @ListTable@
87 , ListTable
88 , listTable
89 , nameListTable
90 , many
91 , manyExpr
92 , catListTable
93 , catList
95 -- ** @NonEmptyTable@
96 , NonEmptyTable
97 , nonEmptyTable
98 , nameNonEmptyTable
99 , some
100 , someExpr
101 , catNonEmptyTable
102 , catNonEmpty
104 -- ** @ADT@
105 , ADT, ADTable
106 , BuildADT, buildADT
107 , ConstructADT, constructADT
108 , DeconstructADT, deconstructADT
109 , NameADT, nameADT
110 , AggregateADT, aggregateADT
112 -- ** @HKD@
113 , HKD, HKDable
114 , BuildHKD, buildHKD
115 , ConstructHKD, constructHKD
116 , DeconstructHKD, deconstructHKD
117 , NameHKD, nameHKD
118 , AggregateHKD, aggregateHKD
120 -- ** Table schemas
121 , TableSchema(..)
122 , Name
123 , namesFromLabels
124 , namesFromLabelsWith
126 -- * Expressions
127 , Expr
128 , Sql
129 , litExpr
130 , unsafeCastExpr
131 , unsafeLiteral
133 -- ** @null@
134 , null
135 , nullify
136 , nullable
137 , isNull
138 , isNonNull
139 , mapNull
140 , liftOpNull
141 , catNull
142 , coalesce
144 -- ** Boolean operations
145 , DBEq
146 , true, false, not_
147 , (&&.), and_
148 , (||.), or_
149 , (==.), (/=.), (==?), (/=?)
150 , in_
151 , boolExpr, caseExpr
153 -- ** Ordering
154 , DBOrd
155 , (<.), (<=.), (>.), (>=.)
156 , (<?), (<=?), (>?), (>=?)
157 , leastExpr, greatestExpr
159 -- ** Functions
160 , Function
161 , function
162 , nullaryFunction
163 , binaryOperator
165 -- * Queries
166 , Query
167 , showQuery
169 -- ** Selecting rows
170 , Selects
171 , each
172 , values
174 -- ** Filtering
175 , filter
176 , where_
177 , whereExists
178 , whereNotExists
179 , distinct
180 , distinctOn
181 , distinctOnBy
183 -- ** @LIMIT@/@OFFSET@
184 , limit
185 , offset
187 -- ** @UNION@
188 , union
189 , unionAll
191 -- ** @INTERSECT@
192 , intersect
193 , intersectAll
195 -- ** @EXCEPT@
196 , except
197 , exceptAll
199 -- ** @EXISTS@
200 , exists
201 , with
202 , withBy
203 , without
204 , withoutBy
206 -- ** Aggregation
207 , Aggregate
208 , Aggregates
209 , aggregate
210 , countRows
211 , groupBy
212 , listAgg, listAggExpr
213 , nonEmptyAgg, nonEmptyAggExpr
214 , DBMax, max
215 , DBMin, min
216 , DBSum, sum, sumWhere
217 , DBString, stringAgg
218 , count
219 , countStar
220 , countDistinct
221 , countWhere
222 , and
223 , or
225 -- ** Ordering
226 , orderBy
227 , Order
228 , asc
229 , desc
230 , nullsFirst
231 , nullsLast
233 -- * IO
234 , Serializable
236 -- * Running statements
237 -- ** @SELECT@
238 , select
240 -- ** @INSERT@
241 , Insert(..)
242 , OnConflict(..)
243 , insert
245 -- ** @DELETE@
246 , Delete(..)
247 , delete
249 -- ** @UPDATE@
250 , update
251 , Update(..)
253 -- ** @.. RETURNING@
254 , Returning(..)
256 -- ** @CREATE VIEW@
257 , createView
259 -- ** Sequences
260 , nextval
262 , Evaluate
263 , eval
264 , evaluate
266 -- * TODO
267 -- TODO
268 -- These need organizing, but are reachable from Rel8's documentation so we
269 -- do need to export and document them.
270 , Recontextualize
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.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, unsafeLiteral)
301import Rel8.Expr.Ord
302import Rel8.Expr.Order
303import Rel8.Expr.Serialize
304import Rel8.Expr.Sequence
305import Rel8.Generic.Rel8able ( KRel8able, Rel8able )
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.Evaluate
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.List
345import Rel8.Table.Maybe
346import Rel8.Table.Name
347import Rel8.Table.NonEmpty
348import Rel8.Table.Ord
349import Rel8.Table.Order
350import Rel8.Table.Recontextualize
351import Rel8.Table.Rel8able ()
352import Rel8.Table.Serialize
353import Rel8.Table.These
354import Rel8.Type
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