-towards p2p auditor sync implementation: SQL still missing
This commit is contained in:
parent
d55b093de8
commit
300194f42a
@ -1186,7 +1186,7 @@ BEGIN
|
|||||||
|
|
||||||
table_name = concat_ws('_', table_name, shard_suffix);
|
table_name = concat_ws('_', table_name, shard_suffix);
|
||||||
|
|
||||||
-- FIXME: change to materialized index by marge_pub!
|
-- FIXME: change to materialized index by merge_pub!
|
||||||
EXECUTE FORMAT (
|
EXECUTE FORMAT (
|
||||||
'CREATE INDEX IF NOT EXISTS ' || table_name || '_merge_pub '
|
'CREATE INDEX IF NOT EXISTS ' || table_name || '_merge_pub '
|
||||||
'ON ' || table_name || ' '
|
'ON ' || table_name || ' '
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
This file is part of GNUnet
|
This file is part of GNUnet
|
||||||
Copyright (C) 2020, 2021 Taler Systems SA
|
Copyright (C) 2020, 2021, 2022 Taler Systems SA
|
||||||
|
|
||||||
GNUnet is free software: you can redistribute it and/or modify it
|
GNUnet is free software: you can redistribute it and/or modify it
|
||||||
under the terms of the GNU Affero General Public License as published
|
under the terms of the GNU Affero General Public License as published
|
||||||
@ -150,7 +150,6 @@ irbt_cb_table_reserves (struct PostgresClosure *pg,
|
|||||||
struct GNUNET_PQ_QueryParam params[] = {
|
struct GNUNET_PQ_QueryParam params[] = {
|
||||||
GNUNET_PQ_query_param_uint64 (&td->serial),
|
GNUNET_PQ_query_param_uint64 (&td->serial),
|
||||||
GNUNET_PQ_query_param_auto_from_type (&td->details.reserves.reserve_pub),
|
GNUNET_PQ_query_param_auto_from_type (&td->details.reserves.reserve_pub),
|
||||||
TALER_PQ_query_param_amount (&td->details.reserves.current_balance),
|
|
||||||
GNUNET_PQ_query_param_timestamp (&td->details.reserves.expiration_date),
|
GNUNET_PQ_query_param_timestamp (&td->details.reserves.expiration_date),
|
||||||
GNUNET_PQ_query_param_timestamp (&td->details.reserves.gc_date),
|
GNUNET_PQ_query_param_timestamp (&td->details.reserves.gc_date),
|
||||||
GNUNET_PQ_query_param_end
|
GNUNET_PQ_query_param_end
|
||||||
@ -383,8 +382,6 @@ irbt_cb_table_known_coins (struct PostgresClosure *pg,
|
|||||||
&td->details.known_coins.denom_sig),
|
&td->details.known_coins.denom_sig),
|
||||||
GNUNET_PQ_query_param_uint64 (
|
GNUNET_PQ_query_param_uint64 (
|
||||||
&td->details.known_coins.denominations_serial),
|
&td->details.known_coins.denominations_serial),
|
||||||
TALER_PQ_query_param_amount (
|
|
||||||
&td->details.known_coins.remaining),
|
|
||||||
GNUNET_PQ_query_param_end
|
GNUNET_PQ_query_param_end
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -526,7 +523,6 @@ irbt_cb_table_deposits (struct PostgresClosure *pg,
|
|||||||
GNUNET_PQ_query_param_auto_from_type (&td->details.deposits.wire_salt),
|
GNUNET_PQ_query_param_auto_from_type (&td->details.deposits.wire_salt),
|
||||||
GNUNET_PQ_query_param_auto_from_type (
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
&td->details.deposits.wire_target_h_payto),
|
&td->details.deposits.wire_target_h_payto),
|
||||||
GNUNET_PQ_query_param_bool (td->details.deposits.done),
|
|
||||||
GNUNET_PQ_query_param_bool (td->details.deposits.extension_blocked),
|
GNUNET_PQ_query_param_bool (td->details.deposits.extension_blocked),
|
||||||
0 == td->details.deposits.extension_details_serial_id
|
0 == td->details.deposits.extension_details_serial_id
|
||||||
? GNUNET_PQ_query_param_null ()
|
? GNUNET_PQ_query_param_null ()
|
||||||
@ -801,4 +797,301 @@ irbt_cb_table_extension_details (struct PostgresClosure *pg,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with purse_requests records to insert into table.
|
||||||
|
*
|
||||||
|
* @param pg plugin context
|
||||||
|
* @param td record to insert
|
||||||
|
*/
|
||||||
|
static enum GNUNET_DB_QueryStatus
|
||||||
|
irbt_cb_table_purse_requests (struct PostgresClosure *pg,
|
||||||
|
const struct TALER_EXCHANGEDB_TableData *td)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_QueryParam params[] = {
|
||||||
|
GNUNET_PQ_query_param_uint64 (&td->serial),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.purse_requests.merge_pub),
|
||||||
|
GNUNET_PQ_query_param_timestamp (
|
||||||
|
&td->details.purse_requests.purse_creation),
|
||||||
|
GNUNET_PQ_query_param_timestamp (
|
||||||
|
&td->details.purse_requests.purse_expiration),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.purse_requests.h_contract_terms),
|
||||||
|
GNUNET_PQ_query_param_uint32 (&td->details.purse_requests.age_limit),
|
||||||
|
GNUNET_PQ_query_param_uint32 (&td->details.purse_requests.flags),
|
||||||
|
TALER_PQ_query_param_amount (&td->details.purse_requests.amount_with_fee),
|
||||||
|
TALER_PQ_query_param_amount (&td->details.purse_requests.purse_fee),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.purse_requests.purse_sig),
|
||||||
|
GNUNET_PQ_query_param_end
|
||||||
|
};
|
||||||
|
|
||||||
|
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
|
||||||
|
"insert_into_table_purse_requests",
|
||||||
|
params);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with purse_merges records to insert into table.
|
||||||
|
*
|
||||||
|
* @param pg plugin context
|
||||||
|
* @param td record to insert
|
||||||
|
*/
|
||||||
|
static enum GNUNET_DB_QueryStatus
|
||||||
|
irbt_cb_table_purse_merges (struct PostgresClosure *pg,
|
||||||
|
const struct TALER_EXCHANGEDB_TableData *td)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_QueryParam params[] = {
|
||||||
|
GNUNET_PQ_query_param_uint64 (&td->serial),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.purse_merges.reserve_pub),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (&td->details.purse_merges.purse_pub),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (&td->details.purse_merges.merge_sig),
|
||||||
|
GNUNET_PQ_query_param_timestamp (&td->details.purse_merges.merge_timestamp),
|
||||||
|
GNUNET_PQ_query_param_end
|
||||||
|
};
|
||||||
|
|
||||||
|
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
|
||||||
|
"insert_into_table_purse_merges",
|
||||||
|
params);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with purse_deposits records to insert into table.
|
||||||
|
*
|
||||||
|
* @param pg plugin context
|
||||||
|
* @param td record to insert
|
||||||
|
*/
|
||||||
|
static enum GNUNET_DB_QueryStatus
|
||||||
|
irbt_cb_table_purse_deposits (struct PostgresClosure *pg,
|
||||||
|
const struct TALER_EXCHANGEDB_TableData *td)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_QueryParam params[] = {
|
||||||
|
GNUNET_PQ_query_param_uint64 (&td->serial),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.purse_deposits.purse_pub),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (&td->details.purse_deposits.coin_pub),
|
||||||
|
TALER_PQ_query_param_amount (&td->details.purse_deposits.amount_with_fee),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (&td->details.purse_deposits.coin_sig),
|
||||||
|
GNUNET_PQ_query_param_end
|
||||||
|
};
|
||||||
|
|
||||||
|
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
|
||||||
|
"insert_into_table_purse_deposits",
|
||||||
|
params);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with account_mergers records to insert into table.
|
||||||
|
*
|
||||||
|
* @param pg plugin context
|
||||||
|
* @param td record to insert
|
||||||
|
*/
|
||||||
|
static enum GNUNET_DB_QueryStatus
|
||||||
|
irbt_cb_table_account_mergers (struct PostgresClosure *pg,
|
||||||
|
const struct TALER_EXCHANGEDB_TableData *td)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_QueryParam params[] = {
|
||||||
|
GNUNET_PQ_query_param_uint64 (&td->serial),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.account_merges.reserve_pub),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.account_merges.reserve_sig),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.account_merges.purse_pub),
|
||||||
|
GNUNET_PQ_query_param_end
|
||||||
|
};
|
||||||
|
|
||||||
|
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
|
||||||
|
"insert_into_table_account_mergers",
|
||||||
|
params);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with history_requests records to insert into table.
|
||||||
|
*
|
||||||
|
* @param pg plugin context
|
||||||
|
* @param td record to insert
|
||||||
|
*/
|
||||||
|
static enum GNUNET_DB_QueryStatus
|
||||||
|
irbt_cb_table_history_requests (struct PostgresClosure *pg,
|
||||||
|
const struct TALER_EXCHANGEDB_TableData *td)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_QueryParam params[] = {
|
||||||
|
GNUNET_PQ_query_param_uint64 (&td->serial),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.history_requests.reserve_pub),
|
||||||
|
GNUNET_PQ_query_param_timestamp (
|
||||||
|
&td->details.history_requests.request_timestamp),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.history_requests.reserve_sig),
|
||||||
|
GNUNET_PQ_query_param_end
|
||||||
|
};
|
||||||
|
|
||||||
|
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
|
||||||
|
"insert_into_table_history_requests",
|
||||||
|
params);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with close_requests records to insert into table.
|
||||||
|
*
|
||||||
|
* @param pg plugin context
|
||||||
|
* @param td record to insert
|
||||||
|
*/
|
||||||
|
static enum GNUNET_DB_QueryStatus
|
||||||
|
irbt_cb_table_close_requests (struct PostgresClosure *pg,
|
||||||
|
const struct TALER_EXCHANGEDB_TableData *td)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_QueryParam params[] = {
|
||||||
|
GNUNET_PQ_query_param_uint64 (&td->serial),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.close_requests.reserve_pub),
|
||||||
|
GNUNET_PQ_query_param_timestamp (
|
||||||
|
&td->details.close_requests.close_timestamp),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.close_requests.reserve_sig),
|
||||||
|
GNUNET_PQ_query_param_end
|
||||||
|
};
|
||||||
|
|
||||||
|
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
|
||||||
|
"insert_into_table_close_requests",
|
||||||
|
params);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with wads_out records to insert into table.
|
||||||
|
*
|
||||||
|
* @param pg plugin context
|
||||||
|
* @param td record to insert
|
||||||
|
*/
|
||||||
|
static enum GNUNET_DB_QueryStatus
|
||||||
|
irbt_cb_table_wads_out (struct PostgresClosure *pg,
|
||||||
|
const struct TALER_EXCHANGEDB_TableData *td)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_QueryParam params[] = {
|
||||||
|
GNUNET_PQ_query_param_uint64 (&td->serial),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (&td->details.wads_out.wad_id),
|
||||||
|
TALER_PQ_query_param_amount (&td->details.wads_out.amount),
|
||||||
|
GNUNET_PQ_query_param_timestamp (&td->details.wads_out.execution_time),
|
||||||
|
GNUNET_PQ_query_param_end
|
||||||
|
};
|
||||||
|
|
||||||
|
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
|
||||||
|
"insert_into_table_wads_out",
|
||||||
|
params);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with wads_out_entries records to insert into table.
|
||||||
|
*
|
||||||
|
* @param pg plugin context
|
||||||
|
* @param td record to insert
|
||||||
|
*/
|
||||||
|
static enum GNUNET_DB_QueryStatus
|
||||||
|
irbt_cb_table_wads_out_entries (struct PostgresClosure *pg,
|
||||||
|
const struct TALER_EXCHANGEDB_TableData *td)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_QueryParam params[] = {
|
||||||
|
GNUNET_PQ_query_param_uint64 (&td->serial),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.wads_out_entries.reserve_pub),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.wads_out_entries.purse_pub),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.wads_out_entries.h_contract),
|
||||||
|
GNUNET_PQ_query_param_timestamp (
|
||||||
|
&td->details.wads_out_entries.purse_expiration),
|
||||||
|
GNUNET_PQ_query_param_timestamp (
|
||||||
|
&td->details.wads_out_entries.merge_timestamp),
|
||||||
|
TALER_PQ_query_param_amount (
|
||||||
|
&td->details.wads_out_entries.amount_with_fee),
|
||||||
|
TALER_PQ_query_param_amount (
|
||||||
|
&td->details.wads_out_entries.deposit_fees),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.wads_out_entries.reserve_sig),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.wads_out_entries.purse_sig),
|
||||||
|
GNUNET_PQ_query_param_end
|
||||||
|
};
|
||||||
|
|
||||||
|
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
|
||||||
|
"insert_into_table_wads_out_entries",
|
||||||
|
params);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with wads_in records to insert into table.
|
||||||
|
*
|
||||||
|
* @param pg plugin context
|
||||||
|
* @param td record to insert
|
||||||
|
*/
|
||||||
|
static enum GNUNET_DB_QueryStatus
|
||||||
|
irbt_cb_table_wads_in (struct PostgresClosure *pg,
|
||||||
|
const struct TALER_EXCHANGEDB_TableData *td)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_QueryParam params[] = {
|
||||||
|
GNUNET_PQ_query_param_uint64 (&td->serial),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (&td->details.wads_in.wad_id),
|
||||||
|
GNUNET_PQ_query_param_string (td->details.wads_in.origin_exchange_url),
|
||||||
|
TALER_PQ_query_param_amount (&td->details.wads_in.amount),
|
||||||
|
GNUNET_PQ_query_param_timestamp (&td->details.wads_in.arrival_time),
|
||||||
|
GNUNET_PQ_query_param_end
|
||||||
|
};
|
||||||
|
|
||||||
|
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
|
||||||
|
"insert_into_table_wads_in",
|
||||||
|
params);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with wads_in_entries records to insert into table.
|
||||||
|
*
|
||||||
|
* @param pg plugin context
|
||||||
|
* @param td record to insert
|
||||||
|
*/
|
||||||
|
static enum GNUNET_DB_QueryStatus
|
||||||
|
irbt_cb_table_wads_in_entries (struct PostgresClosure *pg,
|
||||||
|
const struct TALER_EXCHANGEDB_TableData *td)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_QueryParam params[] = {
|
||||||
|
GNUNET_PQ_query_param_uint64 (&td->serial),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.wads_in_entries.reserve_pub),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.wads_in_entries.purse_pub),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.wads_in_entries.h_contract),
|
||||||
|
GNUNET_PQ_query_param_timestamp (
|
||||||
|
&td->details.wads_in_entries.purse_expiration),
|
||||||
|
GNUNET_PQ_query_param_timestamp (
|
||||||
|
&td->details.wads_in_entries.merge_timestamp),
|
||||||
|
TALER_PQ_query_param_amount (
|
||||||
|
&td->details.wads_in_entries.amount_with_fee),
|
||||||
|
TALER_PQ_query_param_amount (
|
||||||
|
&td->details.wads_in_entries.wad_fee),
|
||||||
|
TALER_PQ_query_param_amount (
|
||||||
|
&td->details.wads_in_entries.deposit_fees),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.wads_in_entries.reserve_sig),
|
||||||
|
GNUNET_PQ_query_param_auto_from_type (
|
||||||
|
&td->details.wads_in_entries.purse_sig),
|
||||||
|
GNUNET_PQ_query_param_end
|
||||||
|
};
|
||||||
|
|
||||||
|
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
|
||||||
|
"insert_into_table_wads_in_entries",
|
||||||
|
params);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* end of irbt_callbacks.c */
|
/* end of irbt_callbacks.c */
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
This file is part of GNUnet
|
This file is part of GNUnet
|
||||||
Copyright (C) 2020, 2021 Taler Systems SA
|
Copyright (C) 2020, 2021, 2022 Taler Systems SA
|
||||||
|
|
||||||
GNUnet is free software: you can redistribute it and/or modify it
|
GNUnet is free software: you can redistribute it and/or modify it
|
||||||
under the terms of the GNU Affero General Public License as published
|
under the terms of the GNU Affero General Public License as published
|
||||||
@ -219,7 +219,6 @@ lrbt_cb_table_reserves (void *cls,
|
|||||||
unsigned int num_results)
|
unsigned int num_results)
|
||||||
{
|
{
|
||||||
struct LookupRecordsByTableContext *ctx = cls;
|
struct LookupRecordsByTableContext *ctx = cls;
|
||||||
struct PostgresClosure *pg = ctx->pg;
|
|
||||||
struct TALER_EXCHANGEDB_TableData td = {
|
struct TALER_EXCHANGEDB_TableData td = {
|
||||||
.table = TALER_EXCHANGEDB_RT_RESERVES
|
.table = TALER_EXCHANGEDB_RT_RESERVES
|
||||||
};
|
};
|
||||||
@ -231,8 +230,6 @@ lrbt_cb_table_reserves (void *cls,
|
|||||||
&td.serial),
|
&td.serial),
|
||||||
GNUNET_PQ_result_spec_auto_from_type ("reserve_pub",
|
GNUNET_PQ_result_spec_auto_from_type ("reserve_pub",
|
||||||
&td.details.reserves.reserve_pub),
|
&td.details.reserves.reserve_pub),
|
||||||
TALER_PQ_RESULT_SPEC_AMOUNT ("current_balance",
|
|
||||||
&td.details.reserves.current_balance),
|
|
||||||
GNUNET_PQ_result_spec_timestamp ("expiration_date",
|
GNUNET_PQ_result_spec_timestamp ("expiration_date",
|
||||||
&td.details.reserves.expiration_date),
|
&td.details.reserves.expiration_date),
|
||||||
GNUNET_PQ_result_spec_timestamp ("gc_date",
|
GNUNET_PQ_result_spec_timestamp ("gc_date",
|
||||||
@ -659,7 +656,6 @@ lrbt_cb_table_known_coins (void *cls,
|
|||||||
unsigned int num_results)
|
unsigned int num_results)
|
||||||
{
|
{
|
||||||
struct LookupRecordsByTableContext *ctx = cls;
|
struct LookupRecordsByTableContext *ctx = cls;
|
||||||
struct PostgresClosure *pg = ctx->pg;
|
|
||||||
struct TALER_EXCHANGEDB_TableData td = {
|
struct TALER_EXCHANGEDB_TableData td = {
|
||||||
.table = TALER_EXCHANGEDB_RT_KNOWN_COINS
|
.table = TALER_EXCHANGEDB_RT_KNOWN_COINS
|
||||||
};
|
};
|
||||||
@ -679,9 +675,6 @@ lrbt_cb_table_known_coins (void *cls,
|
|||||||
GNUNET_PQ_result_spec_uint64 (
|
GNUNET_PQ_result_spec_uint64 (
|
||||||
"denominations_serial",
|
"denominations_serial",
|
||||||
&td.details.known_coins.denominations_serial),
|
&td.details.known_coins.denominations_serial),
|
||||||
TALER_PQ_RESULT_SPEC_AMOUNT (
|
|
||||||
"remaining",
|
|
||||||
&td.details.known_coins.remaining),
|
|
||||||
GNUNET_PQ_result_spec_end
|
GNUNET_PQ_result_spec_end
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -953,9 +946,6 @@ lrbt_cb_table_deposits (void *cls,
|
|||||||
GNUNET_PQ_result_spec_auto_from_type (
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
"wire_target_h_payto",
|
"wire_target_h_payto",
|
||||||
&td.details.deposits.wire_target_h_payto),
|
&td.details.deposits.wire_target_h_payto),
|
||||||
GNUNET_PQ_result_spec_bool (
|
|
||||||
"done",
|
|
||||||
&td.details.deposits.done),
|
|
||||||
GNUNET_PQ_result_spec_auto_from_type (
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
"extension_blocked",
|
"extension_blocked",
|
||||||
&td.details.deposits.extension_blocked),
|
&td.details.deposits.extension_blocked),
|
||||||
@ -1455,10 +1445,10 @@ lrbt_cb_table_extension_details (void *cls,
|
|||||||
struct TALER_EXCHANGEDB_TableData td = {
|
struct TALER_EXCHANGEDB_TableData td = {
|
||||||
.table = TALER_EXCHANGEDB_RT_EXTENSION_DETAILS
|
.table = TALER_EXCHANGEDB_RT_EXTENSION_DETAILS
|
||||||
};
|
};
|
||||||
bool no_config = false;
|
|
||||||
|
|
||||||
for (unsigned int i = 0; i<num_results; i++)
|
for (unsigned int i = 0; i<num_results; i++)
|
||||||
{
|
{
|
||||||
|
bool no_config = false;
|
||||||
struct GNUNET_PQ_ResultSpec rs[] = {
|
struct GNUNET_PQ_ResultSpec rs[] = {
|
||||||
GNUNET_PQ_result_spec_uint64 ("extension_details_serial_id",
|
GNUNET_PQ_result_spec_uint64 ("extension_details_serial_id",
|
||||||
&td.serial),
|
&td.serial),
|
||||||
@ -1486,4 +1476,594 @@ lrbt_cb_table_extension_details (void *cls,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with purse_requests table entries.
|
||||||
|
*
|
||||||
|
* @param cls closure
|
||||||
|
* @param result the postgres result
|
||||||
|
* @param num_results the number of results in @a result
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
lrbt_cb_table_purse_requests (void *cls,
|
||||||
|
PGresult *result,
|
||||||
|
unsigned int num_results)
|
||||||
|
{
|
||||||
|
struct LookupRecordsByTableContext *ctx = cls;
|
||||||
|
struct PostgresClosure *pg = ctx->pg;
|
||||||
|
struct TALER_EXCHANGEDB_TableData td = {
|
||||||
|
.table = TALER_EXCHANGEDB_RT_PURSE_REQUESTS
|
||||||
|
};
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i<num_results; i++)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_ResultSpec rs[] = {
|
||||||
|
GNUNET_PQ_result_spec_uint64 (
|
||||||
|
"extension_details_serial_id",
|
||||||
|
&td.serial),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"purse_pub",
|
||||||
|
&td.details.purse_requests.purse_pub),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"merge_pub",
|
||||||
|
&td.details.purse_requests.merge_pub),
|
||||||
|
GNUNET_PQ_result_spec_timestamp (
|
||||||
|
"purse_creation",
|
||||||
|
&td.details.purse_requests.purse_creation),
|
||||||
|
GNUNET_PQ_result_spec_timestamp (
|
||||||
|
"purse_expiration",
|
||||||
|
&td.details.purse_requests.purse_expiration),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"h_contract_terms",
|
||||||
|
&td.details.purse_requests.h_contract_terms),
|
||||||
|
GNUNET_PQ_result_spec_uint32 (
|
||||||
|
"age_limit",
|
||||||
|
&td.details.purse_requests.age_limit),
|
||||||
|
GNUNET_PQ_result_spec_uint32 (
|
||||||
|
"flags",
|
||||||
|
&td.details.purse_requests.flags),
|
||||||
|
TALER_PQ_RESULT_SPEC_AMOUNT (
|
||||||
|
"amount_with_fee",
|
||||||
|
&td.details.purse_requests.amount_with_fee),
|
||||||
|
TALER_PQ_RESULT_SPEC_AMOUNT (
|
||||||
|
"purse_fee",
|
||||||
|
&td.details.purse_requests.purse_fee),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"purse_sig",
|
||||||
|
&td.details.purse_requests.purse_sig),
|
||||||
|
GNUNET_PQ_result_spec_end
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
GNUNET_PQ_extract_result (result,
|
||||||
|
rs,
|
||||||
|
i))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
ctx->error = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ctx->cb (ctx->cb_cls,
|
||||||
|
&td);
|
||||||
|
GNUNET_PQ_cleanup_result (rs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with purse_merges table entries.
|
||||||
|
*
|
||||||
|
* @param cls closure
|
||||||
|
* @param result the postgres result
|
||||||
|
* @param num_results the number of results in @a result
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
lrbt_cb_table_purse_merges (void *cls,
|
||||||
|
PGresult *result,
|
||||||
|
unsigned int num_results)
|
||||||
|
{
|
||||||
|
struct LookupRecordsByTableContext *ctx = cls;
|
||||||
|
struct TALER_EXCHANGEDB_TableData td = {
|
||||||
|
.table = TALER_EXCHANGEDB_RT_PURSE_MERGES
|
||||||
|
};
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i<num_results; i++)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_ResultSpec rs[] = {
|
||||||
|
GNUNET_PQ_result_spec_uint64 (
|
||||||
|
"extension_details_serial_id",
|
||||||
|
&td.serial),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"reserve_pub",
|
||||||
|
&td.details.purse_merges.reserve_pub),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"purse_pub",
|
||||||
|
&td.details.purse_merges.purse_pub),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"merge_sig",
|
||||||
|
&td.details.purse_merges.merge_sig),
|
||||||
|
GNUNET_PQ_result_spec_timestamp (
|
||||||
|
"purse_expiration",
|
||||||
|
&td.details.purse_merges.merge_timestamp),
|
||||||
|
GNUNET_PQ_result_spec_end
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
GNUNET_PQ_extract_result (result,
|
||||||
|
rs,
|
||||||
|
i))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
ctx->error = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ctx->cb (ctx->cb_cls,
|
||||||
|
&td);
|
||||||
|
GNUNET_PQ_cleanup_result (rs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with purse_deposits table entries.
|
||||||
|
*
|
||||||
|
* @param cls closure
|
||||||
|
* @param result the postgres result
|
||||||
|
* @param num_results the number of results in @a result
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
lrbt_cb_table_purse_deposits (void *cls,
|
||||||
|
PGresult *result,
|
||||||
|
unsigned int num_results)
|
||||||
|
{
|
||||||
|
struct LookupRecordsByTableContext *ctx = cls;
|
||||||
|
struct PostgresClosure *pg = ctx->pg;
|
||||||
|
struct TALER_EXCHANGEDB_TableData td = {
|
||||||
|
.table = TALER_EXCHANGEDB_RT_PURSE_DEPOSITS
|
||||||
|
};
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i<num_results; i++)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_ResultSpec rs[] = {
|
||||||
|
GNUNET_PQ_result_spec_uint64 (
|
||||||
|
"extension_details_serial_id",
|
||||||
|
&td.serial),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"purse_pub",
|
||||||
|
&td.details.purse_deposits.purse_pub),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"coin_pub",
|
||||||
|
&td.details.purse_deposits.coin_pub),
|
||||||
|
TALER_PQ_RESULT_SPEC_AMOUNT (
|
||||||
|
"amount_with_fee",
|
||||||
|
&td.details.purse_deposits.amount_with_fee),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"coin_sig",
|
||||||
|
&td.details.purse_deposits.coin_sig),
|
||||||
|
GNUNET_PQ_result_spec_end
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
GNUNET_PQ_extract_result (result,
|
||||||
|
rs,
|
||||||
|
i))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
ctx->error = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ctx->cb (ctx->cb_cls,
|
||||||
|
&td);
|
||||||
|
GNUNET_PQ_cleanup_result (rs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with account_merges table entries.
|
||||||
|
*
|
||||||
|
* @param cls closure
|
||||||
|
* @param result the postgres result
|
||||||
|
* @param num_results the number of results in @a result
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
lrbt_cb_table_account_merges (void *cls,
|
||||||
|
PGresult *result,
|
||||||
|
unsigned int num_results)
|
||||||
|
{
|
||||||
|
struct LookupRecordsByTableContext *ctx = cls;
|
||||||
|
struct TALER_EXCHANGEDB_TableData td = {
|
||||||
|
.table = TALER_EXCHANGEDB_RT_ACCOUNT_MERGES
|
||||||
|
};
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i<num_results; i++)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_ResultSpec rs[] = {
|
||||||
|
GNUNET_PQ_result_spec_uint64 (
|
||||||
|
"extension_details_serial_id",
|
||||||
|
&td.serial),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"reserve_pub",
|
||||||
|
&td.details.account_merges.reserve_pub),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"reserve_sig",
|
||||||
|
&td.details.account_merges.reserve_sig),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"purse_pub",
|
||||||
|
&td.details.account_merges.purse_pub),
|
||||||
|
GNUNET_PQ_result_spec_end
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
GNUNET_PQ_extract_result (result,
|
||||||
|
rs,
|
||||||
|
i))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
ctx->error = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ctx->cb (ctx->cb_cls,
|
||||||
|
&td);
|
||||||
|
GNUNET_PQ_cleanup_result (rs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with history_requests table entries.
|
||||||
|
*
|
||||||
|
* @param cls closure
|
||||||
|
* @param result the postgres result
|
||||||
|
* @param num_results the number of results in @a result
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
lrbt_cb_table_history_requests (void *cls,
|
||||||
|
PGresult *result,
|
||||||
|
unsigned int num_results)
|
||||||
|
{
|
||||||
|
struct LookupRecordsByTableContext *ctx = cls;
|
||||||
|
struct PostgresClosure *pg = ctx->pg;
|
||||||
|
struct TALER_EXCHANGEDB_TableData td = {
|
||||||
|
.table = TALER_EXCHANGEDB_RT_HISTORY_REQUESTS
|
||||||
|
};
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i<num_results; i++)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_ResultSpec rs[] = {
|
||||||
|
GNUNET_PQ_result_spec_uint64 (
|
||||||
|
"extension_details_serial_id",
|
||||||
|
&td.serial),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"reserve_pub",
|
||||||
|
&td.details.history_requests.reserve_pub),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"reserve_sig",
|
||||||
|
&td.details.history_requests.reserve_sig),
|
||||||
|
TALER_PQ_RESULT_SPEC_AMOUNT (
|
||||||
|
"history_fee",
|
||||||
|
&td.details.history_requests.history_fee),
|
||||||
|
GNUNET_PQ_result_spec_end
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
GNUNET_PQ_extract_result (result,
|
||||||
|
rs,
|
||||||
|
i))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
ctx->error = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ctx->cb (ctx->cb_cls,
|
||||||
|
&td);
|
||||||
|
GNUNET_PQ_cleanup_result (rs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with close_requests table entries.
|
||||||
|
*
|
||||||
|
* @param cls closure
|
||||||
|
* @param result the postgres result
|
||||||
|
* @param num_results the number of results in @a result
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
lrbt_cb_table_close_requests (void *cls,
|
||||||
|
PGresult *result,
|
||||||
|
unsigned int num_results)
|
||||||
|
{
|
||||||
|
struct LookupRecordsByTableContext *ctx = cls;
|
||||||
|
struct PostgresClosure *pg = ctx->pg;
|
||||||
|
struct TALER_EXCHANGEDB_TableData td = {
|
||||||
|
.table = TALER_EXCHANGEDB_RT_CLOSE_REQUESTS
|
||||||
|
};
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i<num_results; i++)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_ResultSpec rs[] = {
|
||||||
|
GNUNET_PQ_result_spec_uint64 (
|
||||||
|
"extension_details_serial_id",
|
||||||
|
&td.serial),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"reserve_pub",
|
||||||
|
&td.details.close_requests.reserve_pub),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"reserve_sig",
|
||||||
|
&td.details.close_requests.reserve_sig),
|
||||||
|
TALER_PQ_RESULT_SPEC_AMOUNT (
|
||||||
|
"close",
|
||||||
|
&td.details.close_requests.close),
|
||||||
|
GNUNET_PQ_result_spec_end
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
GNUNET_PQ_extract_result (result,
|
||||||
|
rs,
|
||||||
|
i))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
ctx->error = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ctx->cb (ctx->cb_cls,
|
||||||
|
&td);
|
||||||
|
GNUNET_PQ_cleanup_result (rs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with wads_out table entries.
|
||||||
|
*
|
||||||
|
* @param cls closure
|
||||||
|
* @param result the postgres result
|
||||||
|
* @param num_results the number of results in @a result
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
lrbt_cb_table_wads_out (void *cls,
|
||||||
|
PGresult *result,
|
||||||
|
unsigned int num_results)
|
||||||
|
{
|
||||||
|
struct LookupRecordsByTableContext *ctx = cls;
|
||||||
|
struct PostgresClosure *pg = ctx->pg;
|
||||||
|
struct TALER_EXCHANGEDB_TableData td = {
|
||||||
|
.table = TALER_EXCHANGEDB_RT_WADS_OUT
|
||||||
|
};
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i<num_results; i++)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_ResultSpec rs[] = {
|
||||||
|
GNUNET_PQ_result_spec_uint64 (
|
||||||
|
"extension_details_serial_id",
|
||||||
|
&td.serial),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"wad_id",
|
||||||
|
&td.details.wads_out.wad_id),
|
||||||
|
GNUNET_PQ_result_spec_uint64 (
|
||||||
|
"partner_serial_id",
|
||||||
|
&td.details.wads_out.partner_serial_id),
|
||||||
|
TALER_PQ_RESULT_SPEC_AMOUNT (
|
||||||
|
"amount",
|
||||||
|
&td.details.wads_out.amount),
|
||||||
|
GNUNET_PQ_result_spec_timestamp (
|
||||||
|
"execution_time",
|
||||||
|
&td.details.wads_out.execution_time),
|
||||||
|
GNUNET_PQ_result_spec_end
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
GNUNET_PQ_extract_result (result,
|
||||||
|
rs,
|
||||||
|
i))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
ctx->error = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ctx->cb (ctx->cb_cls,
|
||||||
|
&td);
|
||||||
|
GNUNET_PQ_cleanup_result (rs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with wads_out_entries table entries.
|
||||||
|
*
|
||||||
|
* @param cls closure
|
||||||
|
* @param result the postgres result
|
||||||
|
* @param num_results the number of results in @a result
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
lrbt_cb_table_wads_out_entries (void *cls,
|
||||||
|
PGresult *result,
|
||||||
|
unsigned int num_results)
|
||||||
|
{
|
||||||
|
struct LookupRecordsByTableContext *ctx = cls;
|
||||||
|
struct PostgresClosure *pg = ctx->pg;
|
||||||
|
struct TALER_EXCHANGEDB_TableData td = {
|
||||||
|
.table = TALER_EXCHANGEDB_RT_WADS_OUT_ENTRIES
|
||||||
|
};
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i<num_results; i++)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_ResultSpec rs[] = {
|
||||||
|
GNUNET_PQ_result_spec_uint64 (
|
||||||
|
"extension_details_serial_id",
|
||||||
|
&td.serial),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"reserve_pub",
|
||||||
|
&td.details.wads_out_entries.reserve_pub),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"purse_pub",
|
||||||
|
&td.details.wads_out_entries.purse_pub),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"h_contract",
|
||||||
|
&td.details.wads_out_entries.h_contract),
|
||||||
|
GNUNET_PQ_result_spec_timestamp (
|
||||||
|
"purse_expiration",
|
||||||
|
&td.details.wads_out_entries.purse_expiration),
|
||||||
|
GNUNET_PQ_result_spec_timestamp (
|
||||||
|
"merge_timestamp",
|
||||||
|
&td.details.wads_out_entries.merge_timestamp),
|
||||||
|
TALER_PQ_RESULT_SPEC_AMOUNT (
|
||||||
|
"amount_with_fee",
|
||||||
|
&td.details.wads_out_entries.amount_with_fee),
|
||||||
|
TALER_PQ_RESULT_SPEC_AMOUNT (
|
||||||
|
"deposit_fees",
|
||||||
|
&td.details.wads_out_entries.deposit_fees),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"reserve_sig",
|
||||||
|
&td.details.wads_out_entries.reserve_sig),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"purse_sig",
|
||||||
|
&td.details.wads_out_entries.purse_sig),
|
||||||
|
GNUNET_PQ_result_spec_end
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
GNUNET_PQ_extract_result (result,
|
||||||
|
rs,
|
||||||
|
i))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
ctx->error = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ctx->cb (ctx->cb_cls,
|
||||||
|
&td);
|
||||||
|
GNUNET_PQ_cleanup_result (rs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with wads_in table entries.
|
||||||
|
*
|
||||||
|
* @param cls closure
|
||||||
|
* @param result the postgres result
|
||||||
|
* @param num_results the number of results in @a result
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
lrbt_cb_table_wads_in (void *cls,
|
||||||
|
PGresult *result,
|
||||||
|
unsigned int num_results)
|
||||||
|
{
|
||||||
|
struct LookupRecordsByTableContext *ctx = cls;
|
||||||
|
struct PostgresClosure *pg = ctx->pg;
|
||||||
|
struct TALER_EXCHANGEDB_TableData td = {
|
||||||
|
.table = TALER_EXCHANGEDB_RT_WADS_IN
|
||||||
|
};
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i<num_results; i++)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_ResultSpec rs[] = {
|
||||||
|
GNUNET_PQ_result_spec_uint64 (
|
||||||
|
"extension_details_serial_id",
|
||||||
|
&td.serial),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"wad_id",
|
||||||
|
&td.details.wads_in.wad_id),
|
||||||
|
GNUNET_PQ_result_spec_string (
|
||||||
|
"origin_exchange_url",
|
||||||
|
&td.details.wads_in.origin_exchange_url),
|
||||||
|
TALER_PQ_RESULT_SPEC_AMOUNT (
|
||||||
|
"amount",
|
||||||
|
&td.details.wads_in.amount),
|
||||||
|
GNUNET_PQ_result_spec_timestamp (
|
||||||
|
"arrival_time",
|
||||||
|
&td.details.wads_in.arrival_time),
|
||||||
|
GNUNET_PQ_result_spec_end
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
GNUNET_PQ_extract_result (result,
|
||||||
|
rs,
|
||||||
|
i))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
ctx->error = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ctx->cb (ctx->cb_cls,
|
||||||
|
&td);
|
||||||
|
GNUNET_PQ_cleanup_result (rs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Function called with wads_in_entries table entries.
|
||||||
|
*
|
||||||
|
* @param cls closure
|
||||||
|
* @param result the postgres result
|
||||||
|
* @param num_results the number of results in @a result
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
lrbt_cb_table_wads_in_entries (void *cls,
|
||||||
|
PGresult *result,
|
||||||
|
unsigned int num_results)
|
||||||
|
{
|
||||||
|
struct LookupRecordsByTableContext *ctx = cls;
|
||||||
|
struct PostgresClosure *pg = ctx->pg;
|
||||||
|
struct TALER_EXCHANGEDB_TableData td = {
|
||||||
|
.table = TALER_EXCHANGEDB_RT_WADS_IN_ENTRIES
|
||||||
|
};
|
||||||
|
|
||||||
|
for (unsigned int i = 0; i<num_results; i++)
|
||||||
|
{
|
||||||
|
struct GNUNET_PQ_ResultSpec rs[] = {
|
||||||
|
GNUNET_PQ_result_spec_uint64 (
|
||||||
|
"extension_details_serial_id",
|
||||||
|
&td.serial),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"reserve_pub",
|
||||||
|
&td.details.wads_in_entries.reserve_pub),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"purse_pub",
|
||||||
|
&td.details.wads_in_entries.purse_pub),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"h_contract",
|
||||||
|
&td.details.wads_in_entries.h_contract),
|
||||||
|
GNUNET_PQ_result_spec_timestamp (
|
||||||
|
"purse_expiration",
|
||||||
|
&td.details.wads_in_entries.purse_expiration),
|
||||||
|
GNUNET_PQ_result_spec_timestamp (
|
||||||
|
"merge_timestamp",
|
||||||
|
&td.details.wads_in_entries.merge_timestamp),
|
||||||
|
TALER_PQ_RESULT_SPEC_AMOUNT (
|
||||||
|
"amount_with_fee",
|
||||||
|
&td.details.wads_in_entries.amount_with_fee),
|
||||||
|
TALER_PQ_RESULT_SPEC_AMOUNT (
|
||||||
|
"wad_fee",
|
||||||
|
&td.details.wads_in_entries.wad_fee),
|
||||||
|
TALER_PQ_RESULT_SPEC_AMOUNT (
|
||||||
|
"deposit_fees",
|
||||||
|
&td.details.wads_in_entries.deposit_fees),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"reserve_sig",
|
||||||
|
&td.details.wads_in_entries.reserve_sig),
|
||||||
|
GNUNET_PQ_result_spec_auto_from_type (
|
||||||
|
"purse_sig",
|
||||||
|
&td.details.wads_in_entries.purse_sig),
|
||||||
|
GNUNET_PQ_result_spec_end
|
||||||
|
};
|
||||||
|
|
||||||
|
if (GNUNET_OK !=
|
||||||
|
GNUNET_PQ_extract_result (result,
|
||||||
|
rs,
|
||||||
|
i))
|
||||||
|
{
|
||||||
|
GNUNET_break (0);
|
||||||
|
ctx->error = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ctx->cb (ctx->cb_cls,
|
||||||
|
&td);
|
||||||
|
GNUNET_PQ_cleanup_result (rs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* end of lrbt_callbacks.c */
|
/* end of lrbt_callbacks.c */
|
||||||
|
@ -12738,6 +12738,46 @@ postgres_lookup_records_by_table (void *cls,
|
|||||||
statement = "select_above_serial_by_table_extension_details";
|
statement = "select_above_serial_by_table_extension_details";
|
||||||
rh = &lrbt_cb_table_extension_details;
|
rh = &lrbt_cb_table_extension_details;
|
||||||
break;
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_PURSE_REQUESTS:
|
||||||
|
statement = "select_above_serial_by_table_purse_requests";
|
||||||
|
rh = &lrbt_cb_table_purse_requests;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_PURSE_MERGES:
|
||||||
|
statement = "select_above_serial_by_table_purse_merges";
|
||||||
|
rh = &lrbt_cb_table_purse_merges;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_PURSE_DEPOSITS:
|
||||||
|
statement = "select_above_serial_by_table_purse_deposits";
|
||||||
|
rh = &lrbt_cb_table_purse_deposits;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_ACCOUNT_MERGES:
|
||||||
|
statement = "select_above_serial_by_table_account_merges";
|
||||||
|
rh = &lrbt_cb_table_account_merges;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_HISTORY_REQUESTS:
|
||||||
|
statement = "select_above_serial_by_table_history_requests";
|
||||||
|
rh = &lrbt_cb_table_history_requests;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_CLOSE_REQUESTS:
|
||||||
|
statement = "select_above_serial_by_table_close_requests";
|
||||||
|
rh = &lrbt_cb_table_close_requests;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_WADS_OUT:
|
||||||
|
statement = "select_above_serial_by_table_wads_out";
|
||||||
|
rh = &lrbt_cb_table_wads_out;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_WADS_OUT_ENTRIES:
|
||||||
|
statement = "select_above_serial_by_table_wads_out_entries";
|
||||||
|
rh = &lrbt_cb_table_wads_out_entries;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_WADS_IN:
|
||||||
|
statement = "select_above_serial_by_table_wads_in";
|
||||||
|
rh = &lrbt_cb_table_wads_in;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_WADS_IN_ENTRIES:
|
||||||
|
statement = "select_above_serial_by_table_wads_in_entries";
|
||||||
|
rh = &lrbt_cb_table_wads_in_entries;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_DB_STATUS_HARD_ERROR;
|
return GNUNET_DB_STATUS_HARD_ERROR;
|
||||||
@ -12872,6 +12912,36 @@ postgres_insert_records_by_table (void *cls,
|
|||||||
case TALER_EXCHANGEDB_RT_EXTENSION_DETAILS:
|
case TALER_EXCHANGEDB_RT_EXTENSION_DETAILS:
|
||||||
rh = &irbt_cb_table_extension_details;
|
rh = &irbt_cb_table_extension_details;
|
||||||
break;
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_PURSE_REQUESTS:
|
||||||
|
rh = &irbt_cb_table_purse_requests;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_PURSE_MERGES:
|
||||||
|
rh = &irbt_cb_table_purse_merges;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_PURSE_DEPOSITS:
|
||||||
|
rh = &irbt_cb_table_purse_deposits;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_ACCOUNT_MERGES:
|
||||||
|
rh = &irbt_cb_table_account_mergers;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_HISTORY_REQUESTS:
|
||||||
|
rh = &irbt_cb_table_history_requests;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_CLOSE_REQUESTS:
|
||||||
|
rh = &irbt_cb_table_close_requests;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_WADS_OUT:
|
||||||
|
rh = &irbt_cb_table_wads_out;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_WADS_OUT_ENTRIES:
|
||||||
|
rh = &irbt_cb_table_wads_out_entries;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_WADS_IN:
|
||||||
|
rh = &irbt_cb_table_wads_in;
|
||||||
|
break;
|
||||||
|
case TALER_EXCHANGEDB_RT_WADS_IN_ENTRIES:
|
||||||
|
rh = &irbt_cb_table_wads_in_entries;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
GNUNET_break (0);
|
GNUNET_break (0);
|
||||||
return GNUNET_DB_STATUS_HARD_ERROR;
|
return GNUNET_DB_STATUS_HARD_ERROR;
|
||||||
|
@ -216,6 +216,16 @@ enum TALER_EXCHANGEDB_ReplicatedTable
|
|||||||
TALER_EXCHANGEDB_RT_RECOUP_REFRESH,
|
TALER_EXCHANGEDB_RT_RECOUP_REFRESH,
|
||||||
TALER_EXCHANGEDB_RT_EXTENSIONS,
|
TALER_EXCHANGEDB_RT_EXTENSIONS,
|
||||||
TALER_EXCHANGEDB_RT_EXTENSION_DETAILS,
|
TALER_EXCHANGEDB_RT_EXTENSION_DETAILS,
|
||||||
|
TALER_EXCHANGEDB_RT_PURSE_REQUESTS,
|
||||||
|
TALER_EXCHANGEDB_RT_PURSE_MERGES,
|
||||||
|
TALER_EXCHANGEDB_RT_PURSE_DEPOSITS,
|
||||||
|
TALER_EXCHANGEDB_RT_ACCOUNT_MERGES,
|
||||||
|
TALER_EXCHANGEDB_RT_HISTORY_REQUESTS,
|
||||||
|
TALER_EXCHANGEDB_RT_CLOSE_REQUESTS,
|
||||||
|
TALER_EXCHANGEDB_RT_WADS_OUT,
|
||||||
|
TALER_EXCHANGEDB_RT_WADS_OUT_ENTRIES,
|
||||||
|
TALER_EXCHANGEDB_RT_WADS_IN,
|
||||||
|
TALER_EXCHANGEDB_RT_WADS_IN_ENTRIES,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -273,10 +283,6 @@ struct TALER_EXCHANGEDB_TableData
|
|||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
struct TALER_ReservePublicKeyP reserve_pub;
|
struct TALER_ReservePublicKeyP reserve_pub;
|
||||||
/**
|
|
||||||
* Note: not useful for auditor, because not UPDATEd!
|
|
||||||
*/
|
|
||||||
struct TALER_Amount current_balance;
|
|
||||||
struct GNUNET_TIME_Timestamp expiration_date;
|
struct GNUNET_TIME_Timestamp expiration_date;
|
||||||
struct GNUNET_TIME_Timestamp gc_date;
|
struct GNUNET_TIME_Timestamp gc_date;
|
||||||
} reserves;
|
} reserves;
|
||||||
@ -347,7 +353,6 @@ struct TALER_EXCHANGEDB_TableData
|
|||||||
struct TALER_AgeCommitmentHash age_hash;
|
struct TALER_AgeCommitmentHash age_hash;
|
||||||
uint64_t denominations_serial;
|
uint64_t denominations_serial;
|
||||||
struct TALER_DenominationSignature denom_sig;
|
struct TALER_DenominationSignature denom_sig;
|
||||||
struct TALER_Amount remaining;
|
|
||||||
} known_coins;
|
} known_coins;
|
||||||
|
|
||||||
struct
|
struct
|
||||||
@ -394,7 +399,6 @@ struct TALER_EXCHANGEDB_TableData
|
|||||||
struct TALER_CoinSpendSignatureP coin_sig;
|
struct TALER_CoinSpendSignatureP coin_sig;
|
||||||
struct TALER_WireSaltP wire_salt;
|
struct TALER_WireSaltP wire_salt;
|
||||||
struct TALER_PaytoHashP wire_target_h_payto;
|
struct TALER_PaytoHashP wire_target_h_payto;
|
||||||
bool done;
|
|
||||||
bool extension_blocked;
|
bool extension_blocked;
|
||||||
uint64_t extension_details_serial_id;
|
uint64_t extension_details_serial_id;
|
||||||
} deposits;
|
} deposits;
|
||||||
@ -476,6 +480,106 @@ struct TALER_EXCHANGEDB_TableData
|
|||||||
char *extension_options;
|
char *extension_options;
|
||||||
} extension_details;
|
} extension_details;
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
struct TALER_PurseContractPublicKeyP purse_pub;
|
||||||
|
struct TALER_PurseMergePublicKeyP merge_pub;
|
||||||
|
struct GNUNET_TIME_Timestamp purse_creation;
|
||||||
|
struct GNUNET_TIME_Timestamp purse_expiration;
|
||||||
|
struct TALER_PrivateContractHashP h_contract_terms;
|
||||||
|
uint32_t age_limit;
|
||||||
|
uint32_t flags;
|
||||||
|
struct TALER_Amount amount_with_fee;
|
||||||
|
struct TALER_Amount purse_fee;
|
||||||
|
struct TALER_PurseContractSignatureP purse_sig;
|
||||||
|
} purse_requests;
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
uint64_t partner_serial_id;
|
||||||
|
struct TALER_ReservePublicKeyP reserve_pub;
|
||||||
|
struct TALER_PurseContractPublicKeyP purse_pub;
|
||||||
|
struct TALER_PurseMergeSignatureP merge_sig;
|
||||||
|
struct GNUNET_TIME_Timestamp merge_timestamp;
|
||||||
|
} purse_merges;
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
uint64_t partner_serial_id;
|
||||||
|
struct TALER_PurseContractPublicKeyP purse_pub;
|
||||||
|
struct TALER_CoinSpendPublicKeyP coin_pub;
|
||||||
|
struct TALER_Amount amount_with_fee;
|
||||||
|
struct TALER_CoinSpendSignatureP coin_sig;
|
||||||
|
} purse_deposits;
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
struct TALER_ReservePublicKeyP reserve_pub;
|
||||||
|
struct TALER_ReserveSignatureP reserve_sig;
|
||||||
|
struct TALER_PurseContractPublicKeyP purse_pub;
|
||||||
|
} account_merges;
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
struct TALER_ReservePublicKeyP reserve_pub;
|
||||||
|
struct TALER_ReserveSignatureP reserve_sig;
|
||||||
|
struct GNUNET_TIME_Timestamp request_timestamp;
|
||||||
|
struct TALER_Amount history_fee;
|
||||||
|
} history_requests;
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
struct TALER_ReservePublicKeyP reserve_pub;
|
||||||
|
struct GNUNET_TIME_Timestamp close_timestamp;
|
||||||
|
struct TALER_ReserveSignatureP reserve_sig;
|
||||||
|
struct TALER_Amount close;
|
||||||
|
} close_requests;
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
struct TALER_WadIdentifierP wad_id;
|
||||||
|
uint64_t partner_serial_id;
|
||||||
|
struct TALER_Amount amount;
|
||||||
|
struct GNUNET_TIME_Timestamp execution_time;
|
||||||
|
} wads_out;
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
uint64_t wad_out_serial_id;
|
||||||
|
struct TALER_ReservePublicKeyP reserve_pub;
|
||||||
|
struct TALER_PurseContractPublicKeyP purse_pub;
|
||||||
|
struct TALER_PrivateContractHashP h_contract;
|
||||||
|
struct GNUNET_TIME_Timestamp purse_expiration;
|
||||||
|
struct GNUNET_TIME_Timestamp merge_timestamp;
|
||||||
|
struct TALER_Amount amount_with_fee;
|
||||||
|
struct TALER_Amount deposit_fees;
|
||||||
|
struct TALER_ReserveSignatureP reserve_sig;
|
||||||
|
struct TALER_PurseContractSignatureP purse_sig;
|
||||||
|
} wads_out_entries;
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
struct TALER_WadIdentifierP wad_id;
|
||||||
|
char *origin_exchange_url;
|
||||||
|
struct TALER_Amount amount;
|
||||||
|
struct GNUNET_TIME_Timestamp arrival_time;
|
||||||
|
} wads_in;
|
||||||
|
|
||||||
|
struct
|
||||||
|
{
|
||||||
|
uint64_t wad_in_serial_id;
|
||||||
|
struct TALER_ReservePublicKeyP reserve_pub;
|
||||||
|
struct TALER_PurseContractPublicKeyP purse_pub;
|
||||||
|
struct TALER_PrivateContractHashP h_contract;
|
||||||
|
struct GNUNET_TIME_Timestamp purse_expiration;
|
||||||
|
struct GNUNET_TIME_Timestamp merge_timestamp;
|
||||||
|
struct TALER_Amount amount_with_fee;
|
||||||
|
struct TALER_Amount wad_fee;
|
||||||
|
struct TALER_Amount deposit_fees;
|
||||||
|
struct TALER_ReserveSignatureP reserve_sig;
|
||||||
|
struct TALER_PurseContractSignatureP purse_sig;
|
||||||
|
} wads_in_entries;
|
||||||
|
|
||||||
} details;
|
} details;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user