Skip to content

Commit 5c0beb7

Browse files
Nicholas Santikyleconroy
authored andcommitted
Added queryparams for many
1 parent 4a03413 commit 5c0beb7

File tree

4 files changed

+118
-6
lines changed

4 files changed

+118
-6
lines changed

.vscode/settings.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
{
2-
"files.insertFinalNewline": true
2+
"files.insertFinalNewline": true,
3+
"files.associations": {
4+
"*.tmpl": "html"
5+
}
36
}

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build:
44
go build ./...
55

66
build-local:
7-
go build -o ../sqlc ./cmd/sqlc
7+
go build -o ../sqlc-tilby ./cmd/sqlc
88

99
install:
1010
go install ./...

internal/codegen/golang/templates/stdlib/queryCode.tmpl

Lines changed: 94 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,21 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
4444
{{range .Comments}}//{{.}}
4545
{{end -}}
4646
{{- if emitSchemaName }}
47-
func (q *Queries) {{.MethodName}}(ctx context.Context, schema string, {{ dbarg }} {{.Arg.Pair}}) ([]{{.Ret.DefineType}}, error) {
47+
48+
type {{.MethodName}}Filter struct {
49+
FieldName string
50+
Value string
51+
}
52+
53+
type {{.MethodName}}FilterParams struct {
54+
ExactParams []{{.MethodName}}Filter
55+
InParams []{{.MethodName}}Filter
56+
LikeParams []{{.MethodName}}Filter
57+
SinceParams []{{.MethodName}}Filter
58+
MaxParams []{{.MethodName}}Filter
59+
}
60+
61+
func (q *Queries) {{.MethodName}}(ctx context.Context, schema string, filterParams {{.MethodName}}FilterParams, {{ dbarg }} {{.Arg.Pair}}) ([]{{.Ret.DefineType}}, error) {
4862
{{- else }}
4963
func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}) ([]{{.Ret.DefineType}}, error) {
5064
{{- end }}
@@ -140,6 +154,7 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
140154
{{- if .Arg.HasSqlcSlices }}
141155
query := strings.ReplaceAll({{.ConstantName}}, "%s", schema)
142156
var queryParams []interface{}
157+
143158
{{- if .Arg.Struct }}
144159
{{- $arg := .Arg }}
145160
{{- range .Arg.Struct.Fields }}
@@ -170,15 +185,18 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
170185
query = strings.ReplaceAll(query, "/*SLICE:{{.Arg.Column.Name}}*/?", "NULL")
171186
}
172187
{{- end }}
188+
173189
{{- if emitPreparedQueries }}
174190
{{- if emitSchemaName }}
175-
{{ queryRetval . }} {{ queryMethod . }}(ctx, nil, strings.ReplaceAll(query, "%s", schema), queryParams...)
191+
replacedQuery := strings.ReplaceAll(query, "%s", schema)
192+
{{ queryRetval . }} {{ queryMethod . }}(ctx, nil, replacedQuery, queryParams...)
176193
{{- else }}
177194
{{ queryRetval . }} {{ queryMethod . }}(ctx, nil, query, queryParams...)
178195
{{- end }}
179196
{{- else}}
180197
{{- if emitSchemaName }}
181-
{{ queryRetval . }} {{ queryMethod . }}(ctx, strings.ReplaceAll(query, "%s", schema), queryParams...)
198+
replacedQuery := strings.ReplaceAll(query, "%s", schema)
199+
{{ queryRetval . }} {{ queryMethod . }}(ctx, replacedQuery, queryParams...)
182200
{{- else }}
183201
{{ queryRetval . }} {{ queryMethod . }}(ctx, query, queryParams...)
184202
{{- end -}}
@@ -187,7 +205,79 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
187205
{{- queryRetval . }} {{ queryMethod . }}(ctx, q.{{.FieldName}}, {{.ConstantName}}, {{.Arg.Params}})
188206
{{- else}}
189207
{{- if emitSchemaName }}
190-
{{- queryRetval . }} {{ queryMethod . }}(ctx, strings.ReplaceAll({{.ConstantName}}, "%s", schema), {{.Arg.Params}})
208+
query := strings.ReplaceAll({{.ConstantName}}, "%s", schema);
209+
210+
{{- /**
211+
If the query has a filter, we need to add the filter to the query
212+
and the query params.
213+
*/}}
214+
215+
isFirstFilter := true;
216+
var queryParams []interface{};
217+
218+
for _, filter := range filterParams.ExactParams {
219+
if isFirstFilter {
220+
query += " WHERE "
221+
isFirstFilter = false
222+
} else {
223+
query += " AND "
224+
}
225+
226+
query += filter.FieldName + " = ?"
227+
queryParams = append(queryParams, filter.Value)
228+
};
229+
230+
for _, filter := range filterParams.InParams {
231+
if isFirstFilter {
232+
query += " WHERE "
233+
isFirstFilter = false
234+
} else {
235+
query += " AND "
236+
}
237+
238+
query += filter.FieldName + " IN (?)"
239+
queryParams = append(queryParams, filter.Value)
240+
};
241+
242+
for _, filter := range filterParams.LikeParams {
243+
if isFirstFilter {
244+
query += " WHERE "
245+
isFirstFilter = false
246+
} else {
247+
query += " AND "
248+
}
249+
250+
query += filter.FieldName + " LIKE ?"
251+
queryParams = append(queryParams, filter.Value)
252+
};
253+
254+
for _, filter := range filterParams.SinceParams {
255+
if isFirstFilter {
256+
query += " WHERE "
257+
isFirstFilter = false
258+
} else {
259+
query += " AND "
260+
}
261+
262+
query += filter.FieldName + " > ?"
263+
queryParams = append(queryParams, filter.Value)
264+
};
265+
266+
for _, filter := range filterParams.MaxParams {
267+
if isFirstFilter {
268+
query += " WHERE "
269+
isFirstFilter = false
270+
} else {
271+
query += " AND "
272+
}
273+
274+
query += filter.FieldName + " < ?"
275+
queryParams = append(queryParams, filter.Value)
276+
};
277+
278+
279+
{{- queryRetval . }} {{ queryMethod . }}(ctx, query, {{.Arg.Params}})
280+
191281
{{- else }}
192282
{{- queryRetval . }} {{ queryMethod . }}(ctx, {{.ConstantName}}, {{.Arg.Params}})
193283
{{- end -}}

