diff --git a/dialect/sql/builder.go b/dialect/sql/builder.go index 5c43d37fa..7e7f35989 100644 --- a/dialect/sql/builder.go +++ b/dialect/sql/builder.go @@ -252,6 +252,12 @@ func (t *TableAlter) DropColumn(c *ColumnBuilder) *TableAlter { return t } +// RenameIndex appends the `RENAME INDEX` clause to the given `ALTER TABLE` statement. +func (t *TableAlter) RenameIndex(curr, new string) *TableAlter { + t.Queries = append(t.Queries, Raw(fmt.Sprintf("RENAME INDEX %s TO %s", t.Quote(curr), t.Quote(new)))) + return t +} + // AddForeignKey adds a foreign key constraint to the `ALTER TABLE` statement. func (t *TableAlter) AddForeignKey(fk *ForeignKeyBuilder) *TableAlter { t.Queries = append(t.Queries, &Wrapper{"ADD CONSTRAINT %s", fk}) diff --git a/dialect/sql/builder_test.go b/dialect/sql/builder_test.go index 5725dcc41..cb9fa50eb 100644 --- a/dialect/sql/builder_test.go +++ b/dialect/sql/builder_test.go @@ -191,6 +191,10 @@ func TestBuilder(t *testing.T) { DropColumn(Column("name")), wantQuery: `ALTER TABLE "users" ADD COLUMN "boring" varchar, ALTER COLUMN "age" TYPE int, DROP COLUMN "name"`, }, + { + input: AlterTable("users").RenameIndex("old", "new"), + wantQuery: "ALTER TABLE `users` RENAME INDEX `old` TO `new`", + }, { input: Insert("users").Columns("age").Values(1), wantQuery: "INSERT INTO `users` (`age`) VALUES (?)",