@@ -1,3 +1,13 @@
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
8+Squeal data definition language.
1{-# LANGUAGE
11{-# LANGUAGE
3 , DeriveDataTypeable
13 , DeriveDataTypeable
@@ -23,10 +33,10 @@ module Squeal.PostgreSQL.Definition
24 , primaryKey
34 , primaryKey
25 , foreignKey
35 , foreignKey
26− , OnDelete (OnDeleteNoAction, OnDeleteRestrict, OnDeleteCascade)
36+ , OnDeleteClause (OnDeleteNoAction, OnDeleteRestrict, OnDeleteCascade)
27− , renderOnDelete
37+ , renderOnDeleteClause
28− , OnUpdate (OnUpdateNoAction, OnUpdateRestrict, OnUpdateCascade)
38+ , OnUpdateClause (OnUpdateNoAction, OnUpdateRestrict, OnUpdateCascade)
29− , renderOnUpdate
39+ , renderOnUpdateClause
31 , dropTable
41 , dropTable
32 -- * Alter
42 -- * Alter
@@ -235,9 +245,9 @@ foreignKey
235 -- ^ reference table
245 -- ^ reference table
236 -> NP (Column refcolumns) refsubcolumns
246 -> NP (Column refcolumns) refsubcolumns
237 -- ^ reference column or columns in the reference table
247 -- ^ reference column or columns in the reference table
238− -> OnDelete
248+ -> OnDeleteClause
239 -- ^ what to do when reference is deleted
249 -- ^ what to do when reference is deleted
240− -> OnUpdate
250+ -> OnUpdateClause
241 -- ^ what to do when reference is updated
251 -- ^ what to do when reference is updated
242 -> TableConstraint schema columns
252 -> TableConstraint schema columns
243foreignKey columns reftable refcolumns onDelete onUpdate =
253foreignKey columns reftable refcolumns onDelete onUpdate =
@@ -245,11 +255,11 @@ foreignKey columns reftable refcolumns onDelete onUpdate =
245 "FOREIGN KEY" <+> parenthesized (renderCommaSeparated renderColumn columns)
255 "FOREIGN KEY" <+> parenthesized (renderCommaSeparated renderColumn columns)
246 <+> "REFERENCES" <+> renderAlias reftable
256 <+> "REFERENCES" <+> renderAlias reftable
247 <+> parenthesized (renderCommaSeparated renderColumn refcolumns)
257 <+> parenthesized (renderCommaSeparated renderColumn refcolumns)
248− <+> renderOnDelete onDelete
258+ <+> renderOnDeleteClause onDelete
249− <+> renderOnUpdate onUpdate
259+ <+> renderOnUpdateClause onUpdate
251-- | `OnDelete` indicates what to do with rows that reference a deleted row.
261-- | `OnDelete` indicates what to do with rows that reference a deleted row.
252−data OnDelete
262+data OnDeleteClause
253 = OnDeleteNoAction
263 = OnDeleteNoAction
254 -- ^ if any referencing rows still exist when the constraint is checked,
264 -- ^ if any referencing rows still exist when the constraint is checked,
255 -- an error is raised
265 -- an error is raised
@@ -258,17 +268,18 @@ data OnDelete
258 -- ^ specifies that when a referenced row is deleted,
268 -- ^ specifies that when a referenced row is deleted,
259 -- row(s) referencing it should be automatically deleted as well
269 -- row(s) referencing it should be automatically deleted as well
260 deriving (GHC.Generic,Show,Eq,Ord)
270 deriving (GHC.Generic,Show,Eq,Ord)
261−instance NFData OnDelete
271+instance NFData OnDeleteClause
263−renderOnDelete :: OnDelete -> ByteString
273+-- | Render `OnDeleteClause`.
264−renderOnDelete = \case
274+renderOnDeleteClause :: OnDeleteClause -> ByteString
275+renderOnDeleteClause = \case
265 OnDeleteNoAction -> "ON DELETE NO ACTION"
276 OnDeleteNoAction -> "ON DELETE NO ACTION"
266 OnDeleteRestrict -> "ON DELETE RESTRICT"
277 OnDeleteRestrict -> "ON DELETE RESTRICT"
267 OnDeleteCascade -> "ON DELETE CASCADE"
278 OnDeleteCascade -> "ON DELETE CASCADE"
269-- | Analagous to `OnDelete` there is also `OnUpdate` which is invoked
280-- | Analagous to `OnDelete` there is also `OnUpdate` which is invoked
270-- when a referenced column is changed (updated).
281-- when a referenced column is changed (updated).
271−data OnUpdate
282+data OnUpdateClause
272 = OnUpdateNoAction
283 = OnUpdateNoAction
273 -- ^ if any referencing rows has not changed when the constraint is checked,
284 -- ^ if any referencing rows has not changed when the constraint is checked,
274 -- an error is raised
285 -- an error is raised
@@ -277,10 +288,11 @@ data OnUpdate
277 -- ^ the updated values of the referenced column(s) should be copied
288 -- ^ the updated values of the referenced column(s) should be copied
278 -- into the referencing row(s)
289 -- into the referencing row(s)
279 deriving (GHC.Generic,Show,Eq,Ord)
290 deriving (GHC.Generic,Show,Eq,Ord)
280−instance NFData OnUpdate
291+instance NFData OnUpdateClause
282−renderOnUpdate :: OnUpdate -> ByteString
293+-- | Render `OnUpdateClause`.
283−renderOnUpdate = \case
294+renderOnUpdateClause :: OnUpdateClause -> ByteString
295+renderOnUpdateClause = \case
284 OnUpdateNoAction -> "ON UPDATE NO ACTION"
296 OnUpdateNoAction -> "ON UPDATE NO ACTION"
285 OnUpdateRestrict -> "ON UPDATE RESTRICT"
297 OnUpdateRestrict -> "ON UPDATE RESTRICT"
286 OnUpdateCascade -> "ON UPDATE CASCADE"
298 OnUpdateCascade -> "ON UPDATE CASCADE"