-- UP CREATE TABLE IF NOT EXISTS sessions ( session_id TEXT PRIMARY KEY, user_id TEXT, tenant_id TEXT DEFAULT 'default', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, metadata TEXT DEFAULT '{}' ); CREATE TABLE IF NOT EXISTS audit_log ( id INTEGER PRIMARY KEY AUTOINCREMENT, timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP, action TEXT NOT NULL, actor TEXT, resource_type TEXT, resource_id TEXT, details TEXT DEFAULT '{}', ip_address TEXT, tenant_id TEXT DEFAULT 'default' ); CREATE TABLE IF NOT EXISTS api_keys ( id INTEGER PRIMARY KEY AUTOINCREMENT, key_prefix TEXT NOT NULL, key_hash TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, expires_at TIMESTAMP, rotated_at TIMESTAMP, active INTEGER DEFAULT 1, tenant_id TEXT DEFAULT 'default' ); CREATE INDEX IF NOT EXISTS idx_sessions_tenant ON sessions(tenant_id); CREATE INDEX IF NOT EXISTS idx_audit_timestamp ON audit_log(timestamp); CREATE INDEX IF NOT EXISTS idx_audit_action ON audit_log(action); CREATE INDEX IF NOT EXISTS idx_api_keys_prefix ON api_keys(key_prefix); -- DOWN DROP TABLE IF EXISTS api_keys; DROP TABLE IF EXISTS audit_log; DROP TABLE IF EXISTS sessions;