summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Grothoff <grothoff@gnunet.org>2022-12-27 03:31:13 +0100
committerChristian Grothoff <grothoff@gnunet.org>2022-12-27 03:31:13 +0100
commit871d010637205965dabb7f29e43679756a4449a6 (patch)
treed41995dc427030bf2ba68df6abb68a6a05c9711c /src
parent42e2726f43fcc497ca905fcd5f61758aa528f353 (diff)
downloadexchange-871d010637205965dabb7f29e43679756a4449a6.tar.gz
exchange-871d010637205965dabb7f29e43679756a4449a6.tar.bz2
exchange-871d010637205965dabb7f29e43679756a4449a6.zip
-expand tables
Diffstat (limited to 'src')
-rw-r--r--src/exchangedb/0003-kyc_attributes.sql33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/exchangedb/0003-kyc_attributes.sql b/src/exchangedb/0003-kyc_attributes.sql
index db7f2e1ed..1547466f8 100644
--- a/src/exchangedb/0003-kyc_attributes.sql
+++ b/src/exchangedb/0003-kyc_attributes.sql
@@ -27,7 +27,10 @@ BEGIN
'CREATE TABLE IF NOT EXISTS %I'
'(kyc_attributes_serial_id BIGINT GENERATED BY DEFAULT AS IDENTITY'
',h_payto BYTEA PRIMARY KEY CHECK (LENGTH(h_payto)=32)'
+ ',kyc_prox BYTEA NOT NULL CHECK (LENGTH(kyc_prox)=32)'
',provider VARCHAR NOT NULL'
+ ',birthdate VARCHAR'
+ ',collection_time INT8 NOT NULL'
',expiration_time INT8 NOT NULL'
',encrypted_attributes VARCHAR NOT NULL'
') %s ;'
@@ -47,6 +50,24 @@ BEGIN
,partition_suffix
);
PERFORM comment_partitioned_column(
+ 'short hash of normalized full name and birthdate; used to efficiently find likely duplicate users'
+ ,'kyc_prox'
+ ,table_name
+ ,partition_suffix
+ );
+ PERFORM comment_partitioned_column(
+ 'birth date of the user, in format YYYY-MM-DD where a value of 0 is used to indicate unknown (in official documents); NULL if the birth date was not collected by the provider; used for KYC-driven age restrictions'
+ ,'birthdate'
+ ,table_name
+ ,partition_suffix
+ );
+ PERFORM comment_partitioned_column(
+ 'time when the attributes were collected by the provider'
+ ,'collection_time'
+ ,table_name
+ ,partition_suffix
+ );
+ PERFORM comment_partitioned_column(
'time when the attributes should no longer be considered validated'
,'expiration_time'
,table_name
@@ -85,6 +106,18 @@ BEGIN
' ADD CONSTRAINT ' || table_name || '_serial_key '
'UNIQUE (kyc_attributes_serial_id)'
);
+ -- To search similar users (e.g. during AML checks)
+ EXECUTE FORMAT (
+ 'CREATE INDEX ' || table_name || '_similarity_index '
+ 'ON ' || table_name || ' '
+ '(kyc_prox);'
+ );
+ -- For garbage collection
+ EXECUTE FORMAT (
+ 'CREATE INDEX ' || table_name || '_expiration_time '
+ 'ON ' || table_name || ' '
+ '(expiration_time ASC);'
+ );
END $$;