-implement sketch for pg_do_reserve_open.c

This commit is contained in:
Christian Grothoff 2022-10-03 19:34:11 +02:00
parent 2dbf8cefe0
commit 4a487b179c
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
6 changed files with 24 additions and 18 deletions

@ -1 +1 @@
Subproject commit d402af78f6d360841db53baa46dddae13590ec33 Subproject commit 57d96e8e123df90c804a821874fc6cb88671ab75

View File

@ -69,6 +69,7 @@ endif
libtaler_plugin_exchangedb_postgres_la_SOURCES = \ libtaler_plugin_exchangedb_postgres_la_SOURCES = \
plugin_exchangedb_postgres.c pg_helper.h \ plugin_exchangedb_postgres.c pg_helper.h \
pg_do_reserve_open.c pg_do_reserve_open.h \
pg_insert_close_request.c pg_insert_close_request.h \ pg_insert_close_request.c pg_insert_close_request.h \
pg_insert_reserve_open_deposit.c pg_insert_reserve_open_deposit.h \ pg_insert_reserve_open_deposit.c pg_insert_reserve_open_deposit.h \
pg_iterate_kyc_reference.c pg_iterate_kyc_reference.h \ pg_iterate_kyc_reference.c pg_iterate_kyc_reference.h \

View File

@ -37,32 +37,37 @@ TEH_PG_do_reserve_open (
struct GNUNET_TIME_Timestamp now, struct GNUNET_TIME_Timestamp now,
const struct TALER_Amount *open_fee, const struct TALER_Amount *open_fee,
struct TALER_Amount *open_cost, struct TALER_Amount *open_cost,
const struct GNUNET_TIME_Timestamp *final_expiration) struct GNUNET_TIME_Timestamp *final_expiration)
{ {
struct PostgresClosure *pg = cls; struct PostgresClosure *pg = cls;
// FIXME: everything from here is cut&paste
struct GNUNET_PQ_QueryParam params[] = { struct GNUNET_PQ_QueryParam params[] = {
GNUNET_PQ_query_param_auto_from_type (&cpi->coin_pub), GNUNET_PQ_query_param_auto_from_type (reserve_pub),
GNUNET_PQ_query_param_uint64 (&known_coin_id), TALER_PQ_query_param_amount (total_paid),
GNUNET_PQ_query_param_auto_from_type (coin_sig), GNUNET_PQ_query_param_uint32 (&min_purse_limit),
GNUNET_PQ_query_param_auto_from_type (reserve_sig), GNUNET_PQ_query_param_auto_from_type (reserve_sig),
TALER_PQ_query_param_amount (coin_total), GNUNET_PQ_query_param_timestamp (&desired_expiration),
GNUNET_PQ_query_param_timestamp (&now),
TALER_PQ_query_param_amount (open_fee),
GNUNET_PQ_query_param_end GNUNET_PQ_query_param_end
}; };
struct GNUNET_PQ_ResultSpec rs[] = { struct GNUNET_PQ_ResultSpec rs[] = {
GNUNET_PQ_result_spec_bool ("insufficient_funds", TALER_PQ_RESULT_SPEC_AMOUNT ("open_cost",
insufficient_funds), open_cost),
GNUNET_PQ_result_spec_timestamp ("final_expiration",
final_expiration),
GNUNET_PQ_result_spec_end GNUNET_PQ_result_spec_end
}; };
PREPARE (pg, PREPARE (pg,
"insert_reserve_open_deposit", "do_reserve_open",
"SELECT " "SELECT "
" insufficient_funds" " open_cost_val"
" FROM exchange_do_reserve_open_deposit" ",open_cost_frac"
" ($1,$2,$3,$4,$5,$6);"); ",final_expiration"
" FROM exchange_do_reserve_open"
" ($1,$2,$3,$4,$5,$6,$7,$8,$9);");
return GNUNET_PQ_eval_prepared_singleton_select (pg->conn, return GNUNET_PQ_eval_prepared_singleton_select (pg->conn,
"insert_reserve_open_deposit", "do_reserve_open",
params, params,
rs); rs);
} }

View File

@ -49,7 +49,7 @@ TEH_PG_do_reserve_open (
struct GNUNET_TIME_Timestamp now, struct GNUNET_TIME_Timestamp now,
const struct TALER_Amount *open_fee, const struct TALER_Amount *open_fee,
struct TALER_Amount *open_cost, struct TALER_Amount *open_cost,
const struct GNUNET_TIME_Timestamp *final_expiration); struct GNUNET_TIME_Timestamp *final_expiration);
#endif #endif

View File

@ -22,7 +22,7 @@
#include "taler_error_codes.h" #include "taler_error_codes.h"
#include "taler_dbevents.h" #include "taler_dbevents.h"
#include "taler_pq_lib.h" #include "taler_pq_lib.h"
#include "pg_insert_reserve_open_deposit.h" #include "pg_select_reserve_close_info.h"
#include "pg_helper.h" #include "pg_helper.h"

View File

@ -4108,7 +4108,7 @@ struct TALER_EXCHANGEDB_Plugin
struct GNUNET_TIME_Timestamp now, struct GNUNET_TIME_Timestamp now,
const struct TALER_Amount *open_fee, const struct TALER_Amount *open_fee,
struct TALER_Amount *open_cost, struct TALER_Amount *open_cost,
const struct GNUNET_TIME_Timestamp *final_expiration); struct GNUNET_TIME_Timestamp *final_expiration);
/** /**