aboutsummaryrefslogtreecommitdiff
path: root/src/exchangedb/0003-withdraw_age_reveals.sql
diff options
context:
space:
mode:
Diffstat (limited to 'src/exchangedb/0003-withdraw_age_reveals.sql')
-rw-r--r--src/exchangedb/0003-withdraw_age_reveals.sql31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/exchangedb/0003-withdraw_age_reveals.sql b/src/exchangedb/0003-withdraw_age_reveals.sql
index 2279c6474..3353d9367 100644
--- a/src/exchangedb/0003-withdraw_age_reveals.sql
+++ b/src/exchangedb/0003-withdraw_age_reveals.sql
@@ -25,7 +25,8 @@ DECLARE
BEGIN
PERFORM create_partitioned_table(
'CREATE TABLE %I'
- '(h_commitment BYTEA NOT NULL CHECK (LENGTH(h_commitment)=32)'
+ '(withdraw_age_reveals_id BIGINT GENERATED BY DEFAULT AS IDENTITY' -- UNIQUE
+ ',h_commitment BYTEA NOT NULL CHECK (LENGTH(h_commitment)=32)'
',freshcoin_index INT4 NOT NULL'
',denominations_serial INT8 NOT NULL'
',h_coin_ev BYTEA CHECK (LENGTH(h_coin_ev)=32)'
@@ -66,6 +67,29 @@ BEGIN
END
$$;
+CREATE FUNCTION constrain_table_withdraw_age_reveals(
+ IN partition_suffix VARCHAR
+)
+RETURNS void
+LANGUAGE plpgsql
+AS $$
+DECLARE
+ table_name VARCHAR DEFAULT 'withdraw_age_reveals';
+BEGIN
+ table_name = concat_ws('_', table_name, partition_suffix);
+
+ EXECUTE FORMAT (
+ 'ALTER TABLE ' || table_name ||
+ ' ADD CONSTRAINT ' || table_name || '_withdraw_age_reveals_id_key'
+ ' UNIQUE (withdraw_age_reveals_id);'
+ );
+ EXECUTE FORMAT (
+ 'ALTER TABLE ' || table_name ||
+ ' ADD CONSTRAINT ' || table_name || '_freshcoin_index_and_h_commitment_uniqueness'
+ ' UNIQUE (freshcoin_index, h_commitment);'
+ );
+END
+$$;
CREATE FUNCTION foreign_table_withdraw_age_reveals()
RETURNS void
@@ -104,6 +128,11 @@ INSERT INTO exchange_tables
,FALSE),
('withdraw_age_reveals'
,'exchange-0003'
+ ,'constrain'
+ ,TRUE
+ ,FALSE),
+ ('withdraw_age_reveals'
+ ,'exchange-0003'
,'foreign'
,TRUE
,FALSE);