-- Migration: 002_create_sessions -- Description: Create the sessions table for stateful authentication CREATE TABLE IF NOT EXISTS sessions ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE, token VARCHAR(64) NOT NULL UNIQUE, expires_at TIMESTAMPTZ NOT NULL, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), user_agent TEXT, ip_address VARCHAR(45) ); -- Index for token lookup (authentication) CREATE INDEX IF NOT EXISTS idx_sessions_token ON sessions(token); -- Index for user_id (session cleanup) CREATE INDEX IF NOT EXISTS idx_sessions_user_id ON sessions(user_id); -- Index for expiration cleanup CREATE INDEX IF NOT EXISTS idx_sessions_expires_at ON sessions(expires_at);