+ partners

This commit is contained in:
swrup 2025-12-11 09:50:04 +01:00
parent 21371c7d50
commit 625c194fff
4 changed files with 73 additions and 2 deletions

View file

@ -191,3 +191,16 @@ let management_aml_officers req server _env =
Ok ""
in
respond_with_res res req
let management_partners_jsont = ExchangePartnerSetupRequest.jsont
let management_partners req server _env =
let open Management in
let db_conn = Vif.Server.device Devices.db_connection server in
let res =
let* v = Vif.Request.of_json req |> unwrap_err_msg in
let* () = verify_partner v in
let* () = update_partner ~db_conn v in
Ok ""
in
respond_with_res res req

View file

@ -494,4 +494,30 @@ let update_aml_officier ~db_conn v =
let+ _last_change = Pg.insert_aml_officer db_conn v |> unwrap_err_caqti in
()
(*[@@@ocaml.warning "-27"]*)
[@@@ocaml.warning "-27"]
let verify_partner
ExchangePartnerSetupRequest.
{
partner_base_url;
partner_pub;
wad_frequency;
master_sig;
start_date;
end_date;
wad_fee;
} =
let open Bin_sig.PartnerConfiguration in
verify ~key:Config.Exchange.master_public_key master_sig
{
partner_pub;
start_date;
end_date;
wad_frequency;
wad_fee;
h_url= Bin_type.Hash_64_cstr.hash partner_base_url;
}
let update_partner ~db_conn v =
let+ () = Pg.insert_partner db_conn v |> unwrap_err_caqti in
()

View file

@ -59,6 +59,8 @@ let routes =
post (v "management" / "drain") management_drain_jsont --> management_drain;
post (v "management" / "aml-officers") management_aml_officers_jsont
--> management_aml_officers;
post (v "management" / "partners") management_partners_jsont
--> management_partners;
]
let () =

View file

@ -450,3 +450,33 @@ let insert_aml_officer =
->
Conn.find exchange_do_insert_aml_officer
(officer_pub, master_sig, officer_name, is_active, read_only, change_date)
let insert_partner =
let insert_partner =
let master_sig = Bin_sig.PartnerConfiguration.caqti in
Caqti_type.(
t7 eddsa_pub time time time_span amount master_sig string ->. unit)
"INSERT INTO partners (partner_master_pub, start_date, end_date, \
wad_frequency, wad_fee, master_sig, partner_base_url) VALUES ($1, $2, \
$3, $4, ($5,$6), $7, $8) ON CONFLICT DO NOTHING"
in
fun (module Conn : CONN)
Api.ExchangePartnerSetupRequest.
{
partner_base_url;
partner_pub;
wad_frequency;
master_sig;
start_date;
end_date;
wad_fee;
}
->
Conn.exec insert_partner
( partner_pub,
start_date,
end_date,
wad_frequency,
wad_fee,
master_sig,
partner_base_url )