// AddColumn adds a ConstraintNode from the nodes package to the AST to apply to a column. func (self *AlterManager) AddConstraint(columns []interface{}, kind sql.Constraint, options ...interface{}) *AlterManager { for _, column := range columns { if _, ok := column.(string); ok { column = nodes.UnqualifiedColumn(column) } } var node interface{} switch kind { case sql.NotNull: node = nodes.NotNull(columns, options...) case sql.Unique: node = nodes.Unique(columns, options...) case sql.PrimaryKey: node = nodes.PrimaryKey(columns, options...) case sql.ForeignKey: node = nodes.ForeignKey(columns, options...) case sql.Check: node = nodes.Check(columns, options...) case sql.Default: node = nodes.Default(columns, options...) default: node = nodes.Constraint(columns, options...) } self.Tree.Constraints = append(self.Tree.Constraints, node) return self }
func TestVisitNotNull(t *testing.T) { nnull := nodes.NotNull([]interface{}{"column"}) expected := `ALTER 'column' SET NOT NULL` if got, _ := sql.Accept(nnull); expected != got { t.Errorf("TestVisitNotNull was expected to return %s, got %s", expected, got) } }