Skip to content

Commit

Permalink
Add support for column primary option (#43)
Browse files Browse the repository at this point in the history
* Add support for column primary option

* Fix table creation with empty column list
* Sync with changes in go-rel/sql

* Update dependencies
  • Loading branch information
lafriks committed Nov 5, 2021
1 parent 296cbd3 commit 307c4e7
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 24 deletions.
6 changes: 3 additions & 3 deletions builder/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func (q Query) Write(buffer *builder.Buffer, query rel.Query) {

rootQuery := buffer.Len() == 0

q.WriteSelect(buffer, query.SelectQuery, query.LimitQuery, query.OffsetQuery)
q.WriteSelect(buffer, query.Table, query.SelectQuery, query.LimitQuery, query.OffsetQuery)
q.WriteQuery(buffer, query)

if rootQuery {
Expand All @@ -46,7 +46,7 @@ func (q Query) Write(buffer *builder.Buffer, query rel.Query) {
}

// WriteSelect SQL to buffer.
func (q Query) WriteSelect(buffer *builder.Buffer, selectQuery rel.SelectQuery, limit rel.Limit, offset rel.Offset) {
func (q Query) WriteSelect(buffer *builder.Buffer, table string, selectQuery rel.SelectQuery, limit rel.Limit, offset rel.Offset) {
buffer.WriteString("SELECT")

if selectQuery.OnlyDistinct {
Expand All @@ -63,7 +63,7 @@ func (q Query) WriteSelect(buffer *builder.Buffer, selectQuery rel.SelectQuery,

l := len(selectQuery.Fields) - 1
for i, f := range selectQuery.Fields {
buffer.WriteEscape(f)
buffer.WriteField(table, f)

if i < l {
buffer.WriteString(", ")
Expand Down
34 changes: 21 additions & 13 deletions builder/table.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,23 +44,27 @@ func (t Table) WriteCreateTable(buffer *builder.Buffer, table rel.Table) {

buffer.WriteString("CREATE TABLE ")
buffer.WriteEscape(table.Name)
buffer.WriteString(" (")

for i, def := range table.Definitions {
if i > 0 {
buffer.WriteString(", ")
}
switch v := def.(type) {
case rel.Column:
t.WriteColumn(buffer, v)
case rel.Key:
t.WriteKey(buffer, v)
case rel.Raw:
buffer.WriteString(string(v))
if len(table.Definitions) > 0 {
buffer.WriteString(" (")

for i, def := range table.Definitions {
if i > 0 {
buffer.WriteString(", ")
}
switch v := def.(type) {
case rel.Column:
t.WriteColumn(buffer, v)
case rel.Key:
t.WriteKey(buffer, v)
case rel.Raw:
buffer.WriteString(string(v))
}
}

buffer.WriteByte(')')
}

buffer.WriteByte(')')
t.WriteOptions(buffer, table.Options)
buffer.WriteByte(';')
}
Expand Down Expand Up @@ -159,6 +163,10 @@ func (t Table) WriteColumn(buffer *builder.Buffer, column rel.Column) {
buffer.WriteString(" NOT NULL")
}

if column.Primary {
buffer.WriteString(" PRIMARY KEY")
}

if column.Default != nil {
buffer.WriteString(" DEFAULT ")
buffer.WriteValue(column.Default)
Expand Down
4 changes: 2 additions & 2 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ go 1.16

require (
github.com/denisenkom/go-mssqldb v0.11.0
github.com/go-rel/rel v0.28.0
github.com/go-rel/sql v0.5.0
github.com/go-rel/rel v0.29.0
github.com/go-rel/sql v0.6.0
github.com/stretchr/testify v1.7.0
)
10 changes: 6 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,13 @@ github.com/denisenkom/go-mssqldb v0.11.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
github.com/go-rel/rel v0.27.0/go.mod h1:zaIYPmM3AfJrh0xBmm7KoVKRgTNvr0cgZfcJ88gVA2U=
github.com/go-rel/rel v0.28.0 h1:gRcQjNbwuFL35RxeHFMKSy3a/xV+WbtkA8wP24dWPEA=
github.com/go-rel/rel v0.28.0/go.mod h1:zaIYPmM3AfJrh0xBmm7KoVKRgTNvr0cgZfcJ88gVA2U=
github.com/go-rel/sql v0.5.0 h1:+TVS9JvEl06Q8rswwuWlY6VZ+gwSBX9um+vKuZ9gsyY=
github.com/go-rel/sql v0.5.0/go.mod h1:2YwenlIaHpTqdD/KPVYG7Y5Ub1+sn1winlC8TrighRU=
github.com/go-rel/rel v0.29.0 h1:RmU+o+8f3HItQtTfz30TJIENvYVcIUC7dR15U5czUn0=
github.com/go-rel/rel v0.29.0/go.mod h1:RiTs/9DBCiSZvVRin8mXMXBeXIuJ5JpQThccwtrdqfc=
github.com/go-rel/reltest v0.4.0 h1:Z/x9FXZ8yDdrU2MuzPpt7FUIptSEV1pnmSKxSlcUhtM=
github.com/go-rel/reltest v0.4.0/go.mod h1:3udgrKCZGCMFWc8k+RH975gUdUFPE/yspG2iWN9gjqU=
github.com/go-rel/sql v0.6.0 h1:QNzZmZ+ATrQi4YkepKP96KNabYHHLZenA/5k+3sNlW8=
github.com/go-rel/sql v0.6.0/go.mod h1:HDDtkakv+O3YKxtXj4g2DrtUVZPAZao/MoUmD5j7JTk=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
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=
Expand Down
4 changes: 2 additions & 2 deletions mssql.go
Original file line number Diff line number Diff line change
Expand Up @@ -166,9 +166,9 @@ func columnMapper(column *rel.Column) (string, int, int) {

switch column.Type {
case rel.ID:
typ = "INT NOT NULL IDENTITY(1,1) PRIMARY KEY"
typ = "INT NOT NULL IDENTITY(1,1)"
case rel.BigID:
typ = "BIGINT NOT NULL IDENTITY(1,1) PRIMARY KEY"
typ = "BIGINT NOT NULL IDENTITY(1,1)"
case rel.Bool:
typ = "BIT"
case rel.Int:
Expand Down

0 comments on commit 307c4e7

Please sign in to comment.