on 2cdc394 help sign in
rel8/src/Rel8.hs
340 lines 6.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(..)
18 , Enum(..)
20 -- *** @TypeInformation@
21 , TypeInformation(..)
22 , mapTypeInformation
23 , parseTypeInformation
25 -- ** The @DBType@ hierarchy
26 , DBSemigroup(..)
27 , DBMonoid(..)
28 , DBNum
29 , DBIntegral
30 , DBFractional
32 -- * Tables and higher-kinded tables
33 , Rel8able, KRel8able
34 , Column, Field, Necessity( Required, Optional )
35 , Default
36 , HADT
37 , HEither
38 , HMaybe
39 , HList
40 , HNonEmpty
41 , HThese
42 , Lift
44 , Table(..)
45 , AltTable((<|>:))
46 , EqTable, (==:), (/=:)
47 , OrdTable, ascTable, descTable
48 , lit
49 , bool
50 , case_
52 -- ** @MaybeTable@
53 , MaybeTable
54 , maybeTable, ($?), nothingTable, justTable
55 , isNothingTable, isJustTable
56 , optional
57 , catMaybeTable
58 , bindMaybeTable
59 , traverseMaybeTable
61 -- ** @EitherTable@
62 , EitherTable
63 , eitherTable, leftTable, rightTable
64 , isLeftTable, isRightTable
65 , keepLeftTable
66 , keepRightTable
67 , bindEitherTable
68 , bitraverseEitherTable
70 -- ** @TheseTable@
71 , TheseTable
72 , theseTable, thisTable, thatTable, thoseTable
73 , isThisTable, isThatTable, isThoseTable
74 , hasHereTable, hasThereTable
75 , justHereTable, justThereTable
76 , alignBy
77 , keepHereTable, loseHereTable
78 , keepThereTable, loseThereTable
79 , keepThisTable, loseThisTable
80 , keepThatTable, loseThatTable
81 , keepThoseTable, loseThoseTable
82 , bindTheseTable
83 , bitraverseTheseTable
85 -- ** @ADT@
86 , ADT
88 -- ** @ListTable@
89 , ListTable
90 , many
92 -- ** @NonEmptyTable@
93 , NonEmptyTable
94 , some
96 -- ** Table schemas
97 , TableSchema(..)
98 , Name
99 , namesFromLabels
100 , namesFromLabelsWith
102 -- * Expressions
103 , Expr
104 , Sql
105 , litExpr
106 , unsafeCastExpr
108 -- ** @null@
109 , null
110 , nullify
111 , nullable
112 , isNull
113 , isNonNull
114 , mapNull
115 , liftOpNull
116 , catNull
117 , coalesce
119 -- ** Boolean operations
120 , DBEq
121 , true, false, not_
122 , (&&.), and_
123 , (||.), or_
124 , (==.), (/=.), (==?), (/=?)
125 , in_
126 , boolExpr, caseExpr
128 -- ** Ordering
129 , DBOrd
130 , (<.), (<=.), (>.), (>=.)
131 , (<?), (<=?), (>?), (>=?)
132 , leastExpr, greatestExpr
134 -- ** Functions
135 , Function
136 , function
137 , nullaryFunction
138 , binaryOperator
140 -- * Queries
141 , Query
142 , showQuery
144 -- ** Selecting rows
145 , Selects
146 , each
147 , values
149 -- ** Filtering
150 , filter
151 , where_
152 , whereExists
153 , whereNotExists
154 , distinct
155 , distinctOn
156 , distinctOnBy
158 -- ** @LIMIT@/@OFFSET@
159 , limit
160 , offset
162 -- ** @UNION@
163 , union
164 , unionAll
166 -- ** @INTERSECT@
167 , intersect
168 , intersectAll
170 -- ** @EXCEPT@
171 , except
172 , exceptAll
174 -- ** @EXISTS@
175 , exists
176 , with
177 , withBy
178 , without
179 , withoutBy
181 -- ** Aggregation
182 , Aggregate
183 , aggregate
184 , countRows
185 , array1DAggExpr
186 , listAgg, listAggWithOrder, listAggExpr
187 , nonEmptyAgg, nonEmptyAggWithOrder, nonEmptyAggExpr
188 , groupBy
189 , DBMax, max
190 , DBMin, min
191 , DBSum, sum, sumWhere
192 , DBString, stringAgg
193 , count
194 , countStar
195 , countDistinct
196 , countWhere
197 , and
198 , or
200 -- ** Ordering
201 , orderBy
202 , Order
203 , asc
204 , desc
205 , nullsFirst
206 , nullsLast
208 -- * IO
209 , Serializable
211 -- * Running statements
212 -- ** @SELECT@
213 , select
215 -- ** @INSERT@
216 , Insert(..)
217 , OnConflict(..)
218 , insert
219 , toInsert
220 , toInsertDefaults
222 -- ** @DELETE@
223 , Delete(..)
224 , delete
226 -- ** @UPDATE@
227 , update
228 , Update(..)
230 -- ** @.. RETURNING@
231 , Returning(..)
233 -- ** @CREATE VIEW@
234 , createView
236 -- * TODO
237 -- TODO
238 -- These need organizing, but are reachable from Rel8's documentation so we
239 -- do need to export and document them.
240 , Array1D( Array1D )
241 , NotArray
242 , Nullable
243 , NotNull
244 , HTable
245 , Labelable
246 , ToExprs(..)
247 , FromExprs
248 , Result
249 , HKD
250 , HKDT(..)
251 ) where
253-- base
254import Prelude ()
256-- rel8
257import Rel8.Aggregate
258import Rel8.Column
259import Rel8.Column.ADT
260import Rel8.Column.Either
261import Rel8.Column.Field
262import Rel8.Column.Lift
263import Rel8.Column.List
264import Rel8.Column.Maybe
265import Rel8.Column.NonEmpty
266import Rel8.Column.These
267import Rel8.Expr
268import Rel8.Expr.Aggregate
269import Rel8.Expr.Bool
270import Rel8.Expr.Eq
271import Rel8.Expr.Function
272import Rel8.Expr.Null
273import Rel8.Expr.Opaleye (unsafeCastExpr)
274import Rel8.Expr.Ord
275import Rel8.Expr.Order
276import Rel8.Expr.Serialize
277import Rel8.Generic.Rel8able ( KRel8able, Rel8able )
278import Rel8.Kind.Necessity
279import Rel8.Order
280import Rel8.Query
281import Rel8.Query.Aggregate
282import Rel8.Query.Distinct
283import Rel8.Query.Each
284import Rel8.Query.Either
285import Rel8.Query.Exists
286import Rel8.Query.Filter
287import Rel8.Query.Limit
288import Rel8.Query.List
289import Rel8.Query.Maybe
290import Rel8.Query.Null
291import Rel8.Query.Order
292import Rel8.Query.SQL (showQuery)
293import Rel8.Query.Set
294import Rel8.Query.These
295import Rel8.Query.Values
296import Rel8.Schema.Context.Label
297import Rel8.Schema.HTable
298import Rel8.Schema.Name
299import Rel8.Schema.Null hiding ( nullable )
300import Rel8.Schema.Result ( Result )
301import Rel8.Schema.Table
302import Rel8.Statement.Delete
303import Rel8.Statement.Insert
304import Rel8.Statement.Returning
305import Rel8.Statement.Select
306import Rel8.Statement.Update
307import Rel8.Statement.View
308import Rel8.Table
309import Rel8.Table.ADT
310import Rel8.Table.Aggregate
311import Rel8.Table.Alternative
312import Rel8.Table.Bool
313import Rel8.Table.Either
314import Rel8.Table.Eq
315import Rel8.Table.HKD
316import Rel8.Table.Insert
317import Rel8.Table.List
318import Rel8.Table.Maybe
319import Rel8.Table.Name
320import Rel8.Table.NonEmpty
321import Rel8.Table.Ord
322import Rel8.Table.Order
323import Rel8.Table.Rel8able ()
324import Rel8.Table.Serialize
325import Rel8.Table.These
326import Rel8.Type
327import Rel8.Type.Array1D
328import Rel8.Type.Composite
329import Rel8.Type.Eq
330import Rel8.Type.Enum
331import Rel8.Type.Information
332import Rel8.Type.JSONBEncoded
333import Rel8.Type.JSONEncoded
334import Rel8.Type.Monoid
335import Rel8.Type.Num
336import Rel8.Type.Ord
337import Rel8.Type.ReadShow
338import Rel8.Type.Semigroup
339import Rel8.Type.String
340import Rel8.Type.Sum