on dev help sign in
TableConstraintExpression
commitc9d81df41bdd1815e7ad8f45eecb1b2a6753148d authorEitan Chatav <eitan.chatav@gmail.com> dateFri 8 Dec 2017, 14:05 (9 years ago) parentd73413e
2 files changed+21−20
squeal-postgresql/src/Squeal/PostgreSQL/Definition.hs+18−17 squeal-postgresql/src/Squeal/PostgreSQL/Schema.hs+3−3
squeal-postgresql/src/Squeal/PostgreSQL/Definition.hs+18−17
@@ -30,7 +30,7 @@ module Squeal.PostgreSQL.Definition
3030 , (>>>)
3131 -- * Create
3232 , createTable
33− , TableConstraint (UnsafeTableConstraint, renderTableConstraint)
33+ , TableConstraintExpression (..)
3434 , check
3535 , unique
3636 , primaryKey
@@ -113,14 +113,14 @@ createTable
113113 => Alias tab -- ^ the name of the table to add
114114 -> NP (Aliased TypeExpression) (column ': columns)
115115 -- ^ the names and datatype of each column
116− -> NP (TableConstraint schema (column ': columns)) constraints
116+ -> NP (TableConstraintExpression schema (column ': columns)) constraints
117117 -- ^ constraints that must hold for the table
118118 -> Definition schema (Create tab table schema)
119119createTable table columns constraints = UnsafeDefinition $
120120 "CREATE TABLE" <+> renderAlias table
121121 <+> parenthesized
122122 ( renderCommaSeparated renderColumnDef columns
123− <> renderCommaSeparated renderTableConstraint constraints )
123+ <> renderCommaSeparated renderTableConstraintExpression constraints )
124124 <> ";"
125125 where
126126 renderColumnDef :: Aliased TypeExpression x -> ByteString
@@ -139,11 +139,12 @@ createTable table columns constraints = UnsafeDefinition $
139139-- as you wish. If a user attempts to store data in a column that would
140140-- violate a constraint, an error is raised. This applies
141141-- even if the value came from the default value definition.
142−newtype TableConstraint
142+newtype TableConstraintExpression
143143 (schema :: SchemaType)
144144 (columns :: ColumnsType)
145− (tableConstraint :: TableConstraint')
146− = UnsafeTableConstraint { renderTableConstraint :: ByteString }
145+ (tableConstraint :: TableConstraint)
146+ = UnsafeTableConstraintExpression
147+ { renderTableConstraintExpression :: ByteString }
147148 deriving (GHC.Generic,Show,Eq,Ord,NFData)
148149
149150-- | A `check` constraint is the most generic `TableConstraint` type.
@@ -161,8 +162,8 @@ newtype TableConstraint
161162check
162163 :: Condition '[table ::: columns] 'Ungrouped '[]
163164 -- ^ condition to check
164− -> TableConstraint schema columns 'Check
165−check condition = UnsafeTableConstraint $
165+ -> TableConstraintExpression schema columns 'Check
166+check condition = UnsafeTableConstraintExpression $
166167 "CHECK" <+> parenthesized (renderExpression condition)
167168
168169-- | A `unique` constraint ensure that the data contained in a column,
@@ -180,8 +181,8 @@ unique
180181 :: SOP.SListI subcolumns
181182 => NP (Column columns) subcolumns
182183 -- ^ unique column or group of columns
183− -> TableConstraint schema columns ( 'Uniques (Aliases subcolumns))
184−unique columns = UnsafeTableConstraint $
184+ -> TableConstraintExpression schema columns ( 'Uniques (Aliases subcolumns))
185+unique columns = UnsafeTableConstraintExpression $
185186 "UNIQUE" <+> parenthesized (renderCommaSeparated renderColumn columns)
186187
187188-- | A `primaryKey` constraint indicates that a column, or group of columns,
@@ -200,8 +201,8 @@ primaryKey
200201 :: (SOP.SListI subcolumns, NotAllNull subcolumns)
201202 => NP (Column columns) subcolumns
202203 -- ^ identifying column or group of columns
203− -> TableConstraint schema columns ('Uniques (Aliases subcolumns))
204−primaryKey columns = UnsafeTableConstraint $
204+ -> TableConstraintExpression schema columns ('Uniques (Aliases subcolumns))
205+primaryKey columns = UnsafeTableConstraintExpression $
205206 "PRIMARY KEY" <+> parenthesized (renderCommaSeparated renderColumn columns)
206207
207208-- | A `foreignKey` specifies that the values in a column
@@ -253,10 +254,10 @@ foreignKey
253254 -- ^ what to do when reference is deleted
254255 -> OnUpdateClause
255256 -- ^ what to do when reference is updated
256− -> TableConstraint schema columns
257+ -> TableConstraintExpression schema columns
257258 ('ForeignKey (Aliases subcolumns) tab (Aliases refsubcolumns))
258259foreignKey columns reftable refcolumns onDelete onUpdate =
259− UnsafeTableConstraint $
260+ UnsafeTableConstraintExpression $
260261 "FOREIGN KEY" <+> parenthesized (renderCommaSeparated renderColumn columns)
261262 <+> "REFERENCES" <+> renderAlias reftable
262263 <+> parenthesized (renderCommaSeparated renderColumn refcolumns)
@@ -359,16 +360,16 @@ alterTableRename table0 table1 = UnsafeDefinition $
359360-- alterTableAddConstraint
360361-- :: (HasTable table schema columns, (table ::: table0) `In` schema)
361362-- => Alias table -- ^ table to constrain
362−-- -> TableConstraint schema columns constraint -- ^ what constraint to add
363+-- -> TableConstraintExpression schema columns constraint -- ^ what constraint to add
363364-- -> Definition schema (Alter table schema (AddConstraint constraint table0))
364365-- alterTableAddConstraint table constraint = UnsafeDefinition $
365366-- "ALTER TABLE" <+> renderAlias table
366−-- <+> "ADD" <+> renderTableConstraint constraint <> ";"
367+-- <+> "ADD" <+> renderTableConstraintExpression constraint <> ";"
367368
368369addConstraint
369370 :: (tab ::: table) `In` schema
370371 => Alias tab
371− -> TableConstraint schema columns constraint
372+ -> TableConstraintExpression schema columns constraint
372373 -> AlterTable schema table (AddConstraint constraint table)
373374addConstraint = undefined
374375
squeal-postgresql/src/Squeal/PostgreSQL/Schema.hs+3−3
@@ -81,7 +81,7 @@ module Squeal.PostgreSQL.Schema
8181 -- , DropDefaultList
8282 , AddConstraint
8383 , DropConstraint
84− , TableConstraint' (..)
84+ , TableConstraint (..)
8585 , AsSet
8686 , Aliases
8787 ) where
@@ -148,7 +148,7 @@ type ColumnsType = [(Symbol,ColumnType)]
148148-- a product of tables.
149149type RelationType = [(Symbol,ColumnsType)]
150150
151−type TableType = ([TableConstraint'],ColumnsType)
151+type TableType = ([TableConstraint],ColumnsType)
152152type SchemaType = [(Symbol,TableType)]
153153
154154type family Unconstrain (ty :: ([constraint],kind)) :: kind where
@@ -388,7 +388,7 @@ type instance Cmp ('References tab col) 'Default = 'GT
388388type instance Cmp 'Unique ('References tab col) = 'LT
389389type instance Cmp ('References tab col) 'Unique = 'GT
390390
391−data TableConstraint'
391+data TableConstraint
392392 = Check
393393 | Uniques [Symbol]
394394 | ForeignKey [Symbol] Symbol [Symbol]