Skip to content

Commit

Permalink
Support for drop Keys in the ALTER table (#59)
Browse files Browse the repository at this point in the history
  • Loading branch information
youpy committed Jul 9, 2023
1 parent e0c366e commit 71d8b4a
Show file tree
Hide file tree
Showing 4 changed files with 53 additions and 4 deletions.
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

0 comments on commit 71d8b4a

Please sign in to comment.