on b0e6053 help sign in
rel8/src/Rel8.hs
311 lines 5.6 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 , Nullable
231 , NotNull
232 , HTable
233 , Labelable
234 , ToExprs(..)
235 , FromExprs
236 ) where
238-- base
239import Prelude ()
241-- rel8
242import Rel8.Aggregate
243import Rel8.Expr
244import Rel8.Expr.Aggregate
245import Rel8.Expr.Bool
246import Rel8.Expr.Eq
247import Rel8.Expr.Function
248import Rel8.Expr.Null
249import Rel8.Expr.Opaleye (unsafeCastExpr)
250import Rel8.Expr.Ord
251import Rel8.Expr.Order
252import Rel8.Expr.Serialize
253import Rel8.Kind.Necessity
254import Rel8.Order
255import Rel8.Query
256import Rel8.Query.Aggregate
257import Rel8.Query.Distinct
258import Rel8.Query.Each
259import Rel8.Query.Either
260import Rel8.Query.Exists
261import Rel8.Query.Filter
262import Rel8.Query.Limit
263import Rel8.Query.List
264import Rel8.Query.Maybe
265import Rel8.Query.Null
266import Rel8.Query.Order
267import Rel8.Query.SQL (showQuery)
268import Rel8.Query.Set
269import Rel8.Query.These
270import Rel8.Query.Values
271import Rel8.Schema.Column
272import Rel8.Schema.Context.Label
273import Rel8.Schema.Field
274import Rel8.Schema.Generic
275import Rel8.Schema.HTable
276import Rel8.Schema.Name
277import Rel8.Schema.Null hiding ( nullable )
278import Rel8.Schema.Table
279import Rel8.Statement.Delete
280import Rel8.Statement.Insert
281import Rel8.Statement.Returning
282import Rel8.Statement.Select
283import Rel8.Statement.Update
284import Rel8.Statement.View
285import Rel8.Table
286import Rel8.Table.Aggregate
287import Rel8.Table.Alternative
288import Rel8.Table.Bool
289import Rel8.Table.Either
290import Rel8.Table.Eq
291import Rel8.Table.Insert
292import Rel8.Table.List
293import Rel8.Table.Maybe
294import Rel8.Table.Name
295import Rel8.Table.NonEmpty
296import Rel8.Table.Ord
297import Rel8.Table.Order
298import Rel8.Table.Serialize
299import Rel8.Table.These
300import Rel8.Type
301import Rel8.Type.Eq
302import Rel8.Type.Information
303import Rel8.Type.JSONBEncoded
304import Rel8.Type.JSONEncoded
305import Rel8.Type.Monoid
306import Rel8.Type.Num
307import Rel8.Type.Ord
308import Rel8.Type.ReadShow
309import Rel8.Type.Semigroup
310import Rel8.Type.String
311import Rel8.Type.Sum