Add @trails-cool/jobs package wrapping pg-boss for durable background job execution using the existing PostgreSQL database. Wire up planner session expiry as the first scheduled job (hourly, 7-day TTL) — this was previously dead code that never ran. Add placeholder worker to journal for future Komoot import and federation jobs. Infrastructure: grant grafana_reader access to pgboss schema, add job queue health panels to Service Health dashboard, add failed job alert. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
40 lines
1.7 KiB
SQL
40 lines
1.7 KiB
SQL
-- Enable pg_stat_statements for query performance monitoring
|
|
CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
|
|
|
|
-- Read-only user for Grafana dashboards
|
|
-- Password is set via: ALTER ROLE grafana_reader PASSWORD '<from SOPS>'
|
|
-- Run by cd-infra deploy script after container start
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = 'grafana_reader') THEN
|
|
CREATE ROLE grafana_reader WITH LOGIN;
|
|
END IF;
|
|
END
|
|
$$;
|
|
|
|
GRANT CONNECT ON DATABASE trails TO grafana_reader;
|
|
GRANT USAGE ON SCHEMA public TO grafana_reader;
|
|
GRANT SELECT ON ALL TABLES IN SCHEMA public TO grafana_reader;
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO grafana_reader;
|
|
|
|
-- Also grant on planner/journal schemas if they exist
|
|
DO $$
|
|
BEGIN
|
|
IF EXISTS (SELECT 1 FROM information_schema.schemata WHERE schema_name = 'planner') THEN
|
|
GRANT USAGE ON SCHEMA planner TO grafana_reader;
|
|
GRANT SELECT ON ALL TABLES IN SCHEMA planner TO grafana_reader;
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA planner GRANT SELECT ON TABLES TO grafana_reader;
|
|
END IF;
|
|
IF EXISTS (SELECT 1 FROM information_schema.schemata WHERE schema_name = 'journal') THEN
|
|
GRANT USAGE ON SCHEMA journal TO grafana_reader;
|
|
GRANT SELECT ON ALL TABLES IN SCHEMA journal TO grafana_reader;
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA journal GRANT SELECT ON TABLES TO grafana_reader;
|
|
END IF;
|
|
IF EXISTS (SELECT 1 FROM information_schema.schemata WHERE schema_name = 'pgboss') THEN
|
|
GRANT USAGE ON SCHEMA pgboss TO grafana_reader;
|
|
GRANT SELECT ON ALL TABLES IN SCHEMA pgboss TO grafana_reader;
|
|
ALTER DEFAULT PRIVILEGES IN SCHEMA pgboss GRANT SELECT ON TABLES TO grafana_reader;
|
|
END IF;
|
|
END
|
|
$$;
|