Line data Source code
1 : /*
2 : This file is part of TALER
3 : Copyright (C) 2025 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 src/backenddb/insert_order_token_blinded_sig.c
18 : * @brief implementation of insert_order_token_blinded_sig() for Postgres
19 : * @author Bohdan Potuzhnyi
20 : */
21 : #include "platform.h"
22 : #include "merchant-database/insert_order_token_blinded_sig.h"
23 : #include "helper.h"
24 :
25 :
26 : /* FIXME-Optimize: this smells like it should support the use of arrays... */
27 : enum GNUNET_DB_QueryStatus
28 5 : TALER_MERCHANTDB_insert_order_token_blinded_sig (
29 : struct TALER_MERCHANTDB_PostgresContext *pg,
30 : const char *order_id,
31 : uint32_t i,
32 : const struct GNUNET_HashCode *hash,
33 : const struct GNUNET_CRYPTO_BlindedSignature *blind_sig)
34 : {
35 5 : struct GNUNET_PQ_QueryParam params[] = {
36 5 : GNUNET_PQ_query_param_string (order_id),
37 5 : GNUNET_PQ_query_param_uint32 (&i),
38 5 : GNUNET_PQ_query_param_auto_from_type (hash),
39 5 : GNUNET_PQ_query_param_blinded_sig (blind_sig),
40 : GNUNET_PQ_query_param_end
41 : };
42 :
43 5 : GNUNET_assert (NULL != pg->current_merchant_id);
44 5 : TMH_PQ_prepare_anon (pg,
45 : "INSERT INTO merchant_order_token_blinded_sigs"
46 : " (order_serial"
47 : " ,token_index"
48 : " ,token_hash"
49 : " ,token_blinded_signature"
50 : ")"
51 : " SELECT order_serial, $2, $3, $4"
52 : " FROM merchant_contract_terms"
53 : " WHERE order_id = $1");
54 5 : return GNUNET_PQ_eval_prepared_non_select (pg->conn,
55 : "",
56 : params);
57 : }
|