29 lines
1.0 KiB
SQL
29 lines
1.0 KiB
SQL
ALTER TABLE users
|
|
DROP COLUMN IF EXISTS email_verified;
|
|
|
|
CREATE TABLE IF NOT EXISTS account_tokens (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
purpose VARCHAR(30) NOT NULL CHECK (purpose = 'password_reset'),
|
|
token_hash TEXT NOT NULL UNIQUE,
|
|
expires_at TIMESTAMP NOT NULL,
|
|
used_at TIMESTAMP,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
DELETE FROM account_tokens WHERE purpose = 'verify_email';
|
|
|
|
ALTER TABLE account_tokens DROP CONSTRAINT IF EXISTS account_tokens_purpose_check;
|
|
ALTER TABLE account_tokens ADD CONSTRAINT account_tokens_purpose_check
|
|
CHECK (purpose = 'password_reset');
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_account_tokens_lookup
|
|
ON account_tokens (token_hash, purpose, expires_at);
|
|
|
|
ALTER TABLE concert_attendance
|
|
DROP CONSTRAINT IF EXISTS concert_attendance_status_check;
|
|
|
|
ALTER TABLE concert_attendance
|
|
ADD CONSTRAINT concert_attendance_status_check
|
|
CHECK (status IN ('attending', 'maybe', 'ticket_search', 'ticket_offer'));
|