-- Create sessions table CREATE TABLE IF NOT EXISTS sessions ( id UUID PRIMARY KEY, user_id UUID NOT NULL, token_hash VARCHAR(64) NOT NULL UNIQUE, ip_address VARCHAR(45), user_agent TEXT, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), expires_at TIMESTAMP WITH TIME ZONE NOT NULL, revoked_at TIMESTAMP WITH TIME ZONE, CONSTRAINT fk_sessions_users FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE ); -- Index for faster lookups/cleanup CREATE INDEX IF NOT EXISTS idx_sessions_user_id ON sessions(user_id); CREATE INDEX IF NOT EXISTS idx_sessions_expires_at ON sessions(expires_at); CREATE INDEX IF NOT EXISTS idx_sessions_revoked_at ON sessions(revoked_at);