work on insert_records_by_table

This commit is contained in:
Christian Grothoff 2023-04-16 09:41:37 +02:00
parent 136d2b2e70
commit 2906ded1a6
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC

View File

@ -1,6 +1,6 @@
/* /*
This file is part of GNUnet This file is part of GNUnet
Copyright (C) 2020, 2021, 2022 Taler Systems SA Copyright (C) 2020-2023 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
@ -1872,6 +1872,282 @@ irbt_cb_table_profit_drains (struct PostgresClosure *pg,
} }
/**
* Function called with aml_staff records to insert into table.
*
* @param pg plugin context
* @param td record to insert
*/
static enum GNUNET_DB_QueryStatus
irbt_cb_table_aml_staff (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.aml_staff.decider_pub),
GNUNET_PQ_query_param_auto_from_type (
&td->details.aml_staff.master_sig),
GNUNET_PQ_query_param_string (
td->details.aml_staff.decider_name),
GNUNET_PQ_query_param_bool (
td->details.aml_staff.is_active),
GNUNET_PQ_query_param_bool (
td->details.aml_staff.read_only),
GNUNET_PQ_query_param_timestamp (
&td->details.aml_staff.last_change),
GNUNET_PQ_query_param_end
};
PREPARE (pg,
"insert_into_table_aml_staff",
"INSERT INTO aml_staff"
"(aml_staff_uuid"
",decider_pub"
",master_sig"
",decider_name"
",is_active"
",read_only"
",last_change"
") VALUES "
"($1, $2, $3, $4, $5, $6, $7);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_aml_staff",
params);
}
/**
* Function called with aml_history records to insert into table.
*
* @param pg plugin context
* @param td record to insert
*/
static enum GNUNET_DB_QueryStatus
irbt_cb_table_aml_history (struct PostgresClosure *pg,
const struct TALER_EXCHANGEDB_TableData *td)
{
uint32_t status32 = td->details.aml_history.new_status;
struct GNUNET_PQ_QueryParam params[] = {
GNUNET_PQ_query_param_uint64 (&td->serial),
GNUNET_PQ_query_param_auto_from_type (
&td->details.aml_history.h_payto),
TALER_PQ_query_param_amount (
&td->details.aml_history.new_threshold),
GNUNET_PQ_query_param_uint32 (
&status32),
GNUNET_PQ_query_param_timestamp (
&td->details.aml_history.decision_time),
GNUNET_PQ_query_param_string (
td->details.aml_history.justification),
(NULL == td->details.aml_history.kyc_requirements)
? GNUNET_PQ_query_param_null ()
: GNUNET_PQ_query_param_string (
td->details.aml_history.kyc_requirements),
GNUNET_PQ_query_param_uint64 (
&td->details.aml_history.kyc_req_row),
GNUNET_PQ_query_param_auto_from_type (
&td->details.aml_history.decider_pub),
GNUNET_PQ_query_param_auto_from_type (
&td->details.aml_history.decider_sig),
GNUNET_PQ_query_param_end
};
PREPARE (pg,
"insert_into_table_aml_history",
"INSERT INTO aml_history"
"(aml_history_serial_id"
",h_payto"
",new_threshold_val"
",new_threshold_frac"
",new_status"
",decision_time"
",justification"
",kyc_requirements"
",kyc_req_row"
",decider_pub"
",decider_sig"
") VALUES "
"($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_aml_history",
params);
}
/**
* Function called with kyc_attributes records to insert into table.
*
* @param pg plugin context
* @param td record to insert
*/
static enum GNUNET_DB_QueryStatus
irbt_cb_table_kyc_attributes (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.kyc_attributes.h_payto),
GNUNET_PQ_query_param_auto_from_type (
&td->details.kyc_attributes.kyc_prox),
GNUNET_PQ_query_param_string (
td->details.kyc_attributes.provider),
(NULL == td->details.kyc_attributes.birthdate)
? GNUNET_PQ_query_param_null ()
: GNUNET_PQ_query_param_string (
td->details.kyc_attributes.birthdate),
GNUNET_PQ_query_param_timestamp (
&td->details.kyc_attributes.collection_time),
GNUNET_PQ_query_param_timestamp (
&td->details.kyc_attributes.expiration_time),
GNUNET_PQ_query_param_fixed_size (
&td->details.kyc_attributes.encrypted_attributes,
td->details.kyc_attributes.encrypted_attributes_size),
GNUNET_PQ_query_param_end
};
PREPARE (pg,
"insert_into_table_kyc_attributes",
"INSERT INTO kyc_attributes"
"(kyc_attributes_serial_id"
",h_payto"
",kyc_prox"
",provider"
",birthdate"
",collection_time"
",expiration_time"
",encrypted_attributes"
") VALUES "
"($1, $2, $3, $4, $5, $6, $7, $8);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_kyc_attributes",
params);
}
/**
* Function called with purse_deletion records to insert into table.
*
* @param pg plugin context
* @param td record to insert
*/
static enum GNUNET_DB_QueryStatus
irbt_cb_table_purse_deletion (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_deletion.purse_pub),
GNUNET_PQ_query_param_auto_from_type (
&td->details.purse_deletion.purse_sig),
GNUNET_PQ_query_param_end
};
PREPARE (pg,
"insert_into_table_purse_deletion",
"INSERT INTO purse_deletion"
"(purse_deletion_serial_id"
",purse_pub"
",purse_sig"
") VALUES "
"($1, $2, $3);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_purse_deletion",
params);
}
/**
* Function called with withdraw_age_commitments records to insert into table.
*
* @param pg plugin context
* @param td record to insert
*/
static enum GNUNET_DB_QueryStatus
irbt_cb_table_withdraw_age_commitments (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.withdraw_age_commitments.h_commitment),
TALER_PQ_query_param_amount (
&td->details.withdraw_age_commitments.amount_with_fee),
GNUNET_PQ_query_param_uint16 (
&td->details.withdraw_age_commitments.max_age),
GNUNET_PQ_query_param_auto_from_type (
&td->details.withdraw_age_commitments.reserve_pub),
GNUNET_PQ_query_param_auto_from_type (
&td->details.withdraw_age_commitments.reserve_sig),
GNUNET_PQ_query_param_uint32 (
&td->details.withdraw_age_commitments.noreveal_index),
GNUNET_PQ_query_param_absolute_time (
&td->details.withdraw_age_commitments.timestamp),
GNUNET_PQ_query_param_end
};
PREPARE (pg,
"insert_into_table_withdraw_age_commitments",
"INSERT INTO withdraw_age_commitments"
"(withdraw_age_commitment_id"
",h_commitment"
",amount_with_fee_val"
",amount_with_fee_frac"
",max_age"
",reserve_pub"
",reserve_sig"
",noreveal_index"
",timestamp"
") VALUES "
"($1, $2, $3, $4, $5, $6, $7, $8, $9);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_withdraw_age_commitments",
params);
}
/**
* Function called with withdraw_age_reveals records to insert into table.
*
* @param pg plugin context
* @param td record to insert
*/
static enum GNUNET_DB_QueryStatus
irbt_cb_table_withdraw_age_reveals (struct PostgresClosure *pg,
const struct TALER_EXCHANGEDB_TableData *td)
{
struct GNUNET_PQ_QueryParam params[] = {
GNUNET_PQ_query_param_uint64 (&td->serial),
#if FIXME_OEC
GNUNET_PQ_query_param_auto_from_type (
&td->details.withdraw_age_reveals.h_commitment),
#endif
GNUNET_PQ_query_param_uint32 (
&td->details.withdraw_age_reveals.freshcoin_index),
GNUNET_PQ_query_param_uint64 (
&td->details.withdraw_age_reveals.denominations_serial),
GNUNET_PQ_query_param_end
};
PREPARE (pg,
"insert_into_table_withdraw_age_reveals",
"INSERT INTO withdraw_age_reveals"
"(withdraw_age_reveals_id"
",FIXME_OEC"
",freshcoin_index"
",denominations_serial"
",FIXME_OEC"
") VALUES "
"($1, $2, $3, $4, $5);");
return GNUNET_PQ_eval_prepared_non_select (pg->conn,
"insert_into_table_withdraw_age_reveals",
params);
}
enum GNUNET_DB_QueryStatus enum GNUNET_DB_QueryStatus
TEH_PG_insert_records_by_table (void *cls, TEH_PG_insert_records_by_table (void *cls,
const struct TALER_EXCHANGEDB_TableData *td) const struct TALER_EXCHANGEDB_TableData *td)
@ -2007,8 +2283,25 @@ TEH_PG_insert_records_by_table (void *cls,
case TALER_EXCHANGEDB_RT_PROFIT_DRAINS: case TALER_EXCHANGEDB_RT_PROFIT_DRAINS:
rh = &irbt_cb_table_profit_drains; rh = &irbt_cb_table_profit_drains;
break; break;
case TALER_EXCHANGEDB_RT_AML_STAFF:
rh = &irbt_cb_table_aml_staff;
break;
case TALER_EXCHANGEDB_RT_AML_HISTORY:
rh = &irbt_cb_table_aml_history;
break;
case TALER_EXCHANGEDB_RT_KYC_ATTRIBUTES:
rh = &irbt_cb_table_kyc_attributes;
break;
case TALER_EXCHANGEDB_RT_PURSE_DELETION:
rh = &irbt_cb_table_purse_deletion;
break;
case TALER_EXCHANGEDB_RT_WITHDRAW_AGE_COMMITMENTS:
rh = &irbt_cb_table_withdraw_age_commitments;
break;
case TALER_EXCHANGEDB_RT_WITHDRAW_AGE_REVEALS:
rh = &irbt_cb_table_withdraw_age_reveals;
break;
} }
if (NULL == rh) if (NULL == rh)
{ {
GNUNET_break (0); GNUNET_break (0);