-- Migration: Create activity_logs table - uses UUID v7 -- Description: Stores activity logs for auditing and monitoring CREATE TABLE IF NOT EXISTS activity_logs ( id UUID PRIMARY KEY DEFAULT uuid_generate_v7(), user_id UUID REFERENCES users(id) ON DELETE SET NULL, tenant_id UUID, -- Activity Info action VARCHAR(100) NOT NULL, resource_type VARCHAR(50), resource_id VARCHAR(50), -- Details description TEXT, metadata JSONB, ip_address VARCHAR(45), user_agent TEXT, -- Metadata created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- Indexes for efficient querying CREATE INDEX IF NOT EXISTS idx_activity_logs_user ON activity_logs(user_id); CREATE INDEX IF NOT EXISTS idx_activity_logs_tenant ON activity_logs(tenant_id); CREATE INDEX IF NOT EXISTS idx_activity_logs_action ON activity_logs(action); CREATE INDEX IF NOT EXISTS idx_activity_logs_resource ON activity_logs(resource_type, resource_id); CREATE INDEX IF NOT EXISTS idx_activity_logs_created ON activity_logs(created_at DESC); COMMENT ON TABLE activity_logs IS 'Audit log of all system activities';