@@ -53,7 +53,7 @@ module Squeal.PostgreSQL.Definition
53 , AlterTable (UnsafeAlterTable, renderAlterTable)
53 , AlterTable (UnsafeAlterTable, renderAlterTable)
54 , addConstraint
54 , addConstraint
55 , dropConstraint
55 , dropConstraint
56− -- , AddColumn (addColumn)
56+ , AddColumn (addColumn)
57 , dropColumn
57 , dropColumn
58 , renameColumn
58 , renameColumn
59 , alterColumn
59 , alterColumn
@@ -531,7 +531,7 @@ ALTER statements
531alterTable
531alterTable
532 :: HasQualified sch tab db schema ('Table table0)
532 :: HasQualified sch tab db schema ('Table table0)
533 => QualifiedAlias sch tab -- ^ table to alter
533 => QualifiedAlias sch tab -- ^ table to alter
534− -> AlterTable tab table1 db -- ^ alteration to perform
534+ -> AlterTable sch tab db table1 -- ^ alteration to perform
535 -> Definition db (Alter sch (Alter tab ('Table table1) schema) db)
535 -> Definition db (Alter sch (Alter tab ('Table table1) schema) db)
536alterTable tab alteration = UnsafeDefinition $
536alterTable tab alteration = UnsafeDefinition $
537 "ALTER TABLE"
537 "ALTER TABLE"
@@ -555,9 +555,10 @@ alterTableRename table0 table1 = UnsafeDefinition $
555-- | An `AlterTable` describes the alteration to perform on the columns
555-- | An `AlterTable` describes the alteration to perform on the columns
556-- of a table.
556-- of a table.
557newtype AlterTable
557newtype AlterTable
558 (tab :: Symbol)
559 (tab :: Symbol)
559− (table :: TableType)
561+ (table :: TableType) =
561 UnsafeAlterTable {renderAlterTable :: ByteString}
562 UnsafeAlterTable {renderAlterTable :: ByteString}
562 deriving (GHC.Generic,Show,Eq,Ord,NFData)
563 deriving (GHC.Generic,Show,Eq,Ord,NFData)
@@ -580,7 +581,7 @@ addConstraint
580 => Alias alias
581 => Alias alias
581 -> TableConstraintExpression sch tab db constraint
582 -> TableConstraintExpression sch tab db constraint
582 -- ^ constraint to add
583 -- ^ constraint to add
583− -> AlterTable tab table1 db
584+ -> AlterTable sch tab db table1
584addConstraint alias constraint = UnsafeAlterTable $
585addConstraint alias constraint = UnsafeAlterTable $
585 "ADD" <+> "CONSTRAINT" <+> renderAlias alias
586 "ADD" <+> "CONSTRAINT" <+> renderAlias alias
586 <+> renderTableConstraintExpression constraint
587 <+> renderTableConstraintExpression constraint
@@ -598,16 +599,15 @@ addConstraint alias constraint = UnsafeAlterTable $
598-- ALTER TABLE "tab" DROP CONSTRAINT "positive";
599-- ALTER TABLE "tab" DROP CONSTRAINT "positive";
599dropConstraint
600dropConstraint
600 :: ( KnownSymbol constraint
601 :: ( KnownSymbol constraint
601− , Has tab schema ('Table table0)
602+ , HasQualified sch tab db schema ('Table table0)
602 , table0 ~ (constraints :=> columns)
603 , table0 ~ (constraints :=> columns)
603 , table1 ~ (Drop constraint constraints :=> columns) )
604 , table1 ~ (Drop constraint constraints :=> columns) )
604 => Alias constraint
605 => Alias constraint
605 -- ^ constraint to drop
606 -- ^ constraint to drop
606− -> AlterTable tab table1 db
607+ -> AlterTable sch tab db table1
607dropConstraint constraint = UnsafeAlterTable $
608dropConstraint constraint = UnsafeAlterTable $
608 "DROP" <+> "CONSTRAINT" <+> renderAlias constraint
609 "DROP" <+> "CONSTRAINT" <+> renderAlias constraint
610−{---------FIX ADD COLUMN
611-- | An `AddColumn` is either @NULL@ or has @DEFAULT@.
611-- | An `AddColumn` is either @NULL@ or has @DEFAULT@.
612class AddColumn ty where
612class AddColumn ty where
613 -- | `addColumn` adds a new column, initially filled with whatever
613 -- | `addColumn` adds a new column, initially filled with whatever
@@ -639,18 +639,15 @@ class AddColumn ty where
639 addColumn
639 addColumn
640 :: ( KnownSymbol column
640 :: ( KnownSymbol column
641 , HasQualified sch tab db schema ('Table table0)
641 , HasQualified sch tab db schema ('Table table0)
642− , table0 ~ (constraints :=> columns)
642+ , table0 ~ (constraints :=> columns) )
643− , table1 ~ (constraints :=> Create column ty columns) )
644 => Alias column -- ^ column to add
643 => Alias column -- ^ column to add
645 -> ColumnTypeExpression db ty -- ^ type of the new column
644 -> ColumnTypeExpression db ty -- ^ type of the new column
646− -> AlterTable tab table1 db
645+ -> AlterTable sch tab db (constraints :=> Create column ty columns)
647 addColumn column ty = UnsafeAlterTable $
646 addColumn column ty = UnsafeAlterTable $
648 "ADD COLUMN" <+> renderAlias column <+> renderColumnTypeExpression ty
647 "ADD COLUMN" <+> renderAlias column <+> renderColumnTypeExpression ty
649instance {-# OVERLAPPING #-} AddColumn ('Def :=> ty)
648instance {-# OVERLAPPING #-} AddColumn ('Def :=> ty)
650instance {-# OVERLAPPABLE #-} AddColumn ('NoDef :=> 'Null ty)
649instance {-# OVERLAPPABLE #-} AddColumn ('NoDef :=> 'Null ty)
654-- | A `dropColumn` removes a column. Whatever data was in the column
651-- | A `dropColumn` removes a column. Whatever data was in the column
655-- disappears. Table constraints involving the column are dropped, too.
652-- disappears. Table constraints involving the column are dropped, too.
656-- However, if the column is referenced by a foreign key constraint of
653-- However, if the column is referenced by a foreign key constraint of
@@ -669,11 +666,11 @@ instance {-# OVERLAPPABLE #-} AddColumn ('NoDef :=> 'Null ty)
669-- ALTER TABLE "tab" DROP COLUMN "col2";
666-- ALTER TABLE "tab" DROP COLUMN "col2";
670dropColumn
667dropColumn
671 :: ( KnownSymbol column
668 :: ( KnownSymbol column
672− , Has tab schema ('Table table0)
669+ , HasQualified sch tab db schema ('Table table0)
673 , table0 ~ (constraints :=> columns)
670 , table0 ~ (constraints :=> columns)
674 , table1 ~ (constraints :=> Drop column columns) )
671 , table1 ~ (constraints :=> Drop column columns) )
675 => Alias column -- ^ column to remove
672 => Alias column -- ^ column to remove
676− -> AlterTable tab table1 db
673+ -> AlterTable sch tab db table1
677dropColumn column = UnsafeAlterTable $
674dropColumn column = UnsafeAlterTable $
678 "DROP COLUMN" <+> renderAlias column
675 "DROP COLUMN" <+> renderAlias column
@@ -691,25 +688,25 @@ dropColumn column = UnsafeAlterTable $
691renameColumn
688renameColumn
692 :: ( KnownSymbol column0
689 :: ( KnownSymbol column0
693 , KnownSymbol column1
690 , KnownSymbol column1
694− , Has tab schema ('Table table0)
691+ , HasQualified sch tab db schema ('Table table0)
695 , table0 ~ (constraints :=> columns)
692 , table0 ~ (constraints :=> columns)
696 , table1 ~ (constraints :=> Rename column0 column1 columns) )
693 , table1 ~ (constraints :=> Rename column0 column1 columns) )
697 => Alias column0 -- ^ column to rename
694 => Alias column0 -- ^ column to rename
698 -> Alias column1 -- ^ what to rename the column
695 -> Alias column1 -- ^ what to rename the column
699− -> AlterTable tab table1 db
696+ -> AlterTable sch tab db table1
700renameColumn column0 column1 = UnsafeAlterTable $
697renameColumn column0 column1 = UnsafeAlterTable $
701 "RENAME COLUMN" <+> renderAlias column0 <+> "TO" <+> renderAlias column1
698 "RENAME COLUMN" <+> renderAlias column0 <+> "TO" <+> renderAlias column1
703-- | An `alterColumn` alters a single column.
700-- | An `alterColumn` alters a single column.
704alterColumn
701alterColumn
705 :: ( KnownSymbol column
702 :: ( KnownSymbol column
706− , Has tab schema ('Table table0)
703+ , HasQualified sch tab db schema ('Table table0)
707 , table0 ~ (constraints :=> columns)
704 , table0 ~ (constraints :=> columns)
708 , Has column columns ty0
705 , Has column columns ty0
709 , tables1 ~ (constraints :=> Alter column ty1 columns))
706 , tables1 ~ (constraints :=> Alter column ty1 columns))
710 => Alias column -- ^ column to alter
707 => Alias column -- ^ column to alter
711 -> AlterColumn db ty0 ty1 -- ^ alteration to perform
708 -> AlterColumn db ty0 ty1 -- ^ alteration to perform
712− -> AlterTable tab table1 db
709+ -> AlterTable sch tab db table1
713alterColumn column alteration = UnsafeAlterTable $
710alterColumn column alteration = UnsafeAlterTable $
714 "ALTER COLUMN" <+> renderAlias column <+> renderAlterColumn alteration
711 "ALTER COLUMN" <+> renderAlias column <+> renderAlterColumn alteration