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