+ drain
This commit is contained in:
parent
201382ee88
commit
b9f9547316
4 changed files with 64 additions and 2 deletions
|
|
@ -165,3 +165,16 @@ let management_wire_disable req server _env =
|
|||
Ok ""
|
||||
in
|
||||
respond_with_res res req
|
||||
|
||||
let management_drain_jsont = DrainProfitsMessage.jsont
|
||||
|
||||
let management_drain 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_drain v in
|
||||
let* () = update_drain ~db_conn v in
|
||||
Ok ""
|
||||
in
|
||||
respond_with_res res req
|
||||
|
|
|
|||
|
|
@ -445,4 +445,29 @@ let update_wire_disable ~db_conn
|
|||
in
|
||||
()
|
||||
|
||||
(*[@@@ocaml.warning "-27"]*)
|
||||
[@@@ocaml.warning "-27"]
|
||||
|
||||
let verify_drain
|
||||
DrainProfitsMessage.
|
||||
{
|
||||
debit_account_section;
|
||||
credit_payto_uri;
|
||||
wtid;
|
||||
master_sig;
|
||||
date;
|
||||
amount;
|
||||
} =
|
||||
let open Bin_sig.MasterDrainProfit in
|
||||
let open Bin_type in
|
||||
verify ~key:Config.Exchange.master_public_key master_sig
|
||||
{
|
||||
wtid;
|
||||
date;
|
||||
amount;
|
||||
h_section= Hash_64_cstr.hash debit_account_section;
|
||||
h_payto= FullPaytoHash.hash credit_payto_uri;
|
||||
}
|
||||
|
||||
let update_drain ~db_conn v =
|
||||
let+ () = Pg.insert_drain_profit db_conn v |> unwrap_err_caqti in
|
||||
()
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ let routes =
|
|||
post (v "management" / "wire") management_wire_jsont --> management_wire;
|
||||
post (v "management" / "wire" / "disable") management_wire_disable_jsont
|
||||
--> management_wire_disable;
|
||||
post (v "management" / "drain") management_drain_jsont --> management_drain;
|
||||
]
|
||||
|
||||
let () =
|
||||
|
|
|
|||
25
src/pg.ml
25
src/pg.ml
|
|
@ -5,7 +5,9 @@
|
|||
need to add boilerplate in each query for amounts
|
||||
|
||||
GNU Taler db-events?
|
||||
it seems caqti/pgx does not support it *)
|
||||
it seems caqti/pgx does not support it
|
||||
|
||||
transaction *)
|
||||
|
||||
module type CONN = Caqti_miou.CONNECTION
|
||||
|
||||
|
|
@ -406,3 +408,24 @@ let disable_wire =
|
|||
in
|
||||
fun (module Conn : CONN) ~payto_uri ~validity_end ->
|
||||
Conn.exec disable_wire (payto_uri, validity_end)
|
||||
|
||||
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)
|
||||
"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)
|
||||
Api.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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue