9b4ca1482f
- Migration 003: alerts table with fingerprint UNIQUE, JSON label/annotation
columns, nullable ends_at, and indexed status/name/received_at
- POST /api/alertmanager/webhook — upserts each alert by fingerprint;
zero endsAt ("0001-01-01") stored as NULL (still firing)
- GET /api/alerts — filtered list (?status, ?name, ?from, ?to, ?limit)
- GET /api/alerts/{id} — single alert lookup
17 lines
680 B
SQL
17 lines
680 B
SQL
CREATE TABLE alerts (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
fingerprint TEXT NOT NULL UNIQUE,
|
|
name TEXT NOT NULL,
|
|
status TEXT NOT NULL CHECK(status IN ('firing', 'resolved')),
|
|
labels TEXT NOT NULL DEFAULT '{}',
|
|
annotations TEXT NOT NULL DEFAULT '{}',
|
|
starts_at INTEGER NOT NULL,
|
|
ends_at INTEGER,
|
|
generator_url TEXT NOT NULL DEFAULT '',
|
|
received_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))
|
|
);
|
|
|
|
CREATE INDEX alerts_status_idx ON alerts(status);
|
|
CREATE INDEX alerts_name_idx ON alerts(name);
|
|
CREATE INDEX alerts_received_at_idx ON alerts(received_at DESC);
|