donau

Donation authority for GNU Taler (experimental)
Log | Files | Refs | Submodules | README | LICENSE

commit 31f4bab50ffbafdacda578a0a718294b66d34a91
parent 701092b0f9208e7656b15da07dcc7f58f2cb5456
Author: Matyja Lukas Adam <lukas.matyja@students.bfh.ch>
Date:   Mon, 15 Apr 2024 21:17:47 +0200

[donaudb] some changes

Diffstat:
Msrc/donaudb/0002-donau_receipts_issued.sql | 8++++++--
Msrc/donaudb/pg_insert_issued_receipt.c | 38++++++++++++++++++++++----------------
2 files changed, 28 insertions(+), 18 deletions(-)

diff --git a/src/donaudb/0002-donau_receipts_issued.sql b/src/donaudb/0002-donau_receipts_issued.sql @@ -29,14 +29,15 @@ COMMENT ON COLUMN receipts_issued.receipt_hash IS 'Hash value over all the blinded donation receipt received plus the hash of the donation units public key.'; -CREATE FUNCTION transaction_save_issue_receipts_request( +CREATE OR REPLACE FUNCTION transaction_save_issue_receipts_request( IN charity_id BIGINT -- charity id which made the issue receitps request --,IN blinded_sig BYTEA[] -- blinded signatures ,IN receipt_hash BYTEA -- hash over all budi key pairs (primary key) ,IN amount taler_amount -- total amount of the requested receipts ,IN new_total_amount taler_amount -- new total amount of a charity + ,OUT out_receipt_id BOOLEAN ) -RETURNS VOID +--RETURNS VOID LANGUAGE plpgsql AS $$ BEGIN @@ -45,6 +46,9 @@ UPDATE charity SET receipts_to_date = new_total_amount; -- Insert into the table receipts_issued INSERT INTO receipts_issued (/*blinded_sig,*/ charity_id, receipt_hash, amount) VALUES (/*'blinded_sig',*/ 'charity_id', 'receipts_hash', 'amount'); -- Commit the transaction if everything is successful +--SELECT receipt_id into out_receipt_id FROM receipt_id FROM receipts_issued; +out_receipt_id=TRUE; + END $$; COMMIT; diff --git a/src/donaudb/pg_insert_issued_receipt.c b/src/donaudb/pg_insert_issued_receipt.c @@ -30,23 +30,29 @@ #include "donau_pq_lib.h" enum GNUNET_DB_QueryStatus -DH_PG_insert_issued_receipt ( - void *cls, - const size_t num_blinded_sig, - const struct DONAU_BlindedDonationUnitSignature signatures[num_blinded_sig], - const uint64_t charity_id, - const struct DONAU_DonationReceiptHashP *h_receipt, - const struct TALER_Amount *amount_receipts_request, - const struct TALER_Amount *charity_new_amount) +DH_PG_insert_issued_receipt (void *cls, + const size_t num_blinded_sig, + const struct + DONAU_BlindedDonationUnitSignature signatures[ + num_blinded_sig], + const uint64_t charity_id, + const struct DONAU_DonationReceiptHashP *h_receipt, + const struct TALER_Amount *amount_receipts_request, + const struct TALER_Amount *charity_new_amount) { struct PostgresClosure *pc = cls; + uint64_t *receipt_id = 0; + struct GNUNET_PQ_ResultSpec rs[] = { + GNUNET_PQ_result_spec_uint64("receipt_id", receipt_id), + GNUNET_PQ_result_spec_end + }; + struct GNUNET_PQ_QueryParam params[] = { GNUNET_PQ_query_param_uint64 (&charity_id), // DONAU_PQ_query_param_array_blinded_donation_unit_sig (num_blinded_sig, // signatures, pc->conn), - GNUNET_PQ_query_param_fixed_size (&h_receipt->hash, sizeof(struct - DONAU_DonationReceiptHashP)), + GNUNET_PQ_query_param_auto_from_type (&h_receipt->hash), TALER_PQ_query_param_amount_with_currency (pc->conn, amount_receipts_request), TALER_PQ_query_param_amount_with_currency (pc->conn, charity_new_amount), @@ -57,14 +63,14 @@ DH_PG_insert_issued_receipt ( PREPARE (pc, "insert_issued_receipts_request", - "SELECT" - " transaction_save_issue_receipts_request" - " ($1,$2,$3,$4);"); + "SELECT " + " out_receipt_id AS receipt_id" + " FROM transaction_save_issue_receipts_request" + "($1,$2,$3,$4);"); - qs = GNUNET_PQ_eval_prepared_multi_select (pc->conn, + qs = GNUNET_PQ_eval_prepared_singleton_select (pc->conn, "insert_issued_receipts_request", - params, - NULL, NULL); + params, rs); GNUNET_PQ_cleanup_query_params_closures (params); return qs; }