25 lines
925 B
SQL
25 lines
925 B
SQL
ALTER TABLE queue_tickets
|
|
ADD COLUMN personal_data_purged_at timestamptz,
|
|
ALTER COLUMN phone_ciphertext DROP NOT NULL,
|
|
ALTER COLUMN phone_nonce DROP NOT NULL,
|
|
ALTER COLUMN phone_hmac DROP NOT NULL;
|
|
|
|
ALTER TABLE queue_tickets
|
|
DROP CONSTRAINT queue_tickets_phone_nonce_check,
|
|
DROP CONSTRAINT queue_tickets_phone_hmac_check,
|
|
ADD CONSTRAINT queue_tickets_phone_pair_check CHECK (
|
|
(phone_ciphertext IS NULL AND phone_nonce IS NULL AND phone_hmac IS NULL)
|
|
OR (
|
|
phone_ciphertext IS NOT NULL
|
|
AND phone_nonce IS NOT NULL
|
|
AND octet_length(phone_nonce) = 12
|
|
AND phone_hmac IS NOT NULL
|
|
AND phone_hmac ~ '^[0-9a-f]{64}$'
|
|
)
|
|
);
|
|
|
|
CREATE INDEX queue_tickets_personal_purge_idx
|
|
ON queue_tickets (personal_data_purge_at, id)
|
|
WHERE status IN ('COMPLETED', 'MISSED', 'CANCELED')
|
|
AND personal_data_purged_at IS NULL;
|