Skip to content

Commit

Permalink
refactor(pg): extract input values template
Browse files Browse the repository at this point in the history
  • Loading branch information
janisz committed Jul 25, 2023
1 parent 7d1d2f6 commit 1e64205
Showing 1 changed file with 15 additions and 20 deletions.
35 changes: 15 additions & 20 deletions tools/generate-helpers/pg-table-bindings/store.go.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,19 @@ func isUpsertAllowed(ctx context.Context, objs ...*storeType) error {
{{- define "insertFunctionName"}}{{- $schema := . }}insertInto{{$schema.Table|upperCamelCase}}
{{- end}}

{{- define "insertValues"}}{{- $schema := . -}}
{{- range $field := $schema.DBColumnFields -}}
{{- if eq $field.DataType "datetime" }}
pgutils.NilOrTime({{$field.Getter "obj"}}),
{{- else if eq $field.SQLType "uuid" }}
pgutils.NilOrUUID({{$field.Getter "obj"}}),
{{- else if eq $field.DataType "map" }}
pgutils.EmptyOrMap({{$field.Getter "obj"}}),
{{- else }}
{{$field.Getter "obj"}},{{end}}
{{- end}}
{{- end}}

{{- define "insertObject"}}
{{- $schema := .schema }}
func {{ template "insertFunctionName" $schema }}({{ if eq (len $schema.Children) 0 }}_{{ else }}ctx{{ end }} context.Context, batch *pgx.Batch, obj {{$schema.Type}}{{ range $field := $schema.FieldsDeterminedByParent }}, {{$field.Name}} {{$field.Type}}{{end}}) error {
Expand All @@ -192,16 +205,7 @@ func {{ template "insertFunctionName" $schema }}({{ if eq (len $schema.Children)

values := []interface{} {
// parent primary keys start
{{- range $field := $schema.DBColumnFields -}}
{{- if eq $field.DataType "datetime" }}
pgutils.NilOrTime({{$field.Getter "obj"}}),
{{- else if eq $field.SQLType "uuid" }}
pgutils.NilOrUUID({{$field.Getter "obj"}}),
{{- else if eq $field.DataType "map" }}
pgutils.EmptyOrMap({{$field.Getter "obj"}}),
{{- else }}
{{$field.Getter "obj"}},{{end}}
{{- end}}
{{- template "insertValues" $schema }}
}

finalStr := "INSERT INTO {{$schema.Table}} ({{template "commaSeparatedColumns" $schema.DBColumnFields }}) VALUES({{ valueExpansion (len $schema.DBColumnFields) }}) ON CONFLICT({{template "commaSeparatedColumns" $schema.PrimaryKeys}}) DO UPDATE SET {{template "updateExclusions" $schema.DBColumnFields}}"
Expand Down Expand Up @@ -264,16 +268,7 @@ func {{ template "copyFunctionName" $schema }}(ctx context.Context, s pgSearch.D
{{end}}

inputRows = append(inputRows, []interface{}{
{{- range $index, $field := $schema.DBColumnFields }}
{{- if eq $field.DataType "datetime"}}
pgutils.NilOrTime({{$field.Getter "obj"}}),
{{- else if eq $field.SQLType "uuid" }}
pgutils.NilOrUUID({{$field.Getter "obj"}}),
{{- else if eq $field.DataType "map" }}
pgutils.EmptyOrMap({{$field.Getter "obj"}}),
{{- else }}
{{$field.Getter "obj"}},{{end}}
{{- end}}
{{- template "insertValues" $schema }}
})

{{ if not $schema.Parent }}
Expand Down

0 comments on commit 1e64205

Please sign in to comment.