on 032242f help sign in
rel8/src/Rel8.hs
378 lines 7.0 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 -- * IO
248 , Serializable
249 , ToExprs
250 , Result
252 -- * Running statements
253 -- $running
255 -- ** @SELECT@
256 , select
258 -- ** @INSERT@
259 , Insert(..)
260 , OnConflict(..)
261 , insert
262 , unsafeDefault
264 -- ** @DELETE@
265 , Delete(..)
266 , delete
268 -- ** @UPDATE@
269 , Update(..)
270 , update
272 -- ** @.. RETURNING@
273 , Returning(..)
275 -- ** @CREATE VIEW@
276 , createView
278 -- ** Sequences
279 , nextval
280 , evaluate
281 ) where
283-- base
284import Prelude ()
286-- rel8
287import Rel8.Aggregate
288import Rel8.Column
289import Rel8.Column.ADT
290import Rel8.Column.Either
291import Rel8.Column.Lift
292import Rel8.Column.List
293import Rel8.Column.Maybe
294import Rel8.Column.NonEmpty
295import Rel8.Column.These
296import Rel8.Expr
297import Rel8.Expr.Aggregate
298import Rel8.Expr.Bool
299import Rel8.Expr.Default
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.Field
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.Projection
354import Rel8.Table.Rel8able ()
355import Rel8.Table.Serialize
356import Rel8.Table.These
357import Rel8.Table.Transpose
358import Rel8.Type
359import Rel8.Type.Composite
360import Rel8.Type.Eq
361import Rel8.Type.Enum
362import Rel8.Type.Information
363import Rel8.Type.JSONBEncoded
364import Rel8.Type.JSONEncoded
365import Rel8.Type.Monoid
366import Rel8.Type.Num
367import Rel8.Type.Ord
368import Rel8.Type.ReadShow
369import Rel8.Type.Semigroup
370import Rel8.Type.String
371import Rel8.Type.Sum
374-- $running
375-- To run queries and otherwise interact with a PostgreSQL database, Rel8
376-- provides 'select', 'insert', 'update' and 'delete' functions. Note that
377-- 'insert', 'update' and 'delete' will generally need the
378-- `DuplicateRecordFields` language extension enabled.