52 lines
1.9 KiB
SQL
52 lines
1.9 KiB
SQL
|
|
-- Home Security Agent — observaties voor dashboard :8765 (schema agent.*)
|
||
|
|
|
||
|
|
CREATE SCHEMA IF NOT EXISTS agent;
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS agent.observation_runs (
|
||
|
|
id bigserial PRIMARY KEY,
|
||
|
|
observed_at timestamptz NOT NULL,
|
||
|
|
total_checks integer NOT NULL DEFAULT 0,
|
||
|
|
failed_checks integer NOT NULL DEFAULT 0,
|
||
|
|
summary jsonb NOT NULL DEFAULT '{}',
|
||
|
|
decision jsonb,
|
||
|
|
created_at timestamptz NOT NULL DEFAULT now()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS ix_agent_runs_observed
|
||
|
|
ON agent.observation_runs (observed_at DESC);
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS agent.findings (
|
||
|
|
id bigserial PRIMARY KEY,
|
||
|
|
run_id bigint NOT NULL REFERENCES agent.observation_runs(id) ON DELETE CASCADE,
|
||
|
|
kind text NOT NULL,
|
||
|
|
name text NOT NULL,
|
||
|
|
ok boolean NOT NULL,
|
||
|
|
detail text,
|
||
|
|
meta jsonb NOT NULL DEFAULT '{}',
|
||
|
|
created_at timestamptz NOT NULL DEFAULT now()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS ix_agent_findings_run ON agent.findings (run_id);
|
||
|
|
CREATE INDEX IF NOT EXISTS ix_agent_findings_failed ON agent.findings (run_id, ok) WHERE NOT ok;
|
||
|
|
|
||
|
|
CREATE TABLE IF NOT EXISTS agent.incidents (
|
||
|
|
id bigserial PRIMARY KEY,
|
||
|
|
run_id bigint REFERENCES agent.observation_runs(id) ON DELETE SET NULL,
|
||
|
|
fingerprint text NOT NULL,
|
||
|
|
severity text NOT NULL,
|
||
|
|
title text NOT NULL,
|
||
|
|
body text,
|
||
|
|
notified boolean NOT NULL DEFAULT false,
|
||
|
|
created_at timestamptz NOT NULL DEFAULT now()
|
||
|
|
);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS ix_agent_incidents_created
|
||
|
|
ON agent.incidents (created_at DESC);
|
||
|
|
|
||
|
|
CREATE INDEX IF NOT EXISTS ix_agent_incidents_fp
|
||
|
|
ON agent.incidents (fingerprint, created_at DESC);
|
||
|
|
|
||
|
|
GRANT USAGE ON SCHEMA agent TO PUBLIC;
|
||
|
|
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA agent TO PUBLIC;
|
||
|
|
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA agent TO PUBLIC;
|