diff options
| author | Anders Betts <anders.betts@gmail.com> | 2026-09-21 09:47:50 +0200 |
|---|---|---|
| committer | Anders Betts <anders.betts@gmail.com> | 2026-09-21 11:01:07 +0200 |
| commit | b1956aa73a533702ccbc3d7713ea90dd5ae44b9b (patch) | |
| tree | 7d3d4c8db28cbe15cfdf916f74ea7d77a5666414 /src/cmd_accounts.c | |
| parent | e25a8c9ae70e5a310c1a82be55d0dbf58ba71250 (diff) | |
| download | bokf-b1956aa73a533702ccbc3d7713ea90dd5ae44b9b.tar.gz bokf-b1956aa73a533702ccbc3d7713ea90dd5ae44b9b.zip | |
commands: db_row_json and db_exec_bound helpers
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'src/cmd_accounts.c')
| -rw-r--r-- | src/cmd_accounts.c | 34 |
1 files changed, 5 insertions, 29 deletions
diff --git a/src/cmd_accounts.c b/src/cmd_accounts.c index b5770b0..bbdd616 100644 --- a/src/cmd_accounts.c +++ b/src/cmd_accounts.c @@ -13,26 +13,12 @@ /* kontoplan */ /* ------------------------------------------------------------------ */ +#define ACCOUNT_SPEC \ + "id:i,number:s,name:s,type:s,sru_code:n,vat_code:n,active:b" + static yyjson_mut_val *account_json(yyjson_mut_doc *doc, sqlite3_stmt *st) { - yyjson_mut_val *o = yyjson_mut_obj(doc); - yyjson_mut_obj_add_int(doc, o, "id", sqlite3_column_int64(st, 0)); - yyjson_mut_obj_add_strcpy(doc, o, "number", - sq(sqlite3_column_text(st, 1))); - yyjson_mut_obj_add_strcpy(doc, o, "name", sq(sqlite3_column_text(st, 2))); - yyjson_mut_obj_add_strcpy(doc, o, "type", sq(sqlite3_column_text(st, 3))); - if (sqlite3_column_type(st, 4) == SQLITE_NULL) - yyjson_mut_obj_add_null(doc, o, "sru_code"); - else - yyjson_mut_obj_add_strcpy(doc, o, "sru_code", - sq(sqlite3_column_text(st, 4))); - if (sqlite3_column_type(st, 5) == SQLITE_NULL) - yyjson_mut_obj_add_null(doc, o, "vat_code"); - else - yyjson_mut_obj_add_strcpy(doc, o, "vat_code", - sq(sqlite3_column_text(st, 5))); - yyjson_mut_obj_add_bool(doc, o, "active", sqlite3_column_int(st, 6) != 0); - return o; + return db_row_json(doc, st, ACCOUNT_SPEC); } #define ACCOUNT_COLUMNS "id,number,name,type,sru_code,vat_code,active" @@ -41,22 +27,12 @@ static yyjson_mut_val *h_account_list(struct req *r) { int active_only = 0; arg_bool(r->args, "active_only", &active_only); - yyjson_mut_val *items = yyjson_mut_arr(r->rdoc); - sqlite3_stmt *st = NULL; const char *sql = active_only ? "SELECT " ACCOUNT_COLUMNS " FROM accounts" " WHERE org_id=?1 AND active=1 ORDER BY number" : "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 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)); - sqlite3_finalize(st); - yyjson_mut_val *o = yyjson_mut_obj(r->rdoc); - yyjson_mut_obj_add_val(r->rdoc, o, "items", items); - return o; + return req_list(r, sql, ACCOUNT_SPEC, "i", r->org_id); } static yyjson_mut_val *h_account_get(struct req *r) |
