Line data Source code
1 : /*
2 : This file is part of TALER
3 : Copyright (C) 2022 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_template.c
18 : * @brief Implementation of the insert_template function for Postgres
19 : * @author Christian Grothoff
20 : */
21 : #include "platform.h"
22 : #include <taler/taler_pq_lib.h>
23 : #include "merchant-database/insert_template.h"
24 : #include "helper.h"
25 :
26 :
27 : enum GNUNET_DB_QueryStatus
28 29 : TALER_MERCHANTDB_insert_template (
29 : struct TALER_MERCHANTDB_PostgresContext *pg,
30 : const char *instance_id,
31 : const char *template_id,
32 : uint64_t otp_serial_id,
33 : const struct TALER_MERCHANTDB_TemplateDetails *td)
34 : {
35 29 : struct GNUNET_PQ_QueryParam params[] = {
36 29 : GNUNET_PQ_query_param_string (template_id),
37 29 : GNUNET_PQ_query_param_string (td->template_description),
38 29 : (0 == otp_serial_id)
39 27 : ? GNUNET_PQ_query_param_null ()
40 29 : : GNUNET_PQ_query_param_uint64 (&otp_serial_id),
41 29 : TALER_PQ_query_param_json (td->template_contract),
42 29 : (NULL == td->editable_defaults)
43 28 : ? GNUNET_PQ_query_param_null ()
44 29 : : TALER_PQ_query_param_json (td->editable_defaults),
45 : GNUNET_PQ_query_param_end
46 : };
47 : enum GNUNET_DB_QueryStatus qs;
48 :
49 29 : GNUNET_assert (NULL != pg->current_merchant_id);
50 29 : GNUNET_assert (0 == strcmp (instance_id,
51 : pg->current_merchant_id));
52 29 : TMH_PQ_prepare_anon (pg,
53 : "INSERT INTO merchant_template"
54 : "(template_id"
55 : ",template_description"
56 : ",otp_device_id"
57 : ",template_contract"
58 : ",editable_defaults"
59 : ")"
60 : " VALUES"
61 : " ($1, $2, $3, $4::TEXT::JSONB, $5::TEXT::JSONB)");
62 29 : qs = GNUNET_PQ_eval_prepared_non_select (pg->conn,
63 : "",
64 : params);
65 29 : GNUNET_PQ_cleanup_query_params_closures (params);
66 29 : return qs;
67 : }
|