summaryrefslogtreecommitdiff
path: root/src/cmd_templates.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd_templates.c')
-rw-r--r--src/cmd_templates.c45
1 files changed, 18 insertions, 27 deletions
diff --git a/src/cmd_templates.c b/src/cmd_templates.c
index a134d96..7e40886 100644
--- a/src/cmd_templates.c
+++ b/src/cmd_templates.c
@@ -65,7 +65,7 @@ static int parse_template_rows(struct req *r, yyjson_val *rowsv,
" AND number=?2",
-1, &st, NULL) != SQLITE_OK) {
free(rows);
- return fail(r, "INTERNAL", "database error") ? -1 : -1;
+ return db_error(r) ? -1 : -1;
}
sqlite3_bind_int64(st, 1, r->org_id);
sqlite3_bind_text(st, 2, account, -1, SQLITE_TRANSIENT);
@@ -124,7 +124,7 @@ static yyjson_mut_val *h_template_list(struct req *r)
" WHERE tr.org_id=t.org_id AND tr.template_id=t.id)"
" FROM voucher_templates t WHERE t.org_id=?1 ORDER BY t.name";
if (sqlite3_prepare_v2(r->db, sql, -1, &st, NULL) != SQLITE_OK)
- return fail(r, "INTERNAL", "database error");
+ return db_error(r);
sqlite3_bind_int64(st, 1, r->org_id);
while (sqlite3_step(st) == SQLITE_ROW) {
yyjson_mut_val *o = yyjson_mut_arr_add_obj(r->rdoc, items);
@@ -160,7 +160,7 @@ static yyjson_mut_val *h_template_get(struct req *r)
: "SELECT id,name,series,description,active"
" FROM voucher_templates WHERE org_id=?1 AND name=?2";
if (sqlite3_prepare_v2(r->db, sql, -1, &st, NULL) != SQLITE_OK)
- return fail(r, "INTERNAL", "database error");
+ return db_error(r);
sqlite3_bind_int64(st, 1, r->org_id);
if (id > 0)
sqlite3_bind_int64(st, 2, id);
@@ -255,7 +255,7 @@ static yyjson_mut_val *h_template_create(struct req *r)
-1, &st, NULL) != SQLITE_OK) {
db_exec(r->db, "ROLLBACK", NULL);
free(rows);
- return fail(r, "INTERNAL", "database error");
+ return db_error(r);
}
sqlite3_bind_int64(st, 1, r->org_id);
sqlite3_bind_text(st, 2, name, -1, SQLITE_TRANSIENT);
@@ -269,7 +269,7 @@ static yyjson_mut_val *h_template_create(struct req *r)
free(rows);
if ((rc & 0xff) == SQLITE_CONSTRAINT)
return fail(r, "CONFLICT", "a template with that name exists");
- return fail(r, "INTERNAL", sqlite3_errmsg(r->db));
+ return db_sqlite_error(r);
}
int64_t tpl = db_last_id(r->db);
for (size_t i = 0; i < nrows; i++) {
@@ -280,7 +280,7 @@ static yyjson_mut_val *h_template_create(struct req *r)
-1, &st, NULL) != SQLITE_OK) {
db_exec(r->db, "ROLLBACK", NULL);
free(rows);
- return fail(r, "INTERNAL", "database error");
+ return db_error(r);
}
sqlite3_bind_int64(st, 1, r->org_id);
sqlite3_bind_int64(st, 2, tpl);
@@ -296,7 +296,7 @@ static yyjson_mut_val *h_template_create(struct req *r)
if (rc != SQLITE_DONE) {
db_exec(r->db, "ROLLBACK", NULL);
free(rows);
- return fail(r, "INTERNAL", sqlite3_errmsg(r->db));
+ return db_sqlite_error(r);
}
}
free(rows);
@@ -369,21 +369,12 @@ static yyjson_mut_val *h_template_update(struct req *r)
-1, &st, NULL) != SQLITE_OK) {
db_exec(r->db, "ROLLBACK", NULL);
free(rows);
- return fail(r, "INTERNAL", "database error");
+ return db_error(r);
}
sqlite3_bind_int64(st, 1, r->org_id);
- if (new_name)
- sqlite3_bind_text(st, 2, new_name, -1, SQLITE_TRANSIENT);
- else
- sqlite3_bind_null(st, 2);
- if (series)
- sqlite3_bind_text(st, 3, series, -1, SQLITE_TRANSIENT);
- else
- sqlite3_bind_null(st, 3);
- if (description)
- sqlite3_bind_text(st, 4, description, -1, SQLITE_TRANSIENT);
- else
- sqlite3_bind_null(st, 4);
+ bind_text_or_null(st, 2, new_name);
+ bind_text_or_null(st, 3, series);
+ bind_text_or_null(st, 4, description);
sqlite3_bind_int(st, 5, active);
sqlite3_bind_text(st, 6, ts, -1, SQLITE_TRANSIENT);
sqlite3_bind_int64(st, 7, head.id);
@@ -392,7 +383,7 @@ static yyjson_mut_val *h_template_update(struct req *r)
if (rc != SQLITE_DONE) {
db_exec(r->db, "ROLLBACK", NULL);
free(rows);
- return fail(r, "INTERNAL", sqlite3_errmsg(r->db));
+ return db_sqlite_error(r);
}
if (rowsv) {
if (sqlite3_prepare_v2(
@@ -402,7 +393,7 @@ static yyjson_mut_val *h_template_update(struct req *r)
-1, &st, NULL) != SQLITE_OK) {
db_exec(r->db, "ROLLBACK", NULL);
free(rows);
- return fail(r, "INTERNAL", "database error");
+ return db_error(r);
}
sqlite3_bind_int64(st, 1, r->org_id);
sqlite3_bind_int64(st, 2, head.id);
@@ -411,7 +402,7 @@ static yyjson_mut_val *h_template_update(struct req *r)
if (rc != SQLITE_DONE) {
db_exec(r->db, "ROLLBACK", NULL);
free(rows);
- return fail(r, "INTERNAL", sqlite3_errmsg(r->db));
+ return db_sqlite_error(r);
}
for (size_t i = 0; i < nrows; i++) {
if (sqlite3_prepare_v2(
@@ -422,7 +413,7 @@ static yyjson_mut_val *h_template_update(struct req *r)
-1, &st, NULL) != SQLITE_OK) {
db_exec(r->db, "ROLLBACK", NULL);
free(rows);
- return fail(r, "INTERNAL", "database error");
+ return db_error(r);
}
sqlite3_bind_int64(st, 1, r->org_id);
sqlite3_bind_int64(st, 2, head.id);
@@ -438,7 +429,7 @@ static yyjson_mut_val *h_template_update(struct req *r)
if (rc != SQLITE_DONE) {
db_exec(r->db, "ROLLBACK", NULL);
free(rows);
- return fail(r, "INTERNAL", sqlite3_errmsg(r->db));
+ return db_sqlite_error(r);
}
}
}
@@ -466,7 +457,7 @@ static yyjson_mut_val *h_template_archive(struct req *r)
: "UPDATE voucher_templates SET active=0 WHERE org_id=?1"
" AND name=?2";
if (sqlite3_prepare_v2(r->db, sql, -1, &st, NULL) != SQLITE_OK)
- return fail(r, "INTERNAL", "database error");
+ return db_error(r);
sqlite3_bind_int64(st, 1, r->org_id);
if (id > 0)
sqlite3_bind_int64(st, 2, id);
@@ -475,7 +466,7 @@ static yyjson_mut_val *h_template_archive(struct req *r)
int rc = sqlite3_step(st);
sqlite3_finalize(st);
if (rc != SQLITE_DONE)
- return fail(r, "INTERNAL", sqlite3_errmsg(r->db));
+ return db_sqlite_error(r);
if (sqlite3_changes(r->db) == 0)
return fail(r, "NOT_FOUND", "template not found");
char *reqjson = audit_args_json(r->args);