+ 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 ""
|
Ok ""
|
||||||
in
|
in
|
||||||
respond_with_res res req
|
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
|
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") management_wire_jsont --> management_wire;
|
||||||
post (v "management" / "wire" / "disable") management_wire_disable_jsont
|
post (v "management" / "wire" / "disable") management_wire_disable_jsont
|
||||||
--> management_wire_disable;
|
--> management_wire_disable;
|
||||||
|
post (v "management" / "drain") management_drain_jsont --> management_drain;
|
||||||
]
|
]
|
||||||
|
|
||||||
let () =
|
let () =
|
||||||
|
|
|
||||||
25
src/pg.ml
25
src/pg.ml
|
|
@ -5,7 +5,9 @@
|
||||||
need to add boilerplate in each query for amounts
|
need to add boilerplate in each query for amounts
|
||||||
|
|
||||||
GNU Taler db-events?
|
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
|
module type CONN = Caqti_miou.CONNECTION
|
||||||
|
|
||||||
|
|
@ -406,3 +408,24 @@ let disable_wire =
|
||||||
in
|
in
|
||||||
fun (module Conn : CONN) ~payto_uri ~validity_end ->
|
fun (module Conn : CONN) ~payto_uri ~validity_end ->
|
||||||
Conn.exec disable_wire (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