From 638cccc185142fa805a93e506b3685fb706743db Mon Sep 17 00:00:00 2001 From: swrup Date: Sun, 14 Dec 2025 21:34:03 +0100 Subject: [PATCH] wip /keys --- src/keys.ml | 17 +++++++++++++++++ src/pg.ml | 42 +++++++++++++++++++++++++++++++++++++++++- 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 src/keys.ml diff --git a/src/keys.ml b/src/keys.ml new file mode 100644 index 00000000..3b216d58 --- /dev/null +++ b/src/keys.ml @@ -0,0 +1,17 @@ +[@@@ocaml.warning "-27"] + +open Api + +let mk_keys ~sm_signkey ~sm_denom = assert false +let jsont = ExchangeKeysResponse.jsont + +let f req server _env = + Logs.info (fun m -> m "GET /keys/"); + let sm_signkey = Vif.Server.device Devices.secmod_signkey server in + let sm_denom = Vif.Server.device Devices.secmod_denom server in + let res = + let v = mk_keys ~sm_signkey ~sm_denom in + let s = Api.encode_exn jsont v in + Ok s + in + Respond_util.respond_with_res res req diff --git a/src/pg.ml b/src/pg.ml index acaba787..9a1a084f 100644 --- a/src/pg.ml +++ b/src/pg.ml @@ -1,5 +1,7 @@ (* TODO + check there is no issues with signed/unsigned integers + how to fix postgres/caqti tuple type? try something with OID? need to add boilerplate in each query for amounts @@ -342,7 +344,8 @@ let insert_wire = } -> (* TODO wire - what about master_sig_add ? *) + some field are allowed to be NULL + -> use option? *) let conversion_url = "" in let credit_restrictions = "" in let debit_restrictions = "" in @@ -481,3 +484,40 @@ let insert_partner = wad_fee, master_sig, partner_base_url ) + +(* TODO wire + option for nullable fields? + collect in a record type *) +let get_wire_accouts = + let get_wire_accounts = + let master_sig = Bin_sig.MasterWireDetails.caqti in + Caqti_type.( + unit + ->* t7 string (option string) (option string) int (option json_str) + (option json_str) master_sig) + "SELECT payto_uri, conversion_url, debit_restrictions::TEXT, \ + credit_restrictions::TEXT, master_sig, bank_label, priority FROM \ + wire_accounts WHERE is_active" + in + fun (module Conn : CONN) -> Conn.collect_list get_wire_accounts () + +let get_global_fees = + let get_global_fees = + let master_sig = Bin_sig.GlobalFees.caqti in + Caqti_type.( + time + ->* t9 time time amount amount amount time_span time_span int master_sig) + "SELECT start_date, end_date, (history_fee).*, (account_fee).*, \ + (purse_fee).*, purse_timeout, history_expiration, purse_account_limit, \ + master_sig FROM global_fee WHERE start_date >= $1" + in + fun (module Conn : CONN) ~start_date -> + Conn.collect_list get_global_fees start_date + +(* TODO record types for some results *) +(* TODO +iterate_denominations +iterate_active_signkeys +iterate_auditor_denominations +iterate_active_auditors +*)