hv2-all-in-one/api/methods.py.tmpl
2022-01-06 21:06:16 +01:00

148 lines
3.2 KiB
Cheetah

$GENERATED_PYTHON_COMMENT
from db import dbGetMany, dbGetOne, dbInsert, dbUpdate
from loguru import logger
import werkzeug
#for $table in $tables
def get_${table.name}s(user, token_info):
return dbGetMany(user, token_info, {
"statement": """
SELECT
id
#for $column in $table.columns
,$column.name
#end for
FROM ${table.name}_t
#if $table.selectors
ORDER BY
#set $sep = ""
#for $selector in $table.selectors
$sep$selector
#set $sep = ","
#end for
#end if
""",
"params": ()
}
)
def insert_${table.name}(user, token_info, **args):
try:
body = args["body"]
#for $column in $table.columns
v_$column.name = body["$column.name"]
#end for
return dbInsert(user, token_info, {
"statement": """
INSERT INTO ${table.name}_t
(
#set $sep=""
#for $column in $table.columns
$sep$column.name
#set $sep=","
#end for
) VALUES (
#set $sep=""
#for $column in $table.columns
$sep%s
#set $sep=","
#end for
)
RETURNING *
""",
"params": [
#set $sep=""
#for $column in $table.columns
${sep}v_$column.name
#set $sep=","
#end for
]
})
except KeyError as e:
logger.warning("insert_${table.name}: parameter missing: {}".format(e))
raise werkzeug.exceptions.UnprocessableEntity("parameter missing: {}".format(e))
def get_${table.name}(user, token_info, ${table.name}Id=None):
return dbGetOne(user, token_info, {
"statement": """
SELECT
id
#for $column in $table.columns
,$column.name
#end for
FROM ${table.name}_t
WHERE id = %s
""",
"params": (${table.name}Id, )
}
)
#if (('immutable' not in $table) or (not $table.immutable))
def update_${table.name}(user, token_info, ${table.name}Id=None, **args):
try:
body = args["body"]
#for $column in $table.columns
#if (('immutable' not in $column) or (not $column.immutable))
v_$column.name = body["$column.name"]
#end if
#end for
return dbUpdate(user, token_info, {
"statement": """
UPDATE ${table.name}_t
SET
#set $sep=""
#for $column in $table.columns
#if (('immutable' not in $column) or (not $column.immutable))
$sep$column.name = %s
#end if
#set $sep=","
#end for
WHERE id = %s
RETURNING *
""",
"params": [
#for $column in $table.columns
#if (('immutable' not in $column) or (not $column.immutable))
v_${column.name},
#end if
#end for
${table.name}Id
]
})
except KeyError as e:
logger.warning("update_${table.name}: parameter missing: {}".format(e))
raise werkzeug.exceptions.UnprocessableEntity("parameter missing: {}".format(e))
#end if
#for $column in $table.columns
#if (('foreignkey' in $column) and $column.foreignkey)
def get_${table.name}_by_${column.name}(user, token_info, ${column.name}Id=None):
return dbGetMany(user, token_info, {
"statement": """
SELECT
id
#for $innerColumn in $table.columns
,$innerColumn.name
#end for
FROM ${table.name}_t
WHERE ${column.name} = %s
#if $table.selectors
ORDER BY
#set $sep = ""
#for $selector in $table.selectors
$sep$selector
#set $sep = ","
#end for
#end if
""",
"params": (${column.name}Id, )
}
)
#end if
#end for
#end for