internal/codegen/golang/templates/template.tmpl

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ package {{.Package}}
1111

1212
{{ if hasImports .SourceName }}
1313
import (
14+
{{ if .EmitSchemaName }}
15+
{{end}}
16+
1417
{{range imports .SourceName}}
1518
{{range .}}{{.}}
1619
{{end}}
@@ -44,6 +47,9 @@ package {{.Package}}
4447

4548
{{ if hasImports .SourceName }}
4649
import (
50+
{{ if .EmitSchemaName }}
51+
{{end}}
52+
4753
{{range imports .SourceName}}
4854
{{range .}}{{.}}
4955
{{end}}
@@ -75,6 +81,9 @@ package {{.Package}}
7581

7682
{{ if hasImports .SourceName }}
7783
import (
84+
{{ if .EmitSchemaName }}
85+
{{end}}
86+
7887
{{range imports .SourceName}}
7988
{{range .}}{{.}}
8089
{{end}}
@@ -175,6 +184,10 @@ package {{.Package}}
175184

176185
{{ if hasImports .SourceName }}
177186
import (
187+
{{ if .EmitSchemaName }}
188+
"strings"
189+
{{end}}
190+
178191
{{range imports .SourceName}}
179192
{{range .}}{{.}}
180193
{{end}}
@@ -207,6 +220,9 @@ package {{.Package}}
207220

208221
{{ if hasImports .SourceName }}
209222
import (
223+
{{ if .EmitSchemaName }}
224+
{{end}}
225+
210226
{{range imports .SourceName}}
211227
{{range .}}{{.}}
212228
{{end}}
@@ -240,6 +256,9 @@ package {{.Package}}
240256

241257
{{ if hasImports .SourceName }}
242258
import (
259+
{{ if .EmitSchemaName }}
260+
{{end}}
261+
243262
{{range imports .SourceName}}
244263
{{range .}}{{.}}
245264
{{end}}

0 commit comments

Comments
 (0)