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