From 92363d6e31adc46149e96cce5a2c65fcb8ae13b0 Mon Sep 17 00:00:00 2001 From: swrup Date: Tue, 16 Dec 2025 18:02:13 +0100 Subject: [PATCH] wip wire_fee caqti --- src/http_management.ml | 29 +++++------------ src/pg.ml | 71 ++++++++++++++++++++++-------------------- 2 files changed, 45 insertions(+), 55 deletions(-) diff --git a/src/http_management.ml b/src/http_management.ml index 27f99433..15ceed25 100644 --- a/src/http_management.ml +++ b/src/http_management.ml @@ -380,30 +380,17 @@ module Wire_fee = struct closing_fee; } - let do_ ~db_conn - WireFeeSetupMessage. - { - wire_method; - master_sig_wire; - fee_start; - fee_end; - closing_fee; - wire_fee; - } = - let* wire_fee_opt = - Pg.lookup_wire_fee_by_time db_conn ~wire_method ~start_date:fee_start - ~end_date:fee_end + let do_ ~db_conn (v : WireFeeSetupMessage.t) = + let* wire_fees = + Pg.get_wire_fees_by_time db_conn ~wire_method:v.wire_method + ~start_date:v.fee_start ~end_date:v.fee_end |> unwrap_err_caqti in - match wire_fee_opt with - | Some (_wire_fee, _closing_fee) -> Error "wire-fee already setup" - | None -> - let+ () = - Pg.insert_wire_fee db_conn ~wire_method ~start_date:fee_start - ~end_date:fee_end ~wire_fee ~closing_fee ~master_sig:master_sig_wire - |> unwrap_err_caqti - in + match wire_fees with + | [] -> + let+ () = Pg.insert_wire_fee db_conn v |> unwrap_err_caqti in () + | _l -> Error "wire-fee already setup" let jsont = WireFeeSetupMessage.jsont diff --git a/src/pg.ml b/src/pg.ml index e105f946..ee470c43 100644 --- a/src/pg.ml +++ b/src/pg.ml @@ -328,16 +328,6 @@ let disable_auditor = fun (module Conn : CONN) ~auditor_pub ~change_date -> Conn.exec update_auditor (auditor_pub, "", "", false, change_date) -(* TODO return type *) -let lookup_wire_fee_by_time = - let lookup_wire_fee_by_time = - Caqti_type.(t3 wire_method time time ->? t2 amount amount) - "SELECT (wire_fee).*, (closing_fee).* FROM wire_fee WHERE wire_method=$1 \ - AND end_date > $2 AND start_date < $3" - in - fun (module Conn : CONN) ~wire_method ~start_date ~end_date -> - Conn.find_opt lookup_wire_fee_by_time (wire_method, start_date, end_date) - let insert_wire_fee = let insert_wire_fee = let master_sig = Bin_sig.MasterWireFee.caqti in @@ -346,15 +336,44 @@ let insert_wire_fee = closing_fee, master_sig) VALUES ($1, $2, $3, ($4,$5), ($6,$7), $8)" in fun (module Conn : CONN) - ~wire_method - ~start_date - ~end_date - ~wire_fee - ~closing_fee - ~master_sig + WireFeeSetupMessage. + { + wire_method; + master_sig_wire; + fee_start; + fee_end; + closing_fee; + wire_fee; + } -> Conn.exec insert_wire_fee - (wire_method, start_date, end_date, wire_fee, closing_fee, master_sig) + (wire_method, fee_start, fee_end, wire_fee, closing_fee, master_sig_wire) + +(* TODO return type, use AggregateTransferFee.t *) +let get_wire_fees_by_time = + let lookup_wire_fee_by_time = + Caqti_type.(t3 wire_method time time ->* t2 amount amount) + "SELECT (wire_fee).*, (closing_fee).* FROM wire_fee WHERE wire_method=$1 \ + AND end_date > $2 AND start_date < $3" + in + fun (module Conn : CONN) ~wire_method ~start_date ~end_date -> + Conn.collect_list lookup_wire_fee_by_time (wire_method, start_date, end_date) + +let get_wire_fees = + let get_wire_fees = + let master_sig = Bin_sig.MasterWireFee.caqti in + Caqti_type.(string ->* t5 amount amount time time master_sig) + "SELECT wire_fee, closing_fee, start_date, end_date, master_sig FROM \ + wire_fee WHERE wire_method=$1" + in + fun (module Conn : CONN) ~wire_method -> + let open Syntax in + let+ l = Conn.collect_list get_wire_fees wire_method in + List.map + (fun (wire_fee, closing_fee, start_date, end_date, sig_) -> + AggregateTransferFee. + { wire_fee; closing_fee; start_date; end_date; sig_ }) + l let get_global_fees = let get_global_fees = @@ -368,7 +387,7 @@ let get_global_fees = let lookup_global_fees_by_time = let lookup_global_fees_by_time = - Caqti_type.(t2 time time ->? global_fee) + Caqti_type.(t2 time time ->* global_fee) "SELECT start_date, end_date, (history_fee).*, (account_fee).*, \ (purse_fee).*, history_expiration, purse_account_limit, purse_timeout, \ master_sig FROM global_fee WHERE end_date > $1 AND start_date < $2" @@ -587,22 +606,6 @@ let get_wire_accouts = }) l -let get_wire_fees = - let get_wire_fees = - let master_sig = Bin_sig.MasterWireFee.caqti in - Caqti_type.(string ->* t5 amount amount time time master_sig) - "SELECT wire_fee, closing_fee, start_date, end_date, master_sig FROM \ - wire_fee WHERE wire_method=$1" - in - fun (module Conn : CONN) ~wire_method -> - let open Syntax in - let+ l = Conn.collect_list get_wire_fees wire_method in - List.map - (fun (wire_fee, closing_fee, start_date, end_date, sig_) -> - AggregateTransferFee. - { wire_fee; closing_fee; start_date; end_date; sig_ }) - l - (* TODO iterate_denominations iterate_active_signkeys