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