-- Migration 004: Admin Audit Logs -- Tracks all admin actions for accountability and auditing -- Create audit_logs table CREATE TABLE IF NOT EXISTS audit_logs ( id SERIAL PRIMARY KEY, admin_id INTEGER NOT NULL REFERENCES users(id), action VARCHAR(100) NOT NULL, target_type VARCHAR(50) NOT NULL, -- 'game', 'user', 'report' target_id INTEGER NOT NULL, details JSONB, ip_address VARCHAR(45), -- Supports IPv6 created_at TIMESTAMP DEFAULT NOW() ); -- Create indexes for common queries CREATE INDEX IF NOT EXISTS idx_audit_logs_admin_id ON audit_logs(admin_id); CREATE INDEX IF NOT EXISTS idx_audit_logs_target ON audit_logs(target_type, target_id); CREATE INDEX IF NOT EXISTS idx_audit_logs_created_at ON audit_logs(created_at DESC); CREATE INDEX IF NOT EXISTS idx_audit_logs_action ON audit_logs(action); -- Grant permissions GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO gamearc; GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO gamearc;