25 lines
1019 B
SQL
25 lines
1019 B
SQL
-- +goose Up
|
|
CREATE TABLE IF NOT EXISTS user_email_login_otps (
|
|
id BINARY(16) NOT NULL,
|
|
user_id BINARY(16) NOT NULL,
|
|
otp_hash BINARY(32) NOT NULL,
|
|
expires_at DATETIME(6) NOT NULL,
|
|
used_at DATETIME(6) NULL,
|
|
attempt_count INT NOT NULL DEFAULT 0,
|
|
max_attempts INT NOT NULL DEFAULT 5,
|
|
resend_count INT NOT NULL DEFAULT 1,
|
|
last_sent_at DATETIME(6) NOT NULL,
|
|
created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
|
|
created_by BINARY(16) NULL,
|
|
updated_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
|
|
updated_by BINARY(16) NULL,
|
|
PRIMARY KEY (id),
|
|
KEY idx_user_email_login_otps_user_id (user_id),
|
|
KEY idx_user_email_login_otps_expires_at (expires_at),
|
|
KEY idx_user_email_login_otps_used_at (used_at),
|
|
CONSTRAINT fk_user_email_login_otps_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ON UPDATE CASCADE
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
|
|
-- +goose Down
|
|
DROP TABLE IF EXISTS user_email_login_otps;
|