on dev help sign in
complete definition docs
commit1a0159c87786a4e76bd7c5cda54fc869a12534da authorEitan Chatav <eitan.chatav@gmail.com> dateWed 23 Aug 2017, 10:38 (9 years ago) parentdfd6885
1 file changed+28−16
squeal-postgresql/src/Squeal/PostgreSQL/Definition.hs+28−16
squeal-postgresql/src/Squeal/PostgreSQL/Definition.hs+28−16
@@ -1,3 +1,13 @@
1+{-|
2+Module: Squeal.PostgreSQL.Definition
3+Description: Squeal data definition language
4+Copyright: (c) Eitan Chatav, 2017
5+Maintainer: eitan@morphism.tech
6+Stability: experimental
7+
8+Squeal data definition language.
9+-}
10+
111{-# LANGUAGE
212 DataKinds
313 , DeriveDataTypeable
@@ -23,10 +33,10 @@ module Squeal.PostgreSQL.Definition
2333 , unique
2434 , primaryKey
2535 , foreignKey
26− , OnDelete (OnDeleteNoAction, OnDeleteRestrict, OnDeleteCascade)
27− , renderOnDelete
28− , OnUpdate (OnUpdateNoAction, OnUpdateRestrict, OnUpdateCascade)
29− , renderOnUpdate
36+ , OnDeleteClause (OnDeleteNoAction, OnDeleteRestrict, OnDeleteCascade)
37+ , renderOnDeleteClause
38+ , OnUpdateClause (OnUpdateNoAction, OnUpdateRestrict, OnUpdateCascade)
39+ , renderOnUpdateClause
3040 -- * Drop
3141 , dropTable
3242 -- * Alter
@@ -235,9 +245,9 @@ foreignKey
235245 -- ^ reference table
236246 -> NP (Column refcolumns) refsubcolumns
237247 -- ^ reference column or columns in the reference table
238− -> OnDelete
248+ -> OnDeleteClause
239249 -- ^ what to do when reference is deleted
240− -> OnUpdate
250+ -> OnUpdateClause
241251 -- ^ what to do when reference is updated
242252 -> TableConstraint schema columns
243253foreignKey columns reftable refcolumns onDelete onUpdate =
@@ -245,11 +255,11 @@ foreignKey columns reftable refcolumns onDelete onUpdate =
245255 "FOREIGN KEY" <+> parenthesized (renderCommaSeparated renderColumn columns)
246256 <+> "REFERENCES" <+> renderAlias reftable
247257 <+> parenthesized (renderCommaSeparated renderColumn refcolumns)
248− <+> renderOnDelete onDelete
249− <+> renderOnUpdate onUpdate
258+ <+> renderOnDeleteClause onDelete
259+ <+> renderOnUpdateClause onUpdate
250260
251261-- | `OnDelete` indicates what to do with rows that reference a deleted row.
252−data OnDelete
262+data OnDeleteClause
253263 = OnDeleteNoAction
254264 -- ^ if any referencing rows still exist when the constraint is checked,
255265 -- an error is raised
@@ -258,17 +268,18 @@ data OnDelete
258268 -- ^ specifies that when a referenced row is deleted,
259269 -- row(s) referencing it should be automatically deleted as well
260270 deriving (GHC.Generic,Show,Eq,Ord)
261−instance NFData OnDelete
271+instance NFData OnDeleteClause
262272
263−renderOnDelete :: OnDelete -> ByteString
264−renderOnDelete = \case
273+-- | Render `OnDeleteClause`.
274+renderOnDeleteClause :: OnDeleteClause -> ByteString
275+renderOnDeleteClause = \case
265276 OnDeleteNoAction -> "ON DELETE NO ACTION"
266277 OnDeleteRestrict -> "ON DELETE RESTRICT"
267278 OnDeleteCascade -> "ON DELETE CASCADE"
268279
269280-- | Analagous to `OnDelete` there is also `OnUpdate` which is invoked
270281-- when a referenced column is changed (updated).
271−data OnUpdate
282+data OnUpdateClause
272283 = OnUpdateNoAction
273284 -- ^ if any referencing rows has not changed when the constraint is checked,
274285 -- an error is raised
@@ -277,10 +288,11 @@ data OnUpdate
277288 -- ^ the updated values of the referenced column(s) should be copied
278289 -- into the referencing row(s)
279290 deriving (GHC.Generic,Show,Eq,Ord)
280−instance NFData OnUpdate
291+instance NFData OnUpdateClause
281292
282−renderOnUpdate :: OnUpdate -> ByteString
283−renderOnUpdate = \case
293+-- | Render `OnUpdateClause`.
294+renderOnUpdateClause :: OnUpdateClause -> ByteString
295+renderOnUpdateClause = \case
284296 OnUpdateNoAction -> "ON UPDATE NO ACTION"
285297 OnUpdateRestrict -> "ON UPDATE RESTRICT"
286298 OnUpdateCascade -> "ON UPDATE CASCADE"