Skip to content

Commit d24671e

Browse files
authored
Merge pull request #1306 from beonode/upsert-return-columns
Return all columns not in both insert and update columns when doing upsert
2 parents 71f1195 + 50c1a12 commit d24671e

File tree

6 files changed

+15
-6
lines changed

6 files changed

+15
-6
lines changed

drivers/sqlboiler-mssql/driver/override/main/17_upsert.go.tpl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ func (o *{{$alias.UpSingular}}) Upsert({{if .NoContext}}exec boil.Executor{{else
7171
var err error
7272

7373
if !cached {
74-
insert, ret := insertColumns.InsertColumnSet(
74+
insert, _ := insertColumns.InsertColumnSet(
7575
{{$alias.DownSingular}}AllColumns,
7676
{{$alias.DownSingular}}ColumnsWithDefault,
7777
{{$alias.DownSingular}}ColumnsWithoutDefault,
@@ -98,6 +98,8 @@ func (o *{{$alias.UpSingular}}) Upsert({{if .NoContext}}exec boil.Executor{{else
9898
insert = strmangle.SetComplement(insert, {{$alias.DownSingular}}GeneratedColumns)
9999
{{end}}
100100

101+
ret := strmangle.SetComplement({{$alias.DownSingular}}AllColumns, strmangle.SetIntersect(insert, update))
102+
101103
if !updateColumns.IsNone() && len(update) == 0 {
102104
return errors.New("{{.PkgName}}: unable to upsert {{.Table.Name}}, could not build update column list")
103105
}

drivers/sqlboiler-mysql/driver/override/main/17_upsert.go.tpl

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ func (o *{{$alias.UpSingular}}) Upsert({{if .NoContext}}exec boil.Executor{{else
8989
var err error
9090

9191
if !cached {
92-
insert, ret := insertColumns.InsertColumnSet(
92+
insert, _ := insertColumns.InsertColumnSet(
9393
{{$alias.DownSingular}}AllColumns,
9494
{{$alias.DownSingular}}ColumnsWithDefault,
9595
{{$alias.DownSingular}}ColumnsWithoutDefault,
@@ -109,7 +109,8 @@ func (o *{{$alias.UpSingular}}) Upsert({{if .NoContext}}exec boil.Executor{{else
109109
return errors.New("{{.PkgName}}: unable to upsert {{.Table.Name}}, could not build update column list")
110110
}
111111

112-
ret = strmangle.SetComplement(ret, nzUniques)
112+
ret := strmangle.SetComplement({{$alias.DownSingular}}AllColumns, strmangle.SetIntersect(insert, update))
113+
113114
cache.query = buildUpsertQueryMySQL(dialect, "{{$schemaTable}}", update, insert)
114115
cache.retQuery = fmt.Sprintf(
115116
"SELECT %s FROM {{.LQ}}{{.Table.Name}}{{.RQ}} WHERE %s",

drivers/sqlboiler-psql/driver/override/main/17_upsert.go.tpl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func (o *{{$alias.UpSingular}}) Upsert({{if .NoContext}}exec boil.Executor{{else
8282
var err error
8383

8484
if !cached {
85-
insert, ret := insertColumns.InsertColumnSet(
85+
insert, _ := insertColumns.InsertColumnSet(
8686
{{$alias.DownSingular}}AllColumns,
8787
{{$alias.DownSingular}}ColumnsWithDefault,
8888
{{$alias.DownSingular}}ColumnsWithoutDefault,
@@ -102,6 +102,8 @@ func (o *{{$alias.UpSingular}}) Upsert({{if .NoContext}}exec boil.Executor{{else
102102
return errors.New("{{.PkgName}}: unable to upsert {{.Table.Name}}, could not build update column list")
103103
}
104104

105+
ret := strmangle.SetComplement({{$alias.DownSingular}}AllColumns, strmangle.SetIntersect(insert, update))
106+
105107
conflict := conflictColumns
106108
if len(conflict) == 0 && updateOnConflict && len(update) != 0 {
107109
if len({{$alias.DownSingular}}PrimaryKeyColumns) == 0 {

drivers/sqlboiler-sqlite3/driver/override/main/17_upsert.go.tpl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ func (o *{{$alias.UpSingular}}) Upsert({{if .NoContext}}exec boil.Executor{{else
8282
var err error
8383

8484
if !cached {
85-
insert, ret := insertColumns.InsertColumnSet(
85+
insert, _ := insertColumns.InsertColumnSet(
8686
{{$alias.DownSingular}}AllColumns,
8787
{{$alias.DownSingular}}ColumnsWithDefault,
8888
{{$alias.DownSingular}}ColumnsWithoutDefault,
@@ -97,6 +97,8 @@ func (o *{{$alias.UpSingular}}) Upsert({{if .NoContext}}exec boil.Executor{{else
9797
return errors.New("{{.PkgName}}: unable to upsert {{.Table.Name}}, could not build update column list")
9898
}
9999

100+
ret := strmangle.SetComplement({{$alias.DownSingular}}AllColumns, strmangle.SetIntersect(insert, update))
101+
100102
conflict := conflictColumns
101103
if len(conflict) == 0 {
102104
conflict = make([]string, len({{$alias.DownSingular}}PrimaryKeyColumns))

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ require (
2929
github.com/subosito/gotenv v1.4.1 // indirect
3030
github.com/volatiletech/null/v8 v8.1.2
3131
github.com/volatiletech/randomize v0.0.1
32-
github.com/volatiletech/strmangle v0.0.5
32+
github.com/volatiletech/strmangle v0.0.6
3333
golang.org/x/crypto v0.0.0-20220826181053-bd7e27e6170d // indirect
3434
golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64 // indirect
3535
golang.org/x/tools v0.1.12 // indirect

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,8 @@ github.com/volatiletech/randomize v0.0.1/go.mod h1:GN3U0QYqfZ9FOJ67bzax1cqZ5q2xu
458458
github.com/volatiletech/strmangle v0.0.1/go.mod h1:F6RA6IkB5vq0yTG4GQ0UsbbRcl3ni9P76i+JrTBKFFg=
459459
github.com/volatiletech/strmangle v0.0.5 h1:CompJPy+lAi9h+YU/IzBR4X2RDRuAuEIP+kjFdyZXcU=
460460
github.com/volatiletech/strmangle v0.0.5/go.mod h1:ycDvbDkjDvhC0NUU8w3fWwl5JEMTV56vTKXzR3GeR+0=
461+
github.com/volatiletech/strmangle v0.0.6 h1:AdOYE3B2ygRDq4rXDij/MMwq6KVK/pWAYxpC7CLrkKQ=
462+
github.com/volatiletech/strmangle v0.0.6/go.mod h1:ycDvbDkjDvhC0NUU8w3fWwl5JEMTV56vTKXzR3GeR+0=
461463
github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
462464
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
463465
github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=

0 commit comments

Comments
 (0)