diff options
Diffstat (limited to 'src/cmd_accounts.c')
| -rw-r--r-- | src/cmd_accounts.c | 37 |
1 files changed, 11 insertions, 26 deletions
diff --git a/src/cmd_accounts.c b/src/cmd_accounts.c index 900558f..b5770b0 100644 --- a/src/cmd_accounts.c +++ b/src/cmd_accounts.c @@ -49,7 +49,7 @@ static yyjson_mut_val *h_account_list(struct req *r) : "SELECT " ACCOUNT_COLUMNS " FROM accounts" " WHERE org_id=?1 ORDER BY number"; 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_arr_add_val(items, account_json(r->rdoc, st)); @@ -72,7 +72,7 @@ static yyjson_mut_val *h_account_get(struct req *r) : "SELECT " ACCOUNT_COLUMNS " FROM accounts" " WHERE org_id=?1 AND number=?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) sqlite3_bind_int64(st, 2, id); @@ -116,26 +116,20 @@ static yyjson_mut_val *h_account_create(struct req *r) "INSERT INTO accounts(org_id,number,name,type,sru_code,vat_code," "created_at) VALUES(?1,?2,?3,?4,?5,?6,?7)", -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_text(st, 2, number, -1, SQLITE_TRANSIENT); sqlite3_bind_text(st, 3, name, -1, SQLITE_TRANSIENT); sqlite3_bind_text(st, 4, type, -1, SQLITE_TRANSIENT); - if (sru) - sqlite3_bind_text(st, 5, sru, -1, SQLITE_TRANSIENT); - else - sqlite3_bind_null(st, 5); - if (vat) - sqlite3_bind_text(st, 6, vat, -1, SQLITE_TRANSIENT); - else - sqlite3_bind_null(st, 6); + bind_text_or_null(st, 5, sru); + bind_text_or_null(st, 6, vat); sqlite3_bind_text(st, 7, ts, -1, SQLITE_TRANSIENT); int rc = sqlite3_step(st); sqlite3_finalize(st); if (rc != SQLITE_DONE) { if ((rc & 0xff) == SQLITE_CONSTRAINT) return fail(r, "CONFLICT", "account number already exists"); - return fail(r, "INTERNAL", sqlite3_errmsg(r->db)); + return db_sqlite_error(r); } int64_t id = db_last_id(r->db); char *reqjson = audit_args_json(r->args); @@ -173,27 +167,18 @@ static yyjson_mut_val *h_account_update(struct req *r) " active=CASE WHEN ?5<0 THEN active ELSE ?5 END, updated_at=?6" " WHERE org_id=?1 AND id=?7", -1, &st, NULL) != SQLITE_OK) - return fail(r, "INTERNAL", "database error"); + return db_error(r); sqlite3_bind_int64(st, 1, r->org_id); - if (name) - sqlite3_bind_text(st, 2, name, -1, SQLITE_TRANSIENT); - else - sqlite3_bind_null(st, 2); - if (sru) - sqlite3_bind_text(st, 3, sru, -1, SQLITE_TRANSIENT); - else - sqlite3_bind_null(st, 3); - if (vat) - sqlite3_bind_text(st, 4, vat, -1, SQLITE_TRANSIENT); - else - sqlite3_bind_null(st, 4); + bind_text_or_null(st, 2, name); + bind_text_or_null(st, 3, sru); + bind_text_or_null(st, 4, vat); sqlite3_bind_int(st, 5, active); sqlite3_bind_text(st, 6, ts, -1, SQLITE_TRANSIENT); sqlite3_bind_int64(st, 7, id); 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", "account not found"); char *reqjson = audit_args_json(r->args); |
