16 lines
607 B
SQL
16 lines
607 B
SQL
CREATE TABLE IF NOT EXISTS app.users (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
email VARCHAR(255) UNIQUE NOT NULL,
|
|
username VARCHAR(50) UNIQUE NOT NULL,
|
|
password_hash VARCHAR(255) NOT NULL,
|
|
is_active BOOLEAN DEFAULT TRUE,
|
|
email_verified BOOLEAN DEFAULT FALSE,
|
|
failed_login_attempts INTEGER DEFAULT 0,
|
|
locked_until TIMESTAMP NULL,
|
|
last_login TIMESTAMP NULL,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_email ON app.users(email);
|
|
CREATE INDEX IF NOT EXISTS idx_username ON app.users(username); |