22 lines
1.0 KiB
MySQL
22 lines
1.0 KiB
MySQL
|
|
-- Audit log gets two new columns so the inspector can surface system
|
||
|
|
-- events alongside user actions on a single timeline.
|
||
|
|
--
|
||
|
|
-- severity: 'info' | 'warning' | 'error' | 'critical'
|
||
|
|
-- default 'info'. Most user actions are 'info'; a permission
|
||
|
|
-- denied is 'warning'; a webhook DLQ entry is 'error'; a
|
||
|
|
-- hard-delete or a CRITICAL alert is 'critical'.
|
||
|
|
--
|
||
|
|
-- source: 'user' | 'system' | 'auth' | 'webhook' | 'cron' | 'job'
|
||
|
|
-- default 'user'. Lets the UI filter "show me only the
|
||
|
|
-- system events" without grepping action names.
|
||
|
|
--
|
||
|
|
-- Both default-friendly + nullable-friendly so the back-history rows
|
||
|
|
-- retain their existing semantics ('user' / 'info').
|
||
|
|
|
||
|
|
ALTER TABLE audit_logs
|
||
|
|
ADD COLUMN IF NOT EXISTS severity text NOT NULL DEFAULT 'info',
|
||
|
|
ADD COLUMN IF NOT EXISTS source text NOT NULL DEFAULT 'user';
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_al_severity ON audit_logs (port_id, severity, created_at);
|
||
|
|
CREATE INDEX IF NOT EXISTS idx_al_source ON audit_logs (port_id, source, created_at);
|