From dd9837ff8b5f5beb45c9eda24ecf4ec64cc85317 Mon Sep 17 00:00:00 2001 From: Marcello Stanisci Date: Tue, 10 Jul 2018 15:53:35 +0200 Subject: Put logic to delete KYC events for merchant --- src/exchangedb/plugin_exchangedb_postgres.c | 37 +++++++++++++++++++++++++++++ src/include/taler_exchangedb_plugin.h | 16 +++++++++++++ 2 files changed, 53 insertions(+) diff --git a/src/exchangedb/plugin_exchangedb_postgres.c b/src/exchangedb/plugin_exchangedb_postgres.c index a9ffbba86..67b0be4de 100644 --- a/src/exchangedb/plugin_exchangedb_postgres.c +++ b/src/exchangedb/plugin_exchangedb_postgres.c @@ -1301,6 +1301,12 @@ postgres_prepare (PGconn *db_conn) * 7 Change KYC status flag for a merchant. V */ + GNUNET_PQ_make_prepare ("clean_kyc_events", + "DELETE" + " FROM kyc_events" + " WHERE merchant_serial_id=$1", + 1), + /* Assume a merchant _unchecked_ if their events * are stored into the table queried below. */ GNUNET_PQ_make_prepare ("get_kyc_events", @@ -6564,9 +6570,39 @@ postgres_select_deposits_missing_wire (void *cls, return qs; } +/** + * Delete wire transfer records related to a particular merchant. + * This method would be called by the logic once that merchant + * gets successfully KYC checked. + * + * @param cls closure + * @param session DB session + * @param merchant_serial_id serial id of the merchant whose + * KYC records have to be deleted. + * @return DB transaction status. + */ +static enum GNUNET_DB_QueryStatus +postgres_clean_kyc_events (void *cls, + struct TALER_EXCHANGEDB_Session *session, + uint64_t merchant_serial_id) +{ + struct GNUNET_PQ_QueryParam params[] = { + GNUNET_PQ_query_param_uint64 (&merchant_serial_id), + GNUNET_PQ_query_param_end + }; + + return GNUNET_PQ_eval_prepared_non_select (session->conn, + "clean_kyv_events", + params); + +} + + /** * Mark a merchant as NOT KYC-checked. * + * @param cls closure + * @param session DB session * @param payto_url payto:// URL indentifying the merchant * to unmark. Note, different banks may have different * policies to check their customers. @@ -6944,6 +6980,7 @@ libtaler_plugin_exchangedb_postgres_init (void *cls) plugin->get_kyc_status = postgres_get_kyc_status; plugin->insert_kyc_event = postgres_insert_kyc_event; plugin->get_kyc_events = postgres_get_kyc_events; + plugin->clean_kyc_events = postgres_clean_kyc_events; return plugin; } diff --git a/src/include/taler_exchangedb_plugin.h b/src/include/taler_exchangedb_plugin.h index c0fcdaeef..60d1221aa 100644 --- a/src/include/taler_exchangedb_plugin.h +++ b/src/include/taler_exchangedb_plugin.h @@ -2340,6 +2340,22 @@ struct TALER_EXCHANGEDB_Plugin struct TALER_EXCHANGEDB_Session *session, uint64_t merchant_serial_id, struct TALER_Amount *amount); + + /** + * Delete wire transfer records related to a particular merchant. + * This method would be called by the logic once that merchant + * gets successfully KYC checked. + * + * @param cls closure + * @param session DB session + * @param merchant_serial_id serial id of the merchant whose + * KYC records have to be deleted. + * @return DB transaction status. + */ + enum GNUNET_DB_QueryStatus + (*clean_kyc_events)(void *cls, + struct TALER_EXCHANGEDB_Session *session, + uint64_t merchant_serial_id); }; #endif /* _TALER_EXCHANGE_DB_H */ -- cgit v1.2.3