From ef0a51c1667cc4ab352310254c3c118dc42a30e2 Mon Sep 17 00:00:00 2001 From: swrup Date: Sun, 21 Dec 2025 19:04:44 +0100 Subject: [PATCH] + drain_profit_message --- src/api.ml | 9 +++++++-- src/pg.ml | 58 ++++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 50 insertions(+), 17 deletions(-) diff --git a/src/api.ml b/src/api.ml index fc64da11..d3db8ddb 100644 --- a/src/api.ml +++ b/src/api.ml @@ -63,6 +63,11 @@ module B32 = struct include B32 let jsont = Jsont.of_of_string ~kind:"B32" B32.decode ~enc:B32.encode + + let caqti = + Caqti_type.custom + ~encode:(fun v -> Ok (B32.encode v)) + ~decode:B32.decode Caqti_type.string end module HashCode : sig @@ -689,12 +694,12 @@ end module DrainProfitsMessage = struct type t = { + wtid: B32.t; debit_account_section: string; credit_payto_uri: string; - wtid: B32.t; - master_sig: MasterDrainProfit.t; date: Timestamp.t; amount: Amount.t; + master_sig: MasterDrainProfit.t; } let jsont = diff --git a/src/pg.ml b/src/pg.ml index 196c74ac..76c6335a 100644 --- a/src/pg.ml +++ b/src/pg.ml @@ -41,6 +41,7 @@ module Caqti_type = struct (* todo: enum type for wire_method? *) let wire_method = Caqti_type.string let payto_uri = Caqti_type.string + let b32 = Api.B32.caqti include struct (* alias for hash *) @@ -267,6 +268,46 @@ module Caqti_type = struct t7 payto_uri (option string) account_restrictions account_restrictions master_sig (option string) (option int)) + let drain_profit_message = + let master_sig = Bin_sig.MasterDrainProfit.caqti in + Caqti_type.custom + ~encode:(fun + DrainProfitsMessage. + { + wtid; + debit_account_section; + credit_payto_uri; + date; + amount; + master_sig; + } + -> + Ok + ( wtid, + debit_account_section, + credit_payto_uri, + date, + amount, + master_sig )) + ~decode:(fun + ( wtid, + debit_account_section, + credit_payto_uri, + date, + amount, + master_sig ) + -> + Ok + { + wtid; + debit_account_section; + credit_payto_uri; + date; + amount; + master_sig; + }) + Caqti_type.(t6 b32 string string time amount master_sig) + include Caqti_request.Infix end @@ -501,24 +542,11 @@ let disable_wire = let insert_drain_profit = let insert_drain_profit = - let master_sig = Bin_sig.MasterDrainProfit.caqti in - Caqti_type.(t6 string string payto_uri time amount master_sig ->. unit) + Caqti_type.(drain_profit_message ->. unit) "INSERT INTO profit_drains (wtid, account_section, payto_uri, \ trigger_date, amount, master_sig) VALUES ($1, $2, $3, $4, ($5,$6), $7)" in - fun (module Conn : CONN) - DrainProfitsMessage. - { - debit_account_section; - credit_payto_uri; - wtid; - master_sig; - date; - amount; - } - -> - Conn.exec insert_drain_profit - (wtid, debit_account_section, credit_payto_uri, date, amount, master_sig) + fun (module Conn : CONN) v -> Conn.exec insert_drain_profit v let insert_aml_officer = let exchange_do_insert_aml_officer =