-- Create activity logging table -- Migration: 018_create_activity_logs_table.up.sql -- Activity logs table CREATE TABLE IF NOT EXISTS activity_logs ( id TEXT PRIMARY KEY, user_id TEXT NOT NULL, action VARCHAR(50) NOT NULL, target_type VARCHAR(50) NOT NULL, target_id TEXT NOT NULL, metadata JSONB, ip_address VARCHAR(45), user_agent TEXT, timestamp TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW() ); -- Create indexes for activity_logs CREATE INDEX IF NOT EXISTS idx_activity_logs_user_id ON activity_logs(user_id); CREATE INDEX IF NOT EXISTS idx_activity_logs_action ON activity_logs(action); CREATE INDEX IF NOT EXISTS idx_activity_logs_target_type ON activity_logs(target_type); CREATE INDEX IF NOT EXISTS idx_activity_logs_target_id ON activity_logs(target_id); CREATE INDEX IF NOT EXISTS idx_activity_logs_timestamp ON activity_logs(timestamp); -- Composite index for common queries CREATE INDEX IF NOT EXISTS idx_activity_logs_user_timestamp ON activity_logs(user_id, timestamp DESC); CREATE INDEX IF NOT EXISTS idx_activity_logs_target ON activity_logs(target_type, target_id, timestamp DESC); -- Add foreign key constraint ALTER TABLE activity_logs ADD CONSTRAINT fk_activity_logs_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;