on 2ba99ea help sign in
rel8/src/Rel8.hs
364 lines 6.6 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 , Recontextualize
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 , nameMaybeTable
64 -- ** @EitherTable@
65 , EitherTable
66 , eitherTable, leftTable, rightTable
67 , isLeftTable, isRightTable
68 , keepLeftTable
69 , keepRightTable
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 , bitraverseTheseTable
86 , nameTheseTable
88 -- ** @ListTable@
89 , ListTable
90 , listTable
91 , nameListTable
92 , many
93 , manyExpr
94 , catListTable
95 , catList
97 -- ** @NonEmptyTable@
98 , NonEmptyTable
99 , nonEmptyTable
100 , nameNonEmptyTable
101 , some
102 , someExpr
103 , catNonEmptyTable
104 , catNonEmpty
106 -- ** @ADT@
107 , ADT, ADTable
108 , BuildADT, buildADT
109 , ConstructADT, constructADT
110 , DeconstructADT, deconstructADT
111 , NameADT, nameADT
112 , AggregateADT, aggregateADT
114 -- ** @HKD@
115 , HKD, HKDable
116 , BuildHKD, buildHKD
117 , ConstructHKD, constructHKD
118 , DeconstructHKD, deconstructHKD
119 , NameHKD, nameHKD
120 , AggregateHKD, aggregateHKD
122 -- ** Table schemas
123 , TableSchema(..)
124 , Name
125 , namesFromLabels
126 , namesFromLabelsWith
128 -- * Expressions
129 , Expr
130 , Sql
131 , litExpr
132 , unsafeCastExpr
133 , unsafeLiteral
135 -- ** @null@
136 , NotNull
137 , Nullable
138 , null
139 , nullify
140 , nullable
141 , isNull
142 , isNonNull
143 , mapNull
144 , liftOpNull
145 , catNull
146 , coalesce
148 -- ** Boolean operations
149 , DBEq
150 , true, false, not_
151 , (&&.), and_
152 , (||.), or_
153 , (==.), (/=.), (==?), (/=?)
154 , in_
155 , boolExpr, caseExpr
157 -- ** Ordering
158 , DBOrd
159 , (<.), (<=.), (>.), (>=.)
160 , (<?), (<=?), (>?), (>=?)
161 , leastExpr, greatestExpr
163 -- ** Functions
164 , Function
165 , function
166 , nullaryFunction
167 , binaryOperator
169 -- * Queries
170 , Query
171 , showQuery
173 -- ** Selecting rows
174 , Selects
175 , each
176 , values
178 -- ** Filtering
179 , filter
180 , where_
181 , whereExists
182 , whereNotExists
183 , distinct
184 , distinctOn
185 , distinctOnBy
187 -- ** @LIMIT@/@OFFSET@
188 , limit
189 , offset
191 -- ** @UNION@
192 , union
193 , unionAll
195 -- ** @INTERSECT@
196 , intersect
197 , intersectAll
199 -- ** @EXCEPT@
200 , except
201 , exceptAll
203 -- ** @EXISTS@
204 , exists
205 , with
206 , withBy
207 , without
208 , withoutBy
210 -- ** Aggregation
211 , Aggregate
212 , Aggregates
213 , aggregate
214 , countRows
215 , groupBy
216 , listAgg, listAggExpr
217 , nonEmptyAgg, nonEmptyAggExpr
218 , DBMax, max
219 , DBMin, min
220 , DBSum, sum, sumWhere
221 , DBString, stringAgg
222 , count
223 , countStar
224 , countDistinct
225 , countWhere
226 , and
227 , or
229 -- ** Ordering
230 , orderBy
231 , Order
232 , asc
233 , desc
234 , nullsFirst
235 , nullsLast
237 -- * IO
238 , Serializable
239 , ToExprs(..)
240 , FromExprs
241 , Result
243 -- * Running statements
244 -- ** @SELECT@
245 , select
247 -- ** @INSERT@
248 , Insert(..)
249 , OnConflict(..)
250 , insert
252 -- ** @DELETE@
253 , Delete(..)
254 , delete
256 -- ** @UPDATE@
257 , update
258 , Update(..)
260 -- ** @.. RETURNING@
261 , Returning(..)
263 -- ** @CREATE VIEW@
264 , createView
266 -- ** Sequences
267 , nextval
269 , Evaluate
270 , eval
271 , evaluate
273 -- * Implementation details
274 , Labelable
275 , HKDT(..)
276 ) where
278-- base
279import Prelude ()
281-- rel8
282import Rel8.Aggregate
283import Rel8.Column
284import Rel8.Column.ADT
285import Rel8.Column.Either
286import Rel8.Column.Lift
287import Rel8.Column.List
288import Rel8.Column.Maybe
289import Rel8.Column.NonEmpty
290import Rel8.Column.These
291import Rel8.Expr
292import Rel8.Expr.Aggregate
293import Rel8.Expr.Bool
294import Rel8.Expr.Eq
295import Rel8.Expr.Function
296import Rel8.Expr.Null
297import Rel8.Expr.Opaleye (unsafeCastExpr, unsafeLiteral)
298import Rel8.Expr.Ord
299import Rel8.Expr.Order
300import Rel8.Expr.Serialize
301import Rel8.Expr.Sequence
302import Rel8.Generic.Rel8able ( KRel8able, Rel8able )
303import Rel8.Order
304import Rel8.Query
305import Rel8.Query.Aggregate
306import Rel8.Query.Distinct
307import Rel8.Query.Each
308import Rel8.Query.Either
309import Rel8.Query.Evaluate
310import Rel8.Query.Exists
311import Rel8.Query.Filter
312import Rel8.Query.Limit
313import Rel8.Query.List
314import Rel8.Query.Maybe
315import Rel8.Query.Null
316import Rel8.Query.Order
317import Rel8.Query.SQL (showQuery)
318import Rel8.Query.Set
319import Rel8.Query.These
320import Rel8.Query.Values
321import Rel8.Schema.Context.Label
322import Rel8.Schema.HTable
323import Rel8.Schema.Name
324import Rel8.Schema.Null hiding ( nullable )
325import Rel8.Schema.Result ( Result )
326import Rel8.Schema.Table
327import Rel8.Statement.Delete
328import Rel8.Statement.Insert
329import Rel8.Statement.Returning
330import Rel8.Statement.Select
331import Rel8.Statement.Update
332import Rel8.Statement.View
333import Rel8.Table
334import Rel8.Table.ADT
335import Rel8.Table.Aggregate
336import Rel8.Table.Alternative
337import Rel8.Table.Bool
338import Rel8.Table.Either
339import Rel8.Table.Eq
340import Rel8.Table.HKD
341import Rel8.Table.List
342import Rel8.Table.Maybe
343import Rel8.Table.Name
344import Rel8.Table.NonEmpty
345import Rel8.Table.Ord
346import Rel8.Table.Order
347import Rel8.Table.Recontextualize
348import Rel8.Table.Rel8able ()
349import Rel8.Table.Serialize
350import Rel8.Table.These
351import Rel8.Type
352import Rel8.Type.Composite
353import Rel8.Type.Eq
354import Rel8.Type.Enum
355import Rel8.Type.Information
356import Rel8.Type.JSONBEncoded
357import Rel8.Type.JSONEncoded
358import Rel8.Type.Monoid
359import Rel8.Type.Num
360import Rel8.Type.Ord
361import Rel8.Type.ReadShow
362import Rel8.Type.Semigroup
363import Rel8.Type.String
364import Rel8.Type.Sum