Skip to content

Commit 7f49775

Browse files
Nicholas Santikyleconroy
authored andcommitted
Working filters
1 parent 5c0beb7 commit 7f49775

File tree

2 files changed

+38
-2
lines changed

2 files changed

+38
-2
lines changed

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

Lines changed: 35 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
4141
{{end}}
4242

4343
{{if eq .Cmd ":many"}}
44+
var columnRegex = regexp.MustCompile(`SELECT\s+([\w,\s]+)\s+FROM`);
45+
4446
{{range .Comments}}//{{.}}
4547
{{end -}}
4648
{{- if emitSchemaName }}
@@ -58,7 +60,7 @@ type {{.MethodName}}FilterParams struct {
5860
MaxParams []{{.MethodName}}Filter
5961
}
6062

61-
func (q *Queries) {{.MethodName}}(ctx context.Context, schema string, filterParams {{.MethodName}}FilterParams, {{ dbarg }} {{.Arg.Pair}}) ([]{{.Ret.DefineType}}, error) {
63+
func (q *Queries) {{.MethodName}}(ctx context.Context, schema string, filterParams {{.MethodName}}FilterParams, {{ dbarg }} {{.Arg.Pair}}) ([]{{.Ret.DefineType}}, error) {;
6264
{{- else }}
6365
func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}) ([]{{.Ret.DefineType}}, error) {
6466
{{- end }}
@@ -153,6 +155,10 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
153155
{{define "queryCodeStdExec"}}
154156
{{- if .Arg.HasSqlcSlices }}
155157
query := strings.ReplaceAll({{.ConstantName}}, "%s", schema)
158+
159+
// Extract the columns from the query;
160+
columns := columnRegex.FindString(query);
161+
156162
var queryParams []interface{}
157163

158164
{{- if .Arg.Struct }}
@@ -207,6 +213,9 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
207213
{{- if emitSchemaName }}
208214
query := strings.ReplaceAll({{.ConstantName}}, "%s", schema);
209215

216+
// Extract the columns from the query;
217+
columns := columnRegex.FindString(query);
218+
210219
{{- /**
211220
If the query has a filter, we need to add the filter to the query
212221
and the query params.
@@ -216,6 +225,11 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
216225
var queryParams []interface{};
217226

218227
for _, filter := range filterParams.ExactParams {
228+
// Is the filter in the columns?
229+
if !strings.Contains(columns, filter.FieldName) {
230+
continue
231+
}
232+
219233
if isFirstFilter {
220234
query += " WHERE "
221235
isFirstFilter = false
@@ -228,6 +242,11 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
228242
};
229243

230244
for _, filter := range filterParams.InParams {
245+
// Is the filter in the columns?
246+
if !strings.Contains(columns, filter.FieldName) {
247+
continue
248+
}
249+
231250
if isFirstFilter {
232251
query += " WHERE "
233252
isFirstFilter = false
@@ -240,6 +259,11 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
240259
};
241260

242261
for _, filter := range filterParams.LikeParams {
262+
// Is the filter in the columns?
263+
if !strings.Contains(columns, filter.FieldName) {
264+
continue
265+
}
266+
243267
if isFirstFilter {
244268
query += " WHERE "
245269
isFirstFilter = false
@@ -252,6 +276,11 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
252276
};
253277

254278
for _, filter := range filterParams.SinceParams {
279+
// Is the filter in the columns?
280+
if !strings.Contains(columns, filter.FieldName) {
281+
continue
282+
}
283+
255284
if isFirstFilter {
256285
query += " WHERE "
257286
isFirstFilter = false
@@ -264,6 +293,11 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
264293
};
265294

266295
for _, filter := range filterParams.MaxParams {
296+
// Is the filter in the columns?
297+
if !strings.Contains(columns, filter.FieldName) {
298+
continue
299+
}
300+
267301
if isFirstFilter {
268302
query += " WHERE "
269303
isFirstFilter = false
@@ -274,7 +308,6 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
274308
query += filter.FieldName + " < ?"
275309
queryParams = append(queryParams, filter.Value)
276310
};
277-
278311

279312
{{- queryRetval . }} {{ queryMethod . }}(ctx, query, {{.Arg.Params}})
280313

internal/codegen/golang/templates/template.tmpl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ package {{.Package}}
186186
import (
187187
{{ if .EmitSchemaName }}
188188
"strings"
189+
"regexp"
189190
{{end}}
190191

191192
{{range imports .SourceName}}
@@ -221,6 +222,8 @@ package {{.Package}}
221222
{{ if hasImports .SourceName }}
222223
import (
223224
{{ if .EmitSchemaName }}
225+
"strings"
226+
"regexp"
224227
{{end}}
225228

226229
{{range imports .SourceName}}

0 commit comments

Comments
 (0)