on 4bc16d3 help sign in
rel8/src/Rel8.hs
339 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 , HKDT(..)
250 ) where
252-- base
253import Prelude ()
255-- rel8
256import Rel8.Aggregate
257import Rel8.Column
258import Rel8.Column.ADT
259import Rel8.Column.Either
260import Rel8.Column.Field
261import Rel8.Column.Lift
262import Rel8.Column.List
263import Rel8.Column.Maybe
264import Rel8.Column.NonEmpty
265import Rel8.Column.These
266import Rel8.Expr
267import Rel8.Expr.Aggregate
268import Rel8.Expr.Bool
269import Rel8.Expr.Eq
270import Rel8.Expr.Function
271import Rel8.Expr.Null
272import Rel8.Expr.Opaleye (unsafeCastExpr)
273import Rel8.Expr.Ord
274import Rel8.Expr.Order
275import Rel8.Expr.Serialize
276import Rel8.Generic.Rel8able ( KRel8able, Rel8able )
277import Rel8.Kind.Necessity
278import Rel8.Order
279import Rel8.Query
280import Rel8.Query.Aggregate
281import Rel8.Query.Distinct
282import Rel8.Query.Each
283import Rel8.Query.Either
284import Rel8.Query.Exists
285import Rel8.Query.Filter
286import Rel8.Query.Limit
287import Rel8.Query.List
288import Rel8.Query.Maybe
289import Rel8.Query.Null
290import Rel8.Query.Order
291import Rel8.Query.SQL (showQuery)
292import Rel8.Query.Set
293import Rel8.Query.These
294import Rel8.Query.Values
295import Rel8.Schema.Context.Label
296import Rel8.Schema.HTable
297import Rel8.Schema.Name
298import Rel8.Schema.Null hiding ( nullable )
299import Rel8.Schema.Result ( Result )
300import Rel8.Schema.Table
301import Rel8.Statement.Delete
302import Rel8.Statement.Insert
303import Rel8.Statement.Returning
304import Rel8.Statement.Select
305import Rel8.Statement.Update
306import Rel8.Statement.View
307import Rel8.Table
308import Rel8.Table.ADT
309import Rel8.Table.Aggregate
310import Rel8.Table.Alternative
311import Rel8.Table.Bool
312import Rel8.Table.Either
313import Rel8.Table.Eq
314import Rel8.Table.HKD
315import Rel8.Table.Insert
316import Rel8.Table.List
317import Rel8.Table.Maybe
318import Rel8.Table.Name
319import Rel8.Table.NonEmpty
320import Rel8.Table.Ord
321import Rel8.Table.Order
322import Rel8.Table.Rel8able ()
323import Rel8.Table.Serialize
324import Rel8.Table.These
325import Rel8.Type
326import Rel8.Type.Array1D
327import Rel8.Type.Composite
328import Rel8.Type.Eq
329import Rel8.Type.Enum
330import Rel8.Type.Information
331import Rel8.Type.JSONBEncoded
332import Rel8.Type.JSONEncoded
333import Rel8.Type.Monoid
334import Rel8.Type.Num
335import Rel8.Type.Ord
336import Rel8.Type.ReadShow
337import Rel8.Type.Semigroup
338import Rel8.Type.String
339import Rel8.Type.Sum