on dev help sign in
makes the docs prettier with `ForeignKeyed`
7f55fa5Eitan Chatav
squeal-postgresql/src/Squeal/PostgreSQL/Definition.hs+21−8
@@ -41,6 +41,7 @@ module Squeal.PostgreSQL.Definition
41 , unique
41 , unique
42 , primaryKey
42 , primaryKey
43 , foreignKey
43 , foreignKey
44+ , ForeignKeyed
44 , OnDeleteClause (OnDeleteNoAction, OnDeleteRestrict, OnDeleteCascade)
45 , OnDeleteClause (OnDeleteNoAction, OnDeleteRestrict, OnDeleteCascade)
45 , renderOnDeleteClause
46 , renderOnDeleteClause
46 , OnUpdateClause (OnUpdateNoAction, OnUpdateRestrict, OnUpdateCascade)
47 , OnUpdateClause (OnUpdateNoAction, OnUpdateRestrict, OnUpdateCascade)
@@ -366,14 +367,11 @@ primaryKey columns = UnsafeTableConstraintExpression $
366-- "CREATE TABLE \"employees\" (\"id\" serial, \"name\" text NOT NULL, \"employer_id\" integer, CONSTRAINT \"employees_pk\" PRIMARY KEY (\"id\"), CONSTRAINT \"employees_employer_fk\" FOREIGN KEY (\"employer_id\") REFERENCES \"employees\" (\"id\") ON DELETE CASCADE ON UPDATE CASCADE);"
367-- "CREATE TABLE \"employees\" (\"id\" serial, \"name\" text NOT NULL, \"employer_id\" integer, CONSTRAINT \"employees_pk\" PRIMARY KEY (\"id\"), CONSTRAINT \"employees_employer_fk\" FOREIGN KEY (\"employer_id\") REFERENCES \"employees\" (\"id\") ON DELETE CASCADE ON UPDATE CASCADE);"
367--
368--
368foreignKey
369foreignKey
369− :: ( Has child schema table
370+ :: (ForeignKeyed schema child parent
370− , Has parent schema reftable
371+ table reftable
371− , HasAll columns (TableToColumns table) tys
372+ columns refcolumns
372− , reftable ~ (constraints :=> cols)
373+ constraints cols
373− , HasAll refcolumns cols reftys
374+ reftys tys )
374− , SOP.AllZip SamePGType tys reftys
375− , AllNotNull reftys
376− , Uniquely refcolumns constraints )
377 => NP Alias columns
375 => NP Alias columns
378 -- ^ column or columns in the table
376 -- ^ column or columns in the table
379 -> Alias parent
377 -> Alias parent
@@ -393,6 +391,21 @@ foreignKey keys parent refs ondel onupd = UnsafeTableConstraintExpression $
393 <+> renderOnDeleteClause ondel
391 <+> renderOnDeleteClause ondel
394 <+> renderOnUpdateClause onupd
392 <+> renderOnUpdateClause onupd
395
393
394+type ForeignKeyed schema
395+ child parent
396+ table reftable
397+ columns refcolumns
398+ constraints cols
399+ reftys tys =
400+ ( Has child schema table
401+ , Has parent schema reftable
402+ , HasAll columns (TableToColumns table) tys
403+ , reftable ~ (constraints :=> cols)
404+ , HasAll refcolumns cols reftys
405+ , SOP.AllZip SamePGType tys reftys
406+ , AllNotNull reftys
407+ , Uniquely refcolumns constraints )
408+
396-- | `OnDeleteClause` indicates what to do with rows that reference a deleted row.
409-- | `OnDeleteClause` indicates what to do with rows that reference a deleted row.
397data OnDeleteClause
410data OnDeleteClause
398 = OnDeleteNoAction
411 = OnDeleteNoAction