on dev help sign in
small change
0120fc6Eitan Chatav
squeal-postgresql/src/Squeal/PostgreSQL/Definition.hs−1
@@ -403,7 +403,6 @@ type ForeignKeyed schema
403 , reftable ~ (constraints :=> cols)
403 , reftable ~ (constraints :=> cols)
404 , HasAll refcolumns cols reftys
404 , HasAll refcolumns cols reftys
405 , SOP.AllZip SamePGType tys reftys
405 , SOP.AllZip SamePGType tys reftys
406− , AllNotNull reftys
407 , Uniquely refcolumns constraints )
406 , Uniquely refcolumns constraints )
408
407
409-- | `OnDeleteClause` indicates what to do with rows that reference a deleted row.
408-- | `OnDeleteClause` indicates what to do with rows that reference a deleted row.
squeal-postgresql/src/Squeal/PostgreSQL/Schema.hs+6−4
@@ -249,12 +249,14 @@ type TableConstraints = [(Symbol,TableConstraint)]
249type family NilTableConstraints :: TableConstraints where
249type family NilTableConstraints :: TableConstraints where
250 NilTableConstraints = '[]
250 NilTableConstraints = '[]
251
251
252+-- | A `ForeignKey` must reference columns that either are
253+-- a `PrimaryKey` or form a `Unique` constraint.
252type family Uniquely
254type family Uniquely
253− (keys :: [Symbol])
255+ (key :: [Symbol])
254 (constraints :: TableConstraints) :: Constraint where
256 (constraints :: TableConstraints) :: Constraint where
255− Uniquely keys (uq ::: 'Unique keys ': constraints) = ()
257+ Uniquely key (uq ::: 'Unique key ': constraints) = ()
256− Uniquely keys (uq ::: 'PrimaryKey keys ': constraints) = ()
258+ Uniquely key (pk ::: 'PrimaryKey key ': constraints) = ()
257− Uniquely keys (_ ': constraints) = Uniquely keys constraints
259+ Uniquely key (_ ': constraints) = Uniquely key constraints
258
260
259-- | `TableType` encodes a row of constraints on a table as well as the types
261-- | `TableType` encodes a row of constraints on a table as well as the types
260-- of its columns.
262-- of its columns.