Skip to content

Support for drop Keys in the ALTER table #59

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ go 1.17
require (
github.com/go-rel/primaryreplica v0.4.0
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/jackc/pgx/v4 v4.18.1
github.com/lib/pq v1.10.9
github.com/stretchr/testify v1.8.3
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ github.com/go-rel/primaryreplica v0.4.0/go.mod h1:HUBz+BUvUcg9JpRRk9PstV9J/qlEOq
github.com/go-rel/rel v0.33.1/go.mod h1:DhB9Xmt/ymaumJAB6Z3Kq+IybLwQhhrzr6ZLeXMygPo=
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/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
github.com/gofrs/uuid v4.0.0+incompatible h1:1SD/1F5pU8p29ybwgQSwpQk+mwdRrXCYuPhW6m+TnJw=
github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
Expand Down
3 changes: 2 additions & 1 deletion postgres.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// Package postgres wraps postgres (pq) driver as an adapter for REL.
//
// Usage:
//
// // open postgres connection.
// adapter, err := postgres.Open("postgres://postgres@localhost/rel_test?sslmode=disable")
// if err != nil {
Expand Down Expand Up @@ -40,7 +41,7 @@ func New(database *db.DB) rel.Adapter {
deleteBuilder = builder.Delete{BufferFactory: bufferFactory, Query: queryBuilder, Filter: filterBuilder}
ddlBufferFactory = builder.BufferFactory{InlineValues: true, BoolTrueValue: "true", BoolFalseValue: "false", Quoter: Quote{}, ValueConverter: ValueConvert{}}
ddlQueryBuilder = builder.Query{BufferFactory: ddlBufferFactory, Filter: filterBuilder}
tableBuilder = builder.Table{BufferFactory: ddlBufferFactory, ColumnMapper: columnMapper}
tableBuilder = builder.Table{BufferFactory: ddlBufferFactory, ColumnMapper: columnMapper, DropKeyMapper: sql.DropKeyMapper}
indexBuilder = builder.Index{BufferFactory: ddlBufferFactory, Query: ddlQueryBuilder, Filter: filterBuilder, SupportFilter: true}
)

Expand Down
48 changes: 48 additions & 0 deletions postgres_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,54 @@ func TestAdapter_Exec_error(t *testing.T) {
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.(*Postgres).TableBuilder.Build(test.table))
})
}
}

func TestCheck(t *testing.T) {
assert.Panics(t, func() {
check(errors.New("error"))
Expand Down