Skip to content

Commit 10a4915

Browse files
committed
refactor: treat a sinqle query as a list with one element
Part of #17
1 parent 159663a commit 10a4915

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

src/templates/routes.py.ejs

+18-7
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,21 @@ endpoints.forEach(function(endpoint) {
3333
const hasGetOne = method.name === 'get'
3434
const hasGetMany = method.name === 'get_list'
3535
const pythonMethodName = generate_method_name(method.name, path)
36-
const sql = convertToPsycopgNamedArguments(formatQuery(method.query))
37-
const params = extractParamsFromQuery(method.query);
38-
const formattedParams = params.length > 0
39-
// [ "p.categoryId" ] => [ '"categoryId": categoryId' ]
40-
? ', { ' + params.map(param => param.substring(2)).map(param => `"${param}": ${param}`).join(', ') + ' }'
41-
: ''
36+
37+
let queries = []
38+
if (method.query) {
39+
queries.push(method.query)
40+
}
41+
42+
queries = queries.map(query => {
43+
const sql = convertToPsycopgNamedArguments(formatQuery(query))
44+
const params = extractParamsFromQuery(query);
45+
const formattedParams = params.length > 0
46+
// [ "p.categoryId" ] => [ '"categoryId": categoryId' ]
47+
? ', { ' + params.map(param => param.substring(2)).map(param => `"${param}": ${param}`).join(', ') + ' }'
48+
: ''
49+
return ({ sql : sql, formattedParams: formattedParams })
50+
})
4251
4352
if (hasGetOne || hasGetMany) {
4453
%>
@@ -54,11 +63,13 @@ def <%- pythonMethodName %>(<%- paramsFromPath.join(', ') %>):
5463
try:
5564
with conn:
5665
with conn.cursor(cursor_factory = psycopg2.extras.RealDictCursor) as cur:
57-
cur.execute('<%- sql %>'<%- formattedParams %>)
66+
<% queries.forEach(query => { -%>
67+
cur.execute('<%- query.sql %>'<%- query.formattedParams %>)
5868
result = cur.fetchone()
5969
if result is None:
6070
raise HTTPException(status_code=404)
6171
return result
72+
<% }) -%>
6273
finally:
6374
conn.close()
6475
<%

0 commit comments

Comments
 (0)