示例#1
0
// 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
}
示例#2
0
func TestVisitUnique(t *testing.T) {
	unique := nodes.Unique([]interface{}{"column"})
	expected := `ADD UNIQUE('column')`
	if got, _ := sql.Accept(unique); expected != got {
		t.Errorf("TestVisitUnique was expected to return %s, got %s", expected, got)
	}
}