mirror of
https://github.com/zvx-echo6/central.git
synced 2026-05-22 10:34:43 +02:00
feat(schema): add adapter column to events, drop source
Replaces module-path-based source column (e.g. "central/adapters/nws") with stable adapter identifier (e.g. "nws") that foreign-keys to config.adapters.name. Migration 011: - ADD COLUMN adapter TEXT - Backfill via REPLACE(source, 'central/adapters/', '') - SET NOT NULL + FK RESTRICT - CREATE INDEX (adapter, received DESC) for dashboard queries - DROP COLUMN source Code changes: - Event model: source field renamed to adapter - All adapters: use adapter="name" instead of source="central/adapters/name" - Archive: write adapter column instead of source Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
4c9ca176a9
commit
8601a19f60
10 changed files with 150 additions and 18 deletions
|
|
@ -1,9 +1,12 @@
|
|||
-- Central Data Hub schema
|
||||
-- PostgreSQL 16 + TimescaleDB + PostGIS
|
||||
-- NOTE: Migrations in sql/migrations/ are the source of truth.
|
||||
-- This file is for reference and initial setup only.
|
||||
|
||||
CREATE TABLE IF NOT EXISTS events (
|
||||
id TEXT NOT NULL, -- CloudEvent id
|
||||
source TEXT NOT NULL, -- adapter identity
|
||||
adapter TEXT NOT NULL -- adapter identity (FK to config.adapters.name)
|
||||
REFERENCES config.adapters(name) ON DELETE RESTRICT,
|
||||
category TEXT NOT NULL, -- "wx.alert.<type>"
|
||||
time TIMESTAMPTZ NOT NULL, -- event-time UTC
|
||||
expires TIMESTAMPTZ,
|
||||
|
|
@ -21,6 +24,9 @@ SELECT create_hypertable('events', 'time', if_not_exists => TRUE);
|
|||
CREATE INDEX IF NOT EXISTS events_category_time_idx
|
||||
ON events (category, time DESC);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS events_adapter_received_idx
|
||||
ON events (adapter, received DESC);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS events_geom_gist
|
||||
ON events USING GIST (geom);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue