diff options
author | Marcello Stanisci <stanisci.m@gmail.com> | 2018-07-18 11:26:11 +0200 |
---|---|---|
committer | Marcello Stanisci <stanisci.m@gmail.com> | 2018-07-18 11:29:30 +0200 |
commit | 9942032ae9f48cc08dcfc57382d2bd4226b898b3 (patch) | |
tree | 9b16e6cff55532933fbd447138f8c13a67cd2db5 | |
parent | 1e09a0660e6e78d6e6ad247ad9c6294e53c47627 (diff) |
Add "general_id" for merchants into the DB system.
-rw-r--r-- | src/exchangedb/plugin_exchangedb_postgres.c | 28 | ||||
-rw-r--r-- | src/exchangedb/test_exchangedb.c | 3 | ||||
-rw-r--r-- | src/include/taler_exchangedb_plugin.h | 5 |
3 files changed, 31 insertions, 5 deletions
diff --git a/src/exchangedb/plugin_exchangedb_postgres.c b/src/exchangedb/plugin_exchangedb_postgres.c index c600020c1..6aeeff64a 100644 --- a/src/exchangedb/plugin_exchangedb_postgres.c +++ b/src/exchangedb/plugin_exchangedb_postgres.c @@ -431,10 +431,20 @@ postgres_create_tables (void *cls) ",buf BYTEA NOT NULL" ");"), + + /** + * The 'general_id' column represents _some_ identificator + * from the institution that cares about the merchant KYC status. + * If the institution is a bank, then this values might be + * _any_ alphanumeric code that uniquely identifies that merchant + * at that bank. Could also be NULL, if that bank's policy + * admits so. + */ GNUNET_PQ_make_execute("CREATE TABLE IF NOT EXISTS kyc_merchants " "(merchant_serial_id BIGSERIAL PRIMARY KEY" ",kyc_checked BOOLEAN NOT NULL DEFAULT FALSE" ",payto_url VARCHAR UNIQUE NOT NULL" + ",general_id VARCHAR NOT NULL" ");"), GNUNET_PQ_make_try_execute ("CREATE INDEX kyc_merchants_payto_url ON " @@ -1309,7 +1319,8 @@ postgres_prepare (PGconn *db_conn) GNUNET_PQ_make_prepare ("get_kyc_status", "SELECT" - " kyc_checked" + " general_id" + ",kyc_checked" ",merchant_serial_id" " FROM kyc_merchants" " WHERE payto_url=$1", @@ -1317,9 +1328,11 @@ postgres_prepare (PGconn *db_conn) GNUNET_PQ_make_prepare ("insert_kyc_merchant", "INSERT INTO kyc_merchants " - "(payto_url, kyc_checked) VALUES " - "($1, FALSE)", - 1), + "(payto_url" + ",general_id" + ",kyc_checked) VALUES " + "($1, $2, FALSE)", + 2), /* NOTE: NOT used yet, just _potentially_ needed. */ @@ -6771,6 +6784,7 @@ postgres_get_kyc_status (void *cls, uint8_t status; uint64_t merchant_serial_id; enum GNUNET_DB_QueryStatus qs; + char *general_id; struct GNUNET_PQ_QueryParam params[] = { GNUNET_PQ_query_param_string (payto_url), @@ -6779,11 +6793,12 @@ postgres_get_kyc_status (void *cls, struct GNUNET_PQ_ResultSpec rs[] = { + GNUNET_PQ_result_spec_string ("general_id", + &general_id), GNUNET_PQ_result_spec_auto_from_type ("kyc_checked", &status), GNUNET_PQ_result_spec_uint64 ("merchant_serial_id", &merchant_serial_id), - GNUNET_PQ_result_spec_end }; @@ -6798,6 +6813,7 @@ postgres_get_kyc_status (void *cls, ksc (ksc_cls, payto_url, + general_id, status, merchant_serial_id); @@ -6816,10 +6832,12 @@ postgres_get_kyc_status (void *cls, static enum GNUNET_DB_QueryStatus postgres_insert_kyc_merchant (void *cls, struct TALER_EXCHANGEDB_Session *session, + const char *general_id, const char *payto_url) { struct GNUNET_PQ_QueryParam params[] = { GNUNET_PQ_query_param_string (payto_url), + GNUNET_PQ_query_param_string (general_id), GNUNET_PQ_query_param_end }; return GNUNET_PQ_eval_prepared_non_select (session->conn, diff --git a/src/exchangedb/test_exchangedb.c b/src/exchangedb/test_exchangedb.c index 0bff60f90..16467d578 100644 --- a/src/exchangedb/test_exchangedb.c +++ b/src/exchangedb/test_exchangedb.c @@ -349,6 +349,7 @@ never_called_cb (void *cls, * * @param cls closure * @param payto_url payto URL of this particular merchant (bank account) + * @param general_id general identificator valid at the KYC-caring institution * @param kyc_checked status of KYC check: if GNUNET_OK, the merchant was * checked at least once, never otherwise. * @param merchant_serial_id serial ID identifying this merchant (bank @@ -358,6 +359,7 @@ never_called_cb (void *cls, static void kcs (void *cls, const char *payto_url, + const char *general_id, uint8_t kyc_checked, uint64_t merchant_serial_id) { @@ -2239,6 +2241,7 @@ run (void *cls) FAILIF (GNUNET_OK != plugin->insert_kyc_merchant (NULL, session, + "dummy", // NULL segfaults. "payto://mock")); FAILIF (GNUNET_OK != plugin->mark_kyc_merchant (NULL, diff --git a/src/include/taler_exchangedb_plugin.h b/src/include/taler_exchangedb_plugin.h index 60d1221aa..2b2d43074 100644 --- a/src/include/taler_exchangedb_plugin.h +++ b/src/include/taler_exchangedb_plugin.h @@ -717,6 +717,7 @@ typedef int * * @param cls closure * @param payto_url payto URL of this particular merchant (bank account) + * @param general_id general identificator valid at the KYC-caring institution * @param kyc_checked status of KYC check: if GNUNET_OK, the merchant was * checked at least once, never otherwise. * @param merchant_serial_id serial ID identifying this merchant (bank @@ -726,6 +727,7 @@ typedef int typedef void (*TALER_EXCHANGEDB_KycStatusCallback)(void *cls, const char *payto_url, + const char *general_id, uint8_t kyc_checked, uint64_t merchant_serial_id); @@ -2246,6 +2248,8 @@ struct TALER_EXCHANGEDB_Plugin * * @param cls closure * @param session db session + * @param general_id identificator at the KYC-aware institution, + * can be NULL if this is in-line wiht the rules. * @param payto_url payto:// URL indentifying the merchant * bank account. * @return database transaction status. @@ -2253,6 +2257,7 @@ struct TALER_EXCHANGEDB_Plugin enum GNUNET_DB_QueryStatus (*insert_kyc_merchant)(void *cls, struct TALER_EXCHANGEDB_Session *session, + const char *general_id, const char *payto_url); /** |