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:
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;
}