17 lines
692 B
SQL
17 lines
692 B
SQL
-- Create login_history table to track user logins
|
|
CREATE TABLE IF NOT EXISTS login_history (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INTEGER NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
login_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
ip_address VARCHAR(45), -- IPv6 max length is 45 characters
|
|
user_agent TEXT,
|
|
success BOOLEAN NOT NULL DEFAULT TRUE,
|
|
failure_reason VARCHAR(255)
|
|
);
|
|
|
|
-- Create index on user_id for faster queries
|
|
CREATE INDEX IF NOT EXISTS idx_login_history_user_id ON login_history(user_id);
|
|
|
|
-- Create index on login_time for sorting
|
|
CREATE INDEX IF NOT EXISTS idx_login_history_login_time ON login_history(login_time DESC);
|