on fb4e1a5 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, Label
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 , mapNullable
105 , liftOpNullable
106 , catNullable
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 , listAgg, listAggExpr
176 , nonEmptyAgg, nonEmptyAggExpr
177 , groupBy
178 , DBMax, max
179 , DBMin, min
180 , DBSum, sum, sumWhere
181 , DBString, stringAgg
182 , count
183 , countStar
184 , countDistinct
185 , countWhere
186 , and
187 , or
189 -- ** Ordering
190 , orderBy
191 , Order
192 , asc
193 , desc
194 , nullsFirst
195 , nullsLast
197 -- * IO
198 , Serializable
200 -- * Running statements
201 -- ** @SELECT@
202 , select
204 -- ** @INSERT@
205 , Insert(..)
206 , OnConflict(..)
207 , insert
208 , toInsert
209 , toInsertDefaults
211 -- ** @DELETE@
212 , Delete(..)
213 , delete
215 -- ** @UPDATE@
216 , update
217 , Update(..)
219 -- ** @.. RETURNING@
220 , Returning(..)
222 -- ** @CREATE VIEW@
223 , createView
225 -- * TODO
226 -- TODO
227 -- These need organizing, but are reachable from Rel8's documentation so we
228 -- do need to export and document them.
229 , HasNullability
230 , NotNull
231 , HTable
232 , Labelable
233 , Context
234 ) where
236-- base
237import Prelude ()
239-- rel8
240import Rel8.Aggregate
241import Rel8.Expr
242import Rel8.Expr.Aggregate
243import Rel8.Expr.Bool
244import Rel8.Expr.Eq
245import Rel8.Expr.Function
246import Rel8.Expr.Null
247import Rel8.Expr.Opaleye (unsafeCastExpr)
248import Rel8.Expr.Ord
249import Rel8.Expr.Order
250import Rel8.Expr.Serialize
251import Rel8.Kind.Necessity
252import Rel8.Order
253import Rel8.Query
254import Rel8.Query.Aggregate
255import Rel8.Query.Distinct
256import Rel8.Query.Each
257import Rel8.Query.Either
258import Rel8.Query.Exists
259import Rel8.Query.Filter
260import Rel8.Query.Limit
261import Rel8.Query.List
262import Rel8.Query.Maybe
263import Rel8.Query.Null
264import Rel8.Query.Order
265import Rel8.Query.SQL (showQuery)
266import Rel8.Query.Set
267import Rel8.Query.These
268import Rel8.Query.Values
269import Rel8.Schema.Column
270import Rel8.Schema.Context.Label
271import Rel8.Schema.Field (Field)
272import Rel8.Schema.Generic
273import Rel8.Schema.HTable
274import Rel8.Schema.Name
275import Rel8.Schema.Nullability
276import Rel8.Schema.Table
277import Rel8.Statement.Delete
278import Rel8.Statement.Insert
279import Rel8.Statement.Returning
280import Rel8.Statement.Select
281import Rel8.Statement.Update
282import Rel8.Statement.View
283import Rel8.Table
284import Rel8.Table.Aggregate
285import Rel8.Table.Alternative
286import Rel8.Table.Bool
287import Rel8.Table.Either
288import Rel8.Table.Eq
289import Rel8.Table.Insert
290import Rel8.Table.List
291import Rel8.Table.Maybe
292import Rel8.Table.Name
293import Rel8.Table.NonEmpty
294import Rel8.Table.Ord
295import Rel8.Table.Order
296import Rel8.Table.Serialize
297import Rel8.Table.These
298import Rel8.Type
299import Rel8.Type.Eq
300import Rel8.Type.Information
301import Rel8.Type.JSONBEncoded
302import Rel8.Type.JSONEncoded
303import Rel8.Type.Monoid
304import Rel8.Type.Num
305import Rel8.Type.Ord
306import Rel8.Type.ReadShow
307import Rel8.Type.Semigroup
308import Rel8.Type.String
309import Rel8.Type.Sum