CREATE EXTENSION IF NOT EXISTS timescaledb; CREATE TABLE IF NOT EXISTS monitor_identity (singleton boolean PRIMARY KEY DEFAULT true CHECK(singleton), source_id text NOT NULL); INSERT INTO monitor_identity(singleton,source_id) VALUES(true,gen_random_uuid()::text) ON CONFLICT DO NOTHING; CREATE TABLE IF NOT EXISTS monitor_samples ( seq bigint GENERATED ALWAYS AS IDENTITY, observed_at timestamptz NOT NULL, payload jsonb NOT NULL, PRIMARY KEY(observed_at,seq) ); SELECT create_hypertable('monitor_samples',by_range('observed_at',INTERVAL '1 hour'),if_not_exists=>true); CREATE INDEX IF NOT EXISTS monitor_samples_cursor ON monitor_samples(seq); CREATE TABLE IF NOT EXISTS monitor_definitions(singleton boolean PRIMARY KEY DEFAULT true CHECK(singleton),payload jsonb NOT NULL); REVOKE ALL ON DATABASE mission_core_monitor FROM PUBLIC;