diff options
| author | Anders Betts <anders.betts@gmail.com> | 2026-09-20 21:55:04 +0200 |
|---|---|---|
| committer | Anders Betts <anders.betts@gmail.com> | 2026-09-20 22:02:57 +0200 |
| commit | ceff3d26732a7fde2f66df0270269d3bebcfabf7 (patch) | |
| tree | 4ad6677617cae9de4aa4b5b42352a7a8cf29a3e9 /src/cmd_invoices.c | |
| parent | 10a535ace098144980d0ffd1593f6384c39cc221 (diff) | |
| download | bokf-ceff3d26732a7fde2f66df0270269d3bebcfabf7.tar.gz bokf-ceff3d26732a7fde2f66df0270269d3bebcfabf7.zip | |
commands: shared DB-error helpers
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'src/cmd_invoices.c')
| -rw-r--r-- | src/cmd_invoices.c | 34 |
1 files changed, 17 insertions, 17 deletions
diff --git a/src/cmd_invoices.c b/src/cmd_invoices.c index b8d44e3..4bce5ee 100644 --- a/src/cmd_invoices.c +++ b/src/cmd_invoices.c @@ -41,7 +41,7 @@ static int invoice_take_number(struct req *r, int64_t *out) if (sqlite3_prepare_v2( r->db, "SELECT next_number FROM invoice_sequence WHERE org_id=?1", -1, &st, NULL) != SQLITE_OK) { - fail(r, "INTERNAL", "database error"); + db_error(r); return -1; } sqlite3_bind_int64(st, 1, r->org_id); @@ -54,7 +54,7 @@ static int invoice_take_number(struct req *r, int64_t *out) "UPDATE invoice_sequence SET next_number=next_number+1" " WHERE org_id=?1", -1, &st, NULL) != SQLITE_OK) { - fail(r, "INTERNAL", "database error"); + db_error(r); return -1; } sqlite3_bind_int64(st, 1, r->org_id); @@ -69,7 +69,7 @@ static int invoice_take_number(struct req *r, int64_t *out) r->db, "INSERT INTO invoice_sequence(org_id,next_number) VALUES(?1,2)", -1, &st, NULL) != SQLITE_OK) { - fail(r, "INTERNAL", "database error"); + db_error(r); return -1; } sqlite3_bind_int64(st, 1, r->org_id); @@ -109,13 +109,13 @@ static yyjson_mut_val *h_invoice_sequence_set(struct req *r) "INSERT INTO invoice_sequence(org_id,next_number) VALUES(?1,?2)" " ON CONFLICT(org_id) DO UPDATE SET next_number=excluded.next_number", -1, &st, NULL) != SQLITE_OK) - return fail(r, "INTERNAL", "database error"); + return db_error(r); sqlite3_bind_int64(st, 1, r->org_id); sqlite3_bind_int64(st, 2, next); 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); char *reqjson = audit_args_json(r->args); audit_append(r->db, r->org_id, r->sess->user_id, r->sess->token_id, "invoice.sequence_set", reqjson, "OK", NULL); @@ -387,7 +387,7 @@ static int invoice_view_fill(struct req *r, const struct invoice_draft *d, "COALESCE(phone,''),COALESCE(email,''),COALESCE(org_nr,'')," "COALESCE(vat_nr,'') FROM orgs WHERE id=?1", -1, &st, NULL) != SQLITE_OK) { - fail(r, "INTERNAL", "database error"); + db_error(r); return -1; } sqlite3_bind_int64(st, 1, r->org_id); @@ -422,7 +422,7 @@ static int invoice_view_fill(struct req *r, const struct invoice_draft *d, "SELECT name,address,postal_code,city,vat_nr,payment_days,active" " FROM customers WHERE org_id=?1 AND id=?2", -1, &st, NULL) != SQLITE_OK) { - fail(r, "INTERNAL", "database error"); + db_error(r); return -1; } sqlite3_bind_int64(st, 1, r->org_id); @@ -591,7 +591,7 @@ static int invoice_store_attachment(struct req *r, const struct invoice_view *v, "content,created_at,created_by)" " VALUES(?1,?2,?3,'application/pdf',?4,?5,?6,?7)", -1, &st, NULL) != SQLITE_OK) { - fail(r, "INTERNAL", "database error"); + db_error(r); return -1; } sqlite3_bind_int64(st, 1, r->org_id); @@ -627,7 +627,7 @@ static int invoice_store_invoice(struct req *r, const struct invoice_draft *d, " VALUES(?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16," "?17)", -1, &st, NULL) != SQLITE_OK) { - fail(r, "INTERNAL", "database error"); + db_error(r); return -1; } sqlite3_bind_int64(st, 1, r->org_id); @@ -673,7 +673,7 @@ static int invoice_store_invoice(struct req *r, const struct invoice_draft *d, "vat_code,account)" " VALUES(?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12)", -1, &st, NULL) != SQLITE_OK) { - fail(r, "INTERNAL", "database error"); + db_error(r); return -1; } sqlite3_bind_int64(st, 1, r->org_id); @@ -929,7 +929,7 @@ static yyjson_mut_val *h_invoice_get(struct req *r) " ON c.org_id=i.org_id AND c.id=i.customer_id" " WHERE i.org_id=?1 AND i.id=?2", -1, &st, NULL) != SQLITE_OK) - return fail(r, "INTERNAL", "database error"); + return db_error(r); sqlite3_bind_int64(st, 1, r->org_id); sqlite3_bind_int64(st, 2, id); if (sqlite3_step(st) != SQLITE_ROW) { @@ -1032,7 +1032,7 @@ static yyjson_mut_val *h_invoice_list(struct req *r) " AND (?3='' OR i.status=?3)" " ORDER BY i.number DESC, i.id DESC LIMIT ?4", -1, &st, NULL) != SQLITE_OK) - return fail(r, "INTERNAL", "database error"); + return db_error(r); sqlite3_bind_int64(st, 1, r->org_id); sqlite3_bind_int64(st, 2, customer_id); sqlite3_bind_text(st, 3, status, -1, SQLITE_TRANSIENT); @@ -1094,7 +1094,7 @@ static yyjson_mut_val *h_invoice_pdf(struct req *r) r->db, "SELECT document_id FROM invoices WHERE org_id=?1 AND id=?2", -1, &st, NULL) != SQLITE_OK) - return fail(r, "INTERNAL", "database error"); + return db_error(r); sqlite3_bind_int64(st, 1, r->org_id); sqlite3_bind_int64(st, 2, id); if (sqlite3_step(st) != SQLITE_ROW) { @@ -1113,7 +1113,7 @@ static yyjson_mut_val *h_invoice_pdf(struct req *r) r->db, "SELECT content FROM attachments WHERE org_id=?1 AND id=?2", -1, &st, NULL) != SQLITE_OK) - return fail(r, "INTERNAL", "database error"); + return db_error(r); sqlite3_bind_int64(st, 1, r->org_id); sqlite3_bind_int64(st, 2, document_id); if (sqlite3_step(st) != SQLITE_ROW) { @@ -1163,7 +1163,7 @@ static yyjson_mut_val *h_invoice_send(struct req *r) " JOIN orgs o ON o.id=i.org_id" " WHERE i.org_id=?1 AND i.id=?2", -1, &st, NULL) != SQLITE_OK) - return fail(r, "INTERNAL", "database error"); + return db_error(r); sqlite3_bind_int64(st, 1, r->org_id); sqlite3_bind_int64(st, 2, id); if (sqlite3_step(st) != SQLITE_ROW) { @@ -1192,7 +1192,7 @@ static yyjson_mut_val *h_invoice_send(struct req *r) if (sqlite3_prepare_v2( r->db, "SELECT content FROM attachments WHERE org_id=?1 AND id=?2", -1, &st, NULL) != SQLITE_OK) - return fail(r, "INTERNAL", "database error"); + return db_error(r); sqlite3_bind_int64(st, 1, r->org_id); sqlite3_bind_int64(st, 2, document_id); if (sqlite3_step(st) != SQLITE_ROW) { @@ -1317,7 +1317,7 @@ static yyjson_mut_val *h_invoice_send(struct req *r) "UPDATE invoices SET last_sent_at=?1,last_sent_to=?2" " WHERE org_id=?3 AND id=?4", -1, &st, NULL) != SQLITE_OK) { - fail(r, "INTERNAL", "database error"); + db_error(r); goto done; } sqlite3_bind_text(st, 1, ts, -1, SQLITE_TRANSIENT); |
