Skip to content

Commit

Permalink
Support for drop Keys in the ALTER table (#77)
Browse files Browse the repository at this point in the history
  • Loading branch information
youpy authored Jul 10, 2023
1 parent 5b1433f commit 5429bae
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 5 deletions.
6 changes: 6 additions & 0 deletions builder/table.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
type Table struct {
BufferFactory builder.BufferFactory
ColumnMapper builder.ColumnMapper
DropKeyMapper builder.DropKeyMapper
}

// Build SQL query for table creation and modification.
Expand Down Expand Up @@ -103,6 +104,11 @@ func (t Table) WriteAlterTable(buffer *builder.Buffer, table rel.Table) {
case rel.SchemaCreate:
buffer.WriteString("ADD ")
t.WriteKey(buffer, v)
case rel.SchemaDrop:
buffer.WriteString("DROP ")
buffer.WriteString(t.DropKeyMapper(v.Type))
buffer.WriteString(" ")
buffer.WriteEscape(v.Name)
}
}

Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ go 1.16
require (
github.com/denisenkom/go-mssqldb v0.12.3
github.com/go-rel/rel v0.39.0
github.com/go-rel/sql v0.13.1
github.com/go-rel/sql v0.13.2-0.20230704013859-dd905c4be623
github.com/stretchr/testify v1.8.3
)
5 changes: 2 additions & 3 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
github.com/go-rel/rel v0.39.0 h1:2zmK8kazM82iRRfWX7+mm1MxDkGKDj2W+xJLjguli5U=
github.com/go-rel/rel v0.39.0/go.mod h1:yN6+aimHyRIzbuWFe5DaxiZPuVuPfd7GlLpy/YTqTUg=
github.com/go-rel/sql v0.13.1 h1:Q3G9/QyK4p7AIDNviW0x3JrfdG5LyoLrGH9uoaUtA+o=
github.com/go-rel/sql v0.13.1/go.mod h1:3t/E+2E/Y9rXURDD7ZMgpFdXLji10gP7gb57HeoaRNY=
github.com/go-rel/sql v0.13.2-0.20230704013859-dd905c4be623 h1:Qv+LecXM6dyy4B7r9icdF8OJA+kD8nPFX4s6W8mUMLk=
github.com/go-rel/sql v0.13.2-0.20230704013859-dd905c4be623/go.mod h1:KQJuW3s+GDnwdgA3+Ic5awz9t259bVehS4nd5A+Vgic=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe h1:lXe2qZdvpiX5WZkZR4hgp4KJVfY3nMkvmwbVkpv1rVY=
github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A=
Expand Down Expand Up @@ -56,7 +56,6 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
github.com/stretchr/testify v1.8.3 h1:RP3t2pwF7cMEbC1dqtB6poj3niw/9gnV4Cjg5oW5gtY=
github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
Expand Down
2 changes: 1 addition & 1 deletion mssql.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ func New(db *db.DB) rel.Adapter {
deleteBuilder = builder.Delete{BufferFactory: bufferFactory, Query: queryBuilder, Filter: filterBuilder}
ddlBufferFactory = builder.BufferFactory{InlineValues: true, BoolTrueValue: "1", BoolFalseValue: "0", Quoter: builder.Quote{IDPrefix: "[", IDSuffix: "]", IDSuffixEscapeChar: "]", ValueQuote: "'", ValueQuoteEscapeChar: "'"}}
ddlQueryBuilder = builder.Query{BufferFactory: ddlBufferFactory, Filter: filterBuilder}
tableBuilder = mssqlbuilder.Table{BufferFactory: ddlBufferFactory, ColumnMapper: columnMapper}
tableBuilder = mssqlbuilder.Table{BufferFactory: ddlBufferFactory, ColumnMapper: columnMapper, DropKeyMapper: sql.DropKeyMapper}
indexBuilder = mssqlbuilder.Index{BufferFactory: ddlBufferFactory, Query: ddlQueryBuilder, Filter: filterBuilder}
)

Expand Down
48 changes: 48 additions & 0 deletions mssql_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,3 +133,51 @@ func TestAdapter_Exec_error(t *testing.T) {
_, _, err = adapter.Exec(ctx, "error", nil)
assert.NotNil(t, err)
}

func TestAdapter_TableBuilder(t *testing.T) {
adapter, err := Open(dsn())
assert.Nil(t, err)
defer adapter.Close()

tests := []struct {
result string
table rel.Table
}{
{
result: `ALTER TABLE [table] DROP CONSTRAINT [key];`,
table: rel.Table{
Op: rel.SchemaAlter,
Name: "table",
Definitions: []rel.TableDefinition{
rel.Key{Op: rel.SchemaDrop, Name: "key", Type: rel.ForeignKey},
},
},
},
{
result: `ALTER TABLE [table] DROP CONSTRAINT [key];`,
table: rel.Table{
Op: rel.SchemaAlter,
Name: "table",
Definitions: []rel.TableDefinition{
rel.Key{Op: rel.SchemaDrop, Name: "key", Type: rel.UniqueKey},
},
},
},
{
result: `ALTER TABLE [table] DROP CONSTRAINT [key];`,
table: rel.Table{
Op: rel.SchemaAlter,
Name: "table",
Definitions: []rel.TableDefinition{
rel.Key{Op: rel.SchemaDrop, Name: "key", Type: rel.PrimaryKey},
},
},
},
}

for _, test := range tests {
t.Run(test.result, func(t *testing.T) {
assert.Equal(t, test.result, adapter.(*MSSQL).TableBuilder.Build(test.table))
})
}
}

0 comments on commit 5429bae

Please sign in to comment.