19 lines
864 B
SQL
19 lines
864 B
SQL
CREATE TABLE IF NOT EXISTS activity_logs (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
actor_id BIGINT NULL,
|
|
actor_role TEXT NULL,
|
|
action TEXT NOT NULL,
|
|
resource_type TEXT NOT NULL,
|
|
resource_id BIGINT NULL,
|
|
message TEXT NULL,
|
|
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
|
|
ip_address TEXT NULL,
|
|
user_agent TEXT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_activity_logs_created_at ON activity_logs (created_at DESC);
|
|
CREATE INDEX IF NOT EXISTS idx_activity_logs_actor ON activity_logs (actor_id, created_at DESC);
|
|
CREATE INDEX IF NOT EXISTS idx_activity_logs_resource ON activity_logs (resource_type, resource_id, created_at DESC);
|
|
CREATE INDEX IF NOT EXISTS idx_activity_logs_action ON activity_logs (action, created_at DESC);
|