listinvoices: add limit param.

Changelog-Added: JSON-RPC: `listinvoices` has `limit` parameter for listing control.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell
2023-07-22 19:29:15 +09:30
parent 16c133746b
commit 284262d006
13 changed files with 321 additions and 278 deletions

View File

@@ -472,6 +472,7 @@ void invoices_delete_expired(struct invoices *invoices,
struct db_stmt *invoices_first(struct invoices *invoices,
const enum wait_index *listindex,
u64 liststart,
const u32 *listlimit,
u64 *inv_dbid)
{
struct db_stmt *stmt;
@@ -480,14 +481,20 @@ struct db_stmt *invoices_first(struct invoices *invoices,
stmt = db_prepare_v2(invoices->wallet->db,
SQL("SELECT id FROM invoices"
" WHERE updated_index >= ?"
" ORDER BY updated_index;"));
" ORDER BY updated_index"
" LIMIT ?;"));
} else {
stmt = db_prepare_v2(invoices->wallet->db,
SQL("SELECT id FROM invoices"
" WHERE id >= ?"
" ORDER BY id;"));
" ORDER BY id"
" LIMIT ?;"));
}
db_bind_u64(stmt, liststart);
if (listlimit)
db_bind_int(stmt, *listlimit);
else
db_bind_int(stmt, INT_MAX);
db_query_prepared(stmt);
return invoices_next(invoices, stmt, inv_dbid);