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