wip pg: left join to get revocations
This commit is contained in:
parent
6aba22aa41
commit
2caca96c3e
2 changed files with 23 additions and 19 deletions
36
src/pg.ml
36
src/pg.ml
|
|
@ -39,12 +39,13 @@ let preflight =
|
|||
in
|
||||
fun (module Conn : CONN) -> Syntax.list_iter (fun p -> Conn.exec p ()) l
|
||||
|
||||
(* TODO revocation master_sig *)
|
||||
let find_signkey =
|
||||
let find_signkey =
|
||||
Caqti_type.(eddsa_pub ->? signkey_data)
|
||||
"SELECT exchange_pub, valid_from, expire_sign, expire_legal, master_sig, \
|
||||
NULL FROM exchange_sign_keys WHERE exchange_pub=$1"
|
||||
"SELECT esk.exchange_pub, esk.valid_from, esk.expire_sign, \
|
||||
esk.expire_legal, esk.master_sig, skr.master_sig FROM \
|
||||
exchange_sign_keys AS esk LEFT JOIN signkey_revocations AS skr ON \
|
||||
esk.esk_serial = skr.esk_serial WHERE esk.exchange_pub=$1"
|
||||
in
|
||||
fun (module Conn : CONN) (exchange_pub : EddsaPublicKey.t) ->
|
||||
Conn.find_opt find_signkey exchange_pub
|
||||
|
|
@ -52,10 +53,10 @@ let find_signkey =
|
|||
let get_active_signkeys =
|
||||
let get_active_signkeys =
|
||||
Caqti_type.(time ->* signkey_data)
|
||||
"SELECT exchange_pub, valid_from, expire_sign, expire_legal, master_sig, \
|
||||
NULL FROM exchange_sign_keys esk WHERE expire_sign > $1 AND NOT EXISTS \
|
||||
(SELECT esk_serial FROM signkey_revocations skr WHERE esk.esk_serial = \
|
||||
skr.esk_serial)"
|
||||
"SELECT esk.exchange_pub, esk.valid_from, esk.expire_sign, \
|
||||
esk.expire_legal, esk.master_sig, NULL FROM exchange_sign_keys esk \
|
||||
WHERE expire_sign > $1 AND NOT EXISTS (SELECT esk_serial FROM \
|
||||
signkey_revocations AS skr WHERE esk.esk_serial = skr.esk_serial)"
|
||||
in
|
||||
fun (module Conn : CONN) ->
|
||||
let now = Ptime_clock.now () |> Option.some in
|
||||
|
|
@ -70,24 +71,27 @@ let insert_signkey =
|
|||
in
|
||||
fun (module Conn : CONN) v -> Conn.exec insert_signkey v
|
||||
|
||||
(* TODO revocation master_sig *)
|
||||
let find_denom =
|
||||
let find_denom =
|
||||
Caqti_type.(denomination_hash ->? denom_data)
|
||||
"SELECT denom_pub, (coin).*, valid_from, expire_withdraw, \
|
||||
expire_deposit, expire_legal, (fee_withdraw).*, (fee_deposit).*, \
|
||||
(fee_refresh).*, (fee_refund).*, age_mask, denom_pub_hash, master_sig, \
|
||||
NULL FROM denominations WHERE denom_pub_hash=$1"
|
||||
"SELECT dn.denom_pub, (dn.coin).*, dn.valid_from, dn.expire_withdraw, \
|
||||
dn.expire_deposit, dn.expire_legal, (dn.fee_withdraw).*, \
|
||||
(dn.fee_deposit).*, (dn.fee_refresh).*, (dn.fee_refund).*, dn.age_mask, \
|
||||
dn.denom_pub_hash, dn.master_sig, dnr.master_sig FROM denominations AS \
|
||||
dn LEFT JOIN denomination_revocations AS dnr ON dn.denominations_serial \
|
||||
= dnr.denominations_serial WHERE dn.denom_pub_hash=$1"
|
||||
in
|
||||
fun (module Conn : CONN) h_denom_pub -> Conn.find_opt find_denom h_denom_pub
|
||||
|
||||
let get_denominations =
|
||||
let get_denominations =
|
||||
Caqti_type.(unit ->* denom_data)
|
||||
"SELECT denom_pub, (coin).*, valid_from, expire_withdraw, \
|
||||
expire_deposit, expire_legal, (fee_withdraw).*, (fee_deposit).*, \
|
||||
(fee_refresh).*, (fee_refund).*, age_mask, denom_pub_hash, master_sig, \
|
||||
NULL FROM denominations"
|
||||
"SELECT dn.denom_pub, (dn.coin).*, dn.valid_from, dn.expire_withdraw, \
|
||||
dn.expire_deposit, dn.expire_legal, (dn.fee_withdraw).*, \
|
||||
(dn.fee_deposit).*, (dn.fee_refresh).*, (dn.fee_refund).*, dn.age_mask, \
|
||||
dn.denom_pub_hash, dn.master_sig, dnr.master_sig FROM denominations AS \
|
||||
dn LEFT JOIN denomination_revocations AS dnr ON dn.denominations_serial \
|
||||
= dnr.denominations_serial"
|
||||
in
|
||||
fun (module Conn : CONN) -> Conn.collect_list get_denominations ()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue