diff --git a/init-scripts/init-script.sql b/init-scripts/init-script.sql index 25f0dcc..ef67384 100644 --- a/init-scripts/init-script.sql +++ b/init-scripts/init-script.sql @@ -127,6 +127,25 @@ CREATE TABLE user_social_logins ( CREATE INDEX idx_users_email_lower ON users (LOWER(email)); CREATE INDEX idx_users_account_role ON users (account_role); +-- ======================================= +-- VERIFICATION CODES TABLE +-- ======================================= +CREATE TYPE verification_purpose AS ENUM ('email_verify', 'password_reset'); + +CREATE TABLE verification_codes ( + id BIGSERIAL PRIMARY KEY, + code CHAR(32) NOT NULL UNIQUE, + user_id CHAR(12) NOT NULL REFERENCES users(id) ON DELETE CASCADE, + purpose verification_purpose NOT NULL, + expires_at TIMESTAMPTZ NOT NULL, + used_at TIMESTAMPTZ, + created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() +); + +CREATE INDEX idx_verification_codes_code ON verification_codes (code); +CREATE INDEX idx_verification_codes_user_purpose ON verification_codes (user_id, purpose) WHERE used_at IS NULL; +CREATE INDEX idx_verification_codes_expires ON verification_codes (expires_at) WHERE used_at IS NULL; + -- ======================================= -- SERVICES TABLE -- =======================================