on 29cdfdb help sign in
rel8/src/Rel8.hs
387 lines 7.2 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 , HTable
46 , Transposes
47 , AltTable((<|>:))
48 , AlternativeTable( emptyTable )
49 , EqTable, (==:), (/=:)
50 , OrdTable, ascTable, descTable
51 , lit
52 , bool
53 , case_
55 -- ** @MaybeTable@
56 , MaybeTable
57 , maybeTable, ($?), nothingTable, justTable
58 , isNothingTable, isJustTable
59 , optional
60 , catMaybeTable
61 , traverseMaybeTable
62 , aggregateMaybeTable
63 , nameMaybeTable
65 -- ** @EitherTable@
66 , EitherTable
67 , eitherTable, leftTable, rightTable
68 , isLeftTable, isRightTable
69 , keepLeftTable
70 , keepRightTable
71 , bitraverseEitherTable
72 , aggregateEitherTable
73 , nameEitherTable
75 -- ** @TheseTable@
76 , TheseTable
77 , theseTable, thisTable, thatTable, thoseTable
78 , isThisTable, isThatTable, isThoseTable
79 , hasHereTable, hasThereTable
80 , justHereTable, justThereTable
81 , alignBy
82 , keepHereTable, loseHereTable
83 , keepThereTable, loseThereTable
84 , keepThisTable, loseThisTable
85 , keepThatTable, loseThatTable
86 , keepThoseTable, loseThoseTable
87 , bitraverseTheseTable
88 , aggregateTheseTable
89 , nameTheseTable
91 -- ** @ListTable@
92 , ListTable
93 , listTable
94 , nameListTable
95 , many
96 , manyExpr
97 , catListTable
98 , catList
100 -- ** @NonEmptyTable@
101 , NonEmptyTable
102 , nonEmptyTable
103 , nameNonEmptyTable
104 , some
105 , someExpr
106 , catNonEmptyTable
107 , catNonEmpty
109 -- ** @ADT@
110 , ADT, ADTable
111 , BuildADT, buildADT
112 , ConstructADT, constructADT
113 , DeconstructADT, deconstructADT
114 , NameADT, nameADT
115 , AggregateADT, aggregateADT
117 -- ** @HKD@
118 , HKD, HKDable
119 , BuildHKD, buildHKD
120 , ConstructHKD, constructHKD
121 , DeconstructHKD, deconstructHKD
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
136 , unsafeLiteral
138 -- ** @null@
139 , NotNull
140 , Nullable
141 , null
142 , nullify
143 , nullable
144 , isNull
145 , isNonNull
146 , mapNull
147 , liftOpNull
148 , catNull
149 , coalesce
151 -- ** Boolean operations
152 , DBEq
153 , true, false, not_
154 , (&&.), and_
155 , (||.), or_
156 , (==.), (/=.), (==?), (/=?)
157 , in_
158 , boolExpr, caseExpr
160 -- ** Ordering
161 , DBOrd
162 , (<.), (<=.), (>.), (>=.)
163 , (<?), (<=?), (>?), (>=?)
164 , leastExpr, greatestExpr
166 -- ** Functions
167 , Function
168 , function
169 , nullaryFunction
170 , binaryOperator
172 -- * Queries
173 , Query
174 , showQuery
176 -- ** Projection
177 , Projection
178 , Projectable( project )
179 , Biprojectable( biproject )
180 , Projecting
181 , Field
183 -- ** Selecting rows
184 , Selects
185 , each
186 , values
188 -- ** Filtering
189 , filter
190 , where_
191 , present
192 , absent
193 , distinct
194 , distinctOn
195 , distinctOnBy
197 -- ** @LIMIT@/@OFFSET@
198 , limit
199 , offset
201 -- ** @UNION@
202 , union
203 , unionAll
205 -- ** @INTERSECT@
206 , intersect
207 , intersectAll
209 -- ** @EXCEPT@
210 , except
211 , exceptAll
213 -- ** @EXISTS@
214 , exists
215 , with
216 , withBy
217 , without
218 , withoutBy
220 -- ** Aggregation
221 , Aggregate
222 , Aggregates
223 , aggregate
224 , countRows
225 , groupBy
226 , listAgg, listAggExpr
227 , nonEmptyAgg, nonEmptyAggExpr
228 , DBMax, max
229 , DBMin, min
230 , DBSum, sum, sumWhere
231 , DBString, stringAgg
232 , count
233 , countStar
234 , countDistinct
235 , countWhere
236 , and
237 , or
239 -- ** Ordering
240 , orderBy
241 , Order
242 , asc
243 , desc
244 , nullsFirst
245 , nullsLast
247 -- ** Bindings
248 , rebind
250 -- * IO
251 , Serializable
252 , ToExprs
253 , Result
255 -- * Running statements
256 -- $running
258 -- ** @SELECT@
259 , select
261 -- ** @INSERT@
262 , Insert(..)
263 , OnConflict(..)
264 , Upsert(..)
265 , insert
266 , unsafeDefault
267 , showInsert
269 -- ** @DELETE@
270 , Delete(..)
271 , delete
272 , showDelete
274 -- ** @UPDATE@
275 , Update(..)
276 , update
277 , showUpdate
279 -- ** @.. RETURNING@
280 , Returning(..)
282 -- ** @CREATE VIEW@
283 , createView
285 -- ** Sequences
286 , nextval
287 , evaluate
288 ) where
290-- base
291import Prelude ()
293-- rel8
294import Rel8.Aggregate
295import Rel8.Column
296import Rel8.Column.ADT
297import Rel8.Column.Either
298import Rel8.Column.Lift
299import Rel8.Column.List
300import Rel8.Column.Maybe
301import Rel8.Column.NonEmpty
302import Rel8.Column.These
303import Rel8.Expr
304import Rel8.Expr.Aggregate
305import Rel8.Expr.Bool
306import Rel8.Expr.Default
307import Rel8.Expr.Eq
308import Rel8.Expr.Function
309import Rel8.Expr.Null
310import Rel8.Expr.Opaleye (unsafeCastExpr, unsafeLiteral)
311import Rel8.Expr.Ord
312import Rel8.Expr.Order
313import Rel8.Expr.Serialize
314import Rel8.Expr.Sequence
315import Rel8.Generic.Rel8able ( KRel8able, Rel8able )
316import Rel8.Order
317import Rel8.Query
318import Rel8.Query.Aggregate
319import Rel8.Query.Distinct
320import Rel8.Query.Each
321import Rel8.Query.Either
322import Rel8.Query.Evaluate
323import Rel8.Query.Exists
324import Rel8.Query.Filter
325import Rel8.Query.Limit
326import Rel8.Query.List
327import Rel8.Query.Maybe
328import Rel8.Query.Null
329import Rel8.Query.Order
330import Rel8.Query.SQL (showQuery)
331import Rel8.Query.Set
332import Rel8.Query.These
333import Rel8.Query.Values
334import Rel8.Schema.Field
335import Rel8.Schema.HTable
336import Rel8.Schema.Name
337import Rel8.Schema.Null hiding ( nullable )
338import Rel8.Schema.Result ( Result )
339import Rel8.Schema.Table
340import Rel8.Statement.Delete
341import Rel8.Statement.Insert
342import Rel8.Statement.OnConflict
343import Rel8.Statement.Returning
344import Rel8.Statement.Select
345import Rel8.Statement.SQL
346import Rel8.Statement.Update
347import Rel8.Statement.View
348import Rel8.Table
349import Rel8.Table.ADT
350import Rel8.Table.Aggregate
351import Rel8.Table.Alternative
352import Rel8.Table.Bool
353import Rel8.Table.Either
354import Rel8.Table.Eq
355import Rel8.Table.HKD
356import Rel8.Table.List
357import Rel8.Table.Maybe
358import Rel8.Table.Name
359import Rel8.Table.NonEmpty
360import Rel8.Table.Ord
361import Rel8.Table.Order
362import Rel8.Table.Projection
363import Rel8.Table.Rel8able ()
364import Rel8.Table.Serialize
365import Rel8.Table.These
366import Rel8.Table.Transpose
367import Rel8.Type
368import Rel8.Type.Composite
369import Rel8.Type.Eq
370import Rel8.Type.Enum
371import Rel8.Type.Information
372import Rel8.Type.JSONBEncoded
373import Rel8.Type.JSONEncoded
374import Rel8.Type.Monoid
375import Rel8.Type.Num
376import Rel8.Type.Ord
377import Rel8.Type.ReadShow
378import Rel8.Type.Semigroup
379import Rel8.Type.String
380import Rel8.Type.Sum
383-- $running
384-- To run queries and otherwise interact with a PostgreSQL database, Rel8
385-- provides 'select', 'insert', 'update' and 'delete' functions. Note that
386-- 'insert', 'update' and 'delete' will generally need the
387-- `DuplicateRecordFields` language extension enabled.