@@ -41,6 +41,8 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
41
41
{{end}}
42
42
43
43
{{if eq .Cmd ":many"}}
44
+ var columnRegex = regexp.MustCompile(`SELECT\s+([\w,\s]+)\s+FROM`);
45
+
44
46
{{range .Comments}}//{{.}}
45
47
{{end -}}
46
48
{{- if emitSchemaName }}
@@ -58,7 +60,7 @@ type {{.MethodName}}FilterParams struct {
58
60
MaxParams []{{.MethodName}}Filter
59
61
}
60
62
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) {;
62
64
{{- else }}
63
65
func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}) ([]{{.Ret.DefineType}}, error) {
64
66
{{- end }}
@@ -153,6 +155,10 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
153
155
{{define "queryCodeStdExec"}}
154
156
{{- if .Arg.HasSqlcSlices }}
155
157
query := strings.ReplaceAll({{.ConstantName}}, "%s", schema)
158
+
159
+ // Extract the columns from the query;
160
+ columns := columnRegex.FindString(query);
161
+
156
162
var queryParams []interface{}
157
163
158
164
{{- if .Arg.Struct }}
@@ -207,6 +213,9 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
207
213
{{- if emitSchemaName }}
208
214
query := strings.ReplaceAll({{.ConstantName}}, "%s", schema);
209
215
216
+ // Extract the columns from the query;
217
+ columns := columnRegex.FindString(query);
218
+
210
219
{{- /**
211
220
If the query has a filter, we need to add the filter to the query
212
221
and the query params.
@@ -216,6 +225,11 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
216
225
var queryParams []interface{};
217
226
218
227
for _, filter := range filterParams.ExactParams {
228
+ // Is the filter in the columns?
229
+ if !strings.Contains(columns, filter.FieldName) {
230
+ continue
231
+ }
232
+
219
233
if isFirstFilter {
220
234
query += " WHERE "
221
235
isFirstFilter = false
@@ -228,6 +242,11 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
228
242
};
229
243
230
244
for _, filter := range filterParams.InParams {
245
+ // Is the filter in the columns?
246
+ if !strings.Contains(columns, filter.FieldName) {
247
+ continue
248
+ }
249
+
231
250
if isFirstFilter {
232
251
query += " WHERE "
233
252
isFirstFilter = false
@@ -240,6 +259,11 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
240
259
};
241
260
242
261
for _, filter := range filterParams.LikeParams {
262
+ // Is the filter in the columns?
263
+ if !strings.Contains(columns, filter.FieldName) {
264
+ continue
265
+ }
266
+
243
267
if isFirstFilter {
244
268
query += " WHERE "
245
269
isFirstFilter = false
@@ -252,6 +276,11 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
252
276
};
253
277
254
278
for _, filter := range filterParams.SinceParams {
279
+ // Is the filter in the columns?
280
+ if !strings.Contains(columns, filter.FieldName) {
281
+ continue
282
+ }
283
+
255
284
if isFirstFilter {
256
285
query += " WHERE "
257
286
isFirstFilter = false
@@ -264,6 +293,11 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
264
293
};
265
294
266
295
for _, filter := range filterParams.MaxParams {
296
+ // Is the filter in the columns?
297
+ if !strings.Contains(columns, filter.FieldName) {
298
+ continue
299
+ }
300
+
267
301
if isFirstFilter {
268
302
query += " WHERE "
269
303
isFirstFilter = false
@@ -274,7 +308,6 @@ func (q *Queries) {{.MethodName}}(ctx context.Context, {{ dbarg }} {{.Arg.Pair}}
274
308
query += filter.FieldName + " < ?"
275
309
queryParams = append(queryParams, filter.Value)
276
310
};
277
-
278
311
279
312
{{- queryRetval . }} {{ queryMethod . }}(ctx, query, {{.Arg.Params}})
280
313
0 commit comments