-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);
|
||||
|
||||
-- FIXME: change to materialized index by marge_pub!
|
||||
-- FIXME: change to materialized index by merge_pub!
|
||||
EXECUTE FORMAT (
|
||||
'CREATE INDEX IF NOT EXISTS ' || table_name || '_merge_pub '
|
||||
'ON ' || table_name || ' '
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
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
|
||||
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[] = {
|
||||
GNUNET_PQ_query_param_uint64 (&td->serial),
|
||||
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.gc_date),
|
||||
GNUNET_PQ_query_param_end
|
||||
@ -383,8 +382,6 @@ irbt_cb_table_known_coins (struct PostgresClosure *pg,
|
||||
&td->details.known_coins.denom_sig),
|
||||
GNUNET_PQ_query_param_uint64 (
|
||||
&td->details.known_coins.denominations_serial),
|
||||
TALER_PQ_query_param_amount (
|
||||
&td->details.known_coins.remaining),
|
||||
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_target_h_payto),
|
||||
GNUNET_PQ_query_param_bool (td->details.deposits.done),
|
||||
GNUNET_PQ_query_param_bool (td->details.deposits.extension_blocked),
|
||||
0 == td->details.deposits.extension_details_serial_id
|
||||
? 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 */
|
||||
|
@ -1,6 +1,6 @@
|
||||
/*
|
||||
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
|
||||
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)
|
||||
{
|
||||
struct LookupRecordsByTableContext *ctx = cls;
|
||||
struct PostgresClosure *pg = ctx->pg;
|
||||
struct TALER_EXCHANGEDB_TableData td = {
|
||||
.table = TALER_EXCHANGEDB_RT_RESERVES
|
||||
};
|
||||
@ -231,8 +230,6 @@ lrbt_cb_table_reserves (void *cls,
|
||||
&td.serial),
|
||||
GNUNET_PQ_result_spec_auto_from_type ("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",
|
||||
&td.details.reserves.expiration_date),
|
||||
GNUNET_PQ_result_spec_timestamp ("gc_date",
|
||||
@ -659,7 +656,6 @@ lrbt_cb_table_known_coins (void *cls,
|
||||
unsigned int num_results)
|
||||
{
|
||||
struct LookupRecordsByTableContext *ctx = cls;
|
||||
struct PostgresClosure *pg = ctx->pg;
|
||||
struct TALER_EXCHANGEDB_TableData td = {
|
||||
.table = TALER_EXCHANGEDB_RT_KNOWN_COINS
|
||||
};
|
||||
@ -679,9 +675,6 @@ lrbt_cb_table_known_coins (void *cls,
|
||||
GNUNET_PQ_result_spec_uint64 (
|
||||
"denominations_serial",
|
||||
&td.details.known_coins.denominations_serial),
|
||||
TALER_PQ_RESULT_SPEC_AMOUNT (
|
||||
"remaining",
|
||||
&td.details.known_coins.remaining),
|
||||
GNUNET_PQ_result_spec_end
|
||||
};
|
||||
|
||||
@ -953,9 +946,6 @@ lrbt_cb_table_deposits (void *cls,
|
||||
GNUNET_PQ_result_spec_auto_from_type (
|
||||
"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 (
|
||||
"extension_blocked",
|
||||
&td.details.deposits.extension_blocked),
|
||||
@ -1455,10 +1445,10 @@ lrbt_cb_table_extension_details (void *cls,
|
||||
struct TALER_EXCHANGEDB_TableData td = {
|
||||
.table = TALER_EXCHANGEDB_RT_EXTENSION_DETAILS
|
||||
};
|
||||
bool no_config = false;
|
||||
|
||||
for (unsigned int i = 0; i<num_results; i++)
|
||||
{
|
||||
bool no_config = false;
|
||||
struct GNUNET_PQ_ResultSpec rs[] = {
|
||||
GNUNET_PQ_result_spec_uint64 ("extension_details_serial_id",
|
||||
&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 */
|
||||
|
@ -12738,6 +12738,46 @@ postgres_lookup_records_by_table (void *cls,
|
||||
statement = "select_above_serial_by_table_extension_details";
|
||||
rh = &lrbt_cb_table_extension_details;
|
||||
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:
|
||||
GNUNET_break (0);
|
||||
return GNUNET_DB_STATUS_HARD_ERROR;
|
||||
@ -12872,6 +12912,36 @@ postgres_insert_records_by_table (void *cls,
|
||||
case TALER_EXCHANGEDB_RT_EXTENSION_DETAILS:
|
||||
rh = &irbt_cb_table_extension_details;
|
||||
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:
|
||||
GNUNET_break (0);
|
||||
return GNUNET_DB_STATUS_HARD_ERROR;
|
||||
|
@ -216,6 +216,16 @@ enum TALER_EXCHANGEDB_ReplicatedTable
|
||||
TALER_EXCHANGEDB_RT_RECOUP_REFRESH,
|
||||
TALER_EXCHANGEDB_RT_EXTENSIONS,
|
||||
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 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 gc_date;
|
||||
} reserves;
|
||||
@ -347,7 +353,6 @@ struct TALER_EXCHANGEDB_TableData
|
||||
struct TALER_AgeCommitmentHash age_hash;
|
||||
uint64_t denominations_serial;
|
||||
struct TALER_DenominationSignature denom_sig;
|
||||
struct TALER_Amount remaining;
|
||||
} known_coins;
|
||||
|
||||
struct
|
||||
@ -394,7 +399,6 @@ struct TALER_EXCHANGEDB_TableData
|
||||
struct TALER_CoinSpendSignatureP coin_sig;
|
||||
struct TALER_WireSaltP wire_salt;
|
||||
struct TALER_PaytoHashP wire_target_h_payto;
|
||||
bool done;
|
||||
bool extension_blocked;
|
||||
uint64_t extension_details_serial_id;
|
||||
} deposits;
|
||||
@ -476,6 +480,106 @@ struct TALER_EXCHANGEDB_TableData
|
||||
char *extension_options;
|
||||
} 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;
|
||||
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user