aboutsummaryrefslogtreecommitdiff
path: root/src/cmd_accounts.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd_accounts.c')
-rw-r--r--src/cmd_accounts.c34
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)