Line data Source code
1 : /*
2 : This file is part of TALER
3 : Copyright (C) 2022, 2023 Taler Systems SA
4 :
5 : TALER is free software; you can redistribute it and/or modify it under the
6 : terms of the GNU General Public License as published by the Free Software
7 : Foundation; either version 3, or (at your option) any later version.
8 :
9 : TALER is distributed in the hope that it will be useful, but WITHOUT ANY
10 : WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
11 : A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12 :
13 : You should have received a copy of the GNU General Public License along with
14 : TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/>
15 : */
16 : /**
17 : * @file pg_insert_deposit_confirmation.c
18 : * @brief Low-level (statement-level) Postgres database access for the exchange
19 : * @author Christian Grothoff
20 : */
21 : #include "platform.h"
22 : #include "taler_error_codes.h"
23 : #include "taler_dbevents.h"
24 : #include "taler_pq_lib.h"
25 : #include "pg_insert_deposit_confirmation.h"
26 : #include "pg_helper.h"
27 :
28 :
29 : enum GNUNET_DB_QueryStatus
30 10 : TAH_PG_insert_deposit_confirmation (
31 : void *cls,
32 : const struct TALER_AUDITORDB_DepositConfirmation *dc)
33 : {
34 10 : struct PostgresClosure *pg = cls;
35 10 : struct GNUNET_PQ_QueryParam params[] = {
36 10 : GNUNET_PQ_query_param_auto_from_type (&dc->h_contract_terms),
37 10 : GNUNET_PQ_query_param_auto_from_type (&dc->h_policy),
38 10 : GNUNET_PQ_query_param_auto_from_type (&dc->h_wire),
39 10 : GNUNET_PQ_query_param_timestamp (&dc->exchange_timestamp),
40 10 : GNUNET_PQ_query_param_timestamp (&dc->wire_deadline),
41 10 : GNUNET_PQ_query_param_timestamp (&dc->refund_deadline),
42 10 : TALER_PQ_query_param_amount (pg->conn,
43 : &dc->total_without_fee),
44 10 : GNUNET_PQ_query_param_array_auto_from_type (dc->num_coins,
45 : dc->coin_pubs,
46 : pg->conn),
47 10 : GNUNET_PQ_query_param_array_auto_from_type (dc->num_coins,
48 : dc->coin_sigs,
49 : pg->conn),
50 10 : GNUNET_PQ_query_param_auto_from_type (&dc->merchant),
51 10 : GNUNET_PQ_query_param_auto_from_type (&dc->exchange_sig),
52 10 : GNUNET_PQ_query_param_auto_from_type (&dc->exchange_pub),
53 10 : GNUNET_PQ_query_param_auto_from_type (&dc->master_sig),
54 : GNUNET_PQ_query_param_end
55 : };
56 : enum GNUNET_DB_QueryStatus qs;
57 :
58 10 : PREPARE (pg,
59 : "auditor_deposit_confirmation_insert",
60 : "INSERT INTO auditor_deposit_confirmations "
61 : "(h_contract_terms"
62 : ",h_policy"
63 : ",h_wire"
64 : ",exchange_timestamp"
65 : ",wire_deadline"
66 : ",refund_deadline"
67 : ",total_without_fee"
68 : ",coin_pubs"
69 : ",coin_sigs"
70 : ",merchant_pub"
71 : ",exchange_sig"
72 : ",exchange_pub"
73 : ",master_sig" /* master_sig could be normalized... */
74 : ") VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13);");
75 10 : qs = GNUNET_PQ_eval_prepared_non_select (pg->conn,
76 : "auditor_deposit_confirmation_insert",
77 : params);
78 10 : GNUNET_PQ_cleanup_query_params_closures (params);
79 10 : return qs;
80 : }
|