mirror of https://github.com/VinGarcia/ksql.git
62 lines
1.6 KiB
Go
62 lines
1.6 KiB
Go
// Code generated by SQLBoiler 4.12.0 (https://github.com/volatiletech/sqlboiler). DO NOT EDIT.
|
|
// This file is meant to be re-generated in place and/or deleted at any time.
|
|
|
|
package sqlboilergen
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
|
|
"github.com/volatiletech/sqlboiler/v4/drivers"
|
|
"github.com/volatiletech/strmangle"
|
|
)
|
|
|
|
// buildUpsertQueryPostgres builds a SQL statement string using the upsertData provided.
|
|
func buildUpsertQueryPostgres(dia drivers.Dialect, tableName string, updateOnConflict bool, ret, update, conflict, whitelist []string) string {
|
|
conflict = strmangle.IdentQuoteSlice(dia.LQ, dia.RQ, conflict)
|
|
whitelist = strmangle.IdentQuoteSlice(dia.LQ, dia.RQ, whitelist)
|
|
ret = strmangle.IdentQuoteSlice(dia.LQ, dia.RQ, ret)
|
|
|
|
buf := strmangle.GetBuffer()
|
|
defer strmangle.PutBuffer(buf)
|
|
|
|
columns := "DEFAULT VALUES"
|
|
if len(whitelist) != 0 {
|
|
columns = fmt.Sprintf("(%s) VALUES (%s)",
|
|
strings.Join(whitelist, ", "),
|
|
strmangle.Placeholders(dia.UseIndexPlaceholders, len(whitelist), 1, 1))
|
|
}
|
|
|
|
fmt.Fprintf(
|
|
buf,
|
|
"INSERT INTO %s %s ON CONFLICT ",
|
|
tableName,
|
|
columns,
|
|
)
|
|
|
|
if !updateOnConflict || len(update) == 0 {
|
|
buf.WriteString("DO NOTHING")
|
|
} else {
|
|
buf.WriteByte('(')
|
|
buf.WriteString(strings.Join(conflict, ", "))
|
|
buf.WriteString(") DO UPDATE SET ")
|
|
|
|
for i, v := range update {
|
|
if i != 0 {
|
|
buf.WriteByte(',')
|
|
}
|
|
quoted := strmangle.IdentQuote(dia.LQ, dia.RQ, v)
|
|
buf.WriteString(quoted)
|
|
buf.WriteString(" = EXCLUDED.")
|
|
buf.WriteString(quoted)
|
|
}
|
|
}
|
|
|
|
if len(ret) != 0 {
|
|
buf.WriteString(" RETURNING ")
|
|
buf.WriteString(strings.Join(ret, ", "))
|
|
}
|
|
|
|
return buf.String()
|
|
}
|