25 lines
977 B
SQL
25 lines
977 B
SQL
-- 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;
|