Files
XQKqueue/server/migrations/000007_personal_data_purge.up.sql
2026-07-12 15:53:24 +08:00

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;