18 lines
660 B
SQL
18 lines
660 B
SQL
ALTER TABLE users
|
|
ADD COLUMN email_verified BOOLEAN NOT NULL DEFAULT TRUE;
|
|
|
|
CREATE TABLE account_email_tokens (
|
|
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
|
|
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
token_hash CHAR(64) NOT NULL UNIQUE,
|
|
purpose VARCHAR(32) NOT NULL,
|
|
expires_at TIMESTAMP NOT NULL,
|
|
consumed_at TIMESTAMP,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT account_email_tokens_purpose_check
|
|
CHECK (purpose IN ('EMAIL_VERIFICATION', 'PASSWORD_RESET'))
|
|
);
|
|
|
|
CREATE INDEX idx_account_email_tokens_lookup
|
|
ON account_email_tokens (token_hash, purpose);
|