Files

30 lines
1.4 KiB
SQL
Raw Permalink Normal View History

-- +goose Up
-- Фаза 7: Web Push (AGENT.md 7.16).
--
-- Подписка браузера (Push API) живёт на устройстве: эндпоинт выдаёт push-сервис
-- (FCM/Mozilla/Apple), ключи p256dh/auth шифруют payload по RFC 8291. Один
-- пользователь может подписать несколько устройств, поэтому уникален эндпоинт,
-- а не пользователь: повторная подписка с того же устройства обновляет запись.
--
-- Счётчик неудач и время последнего успеха нужны, чтобы чистить мёртвые
-- подписки: push-сервис отвечает 404/410 на отозванные, а временные сбои
-- (5xx, 429) не должны удалять запись сразу.
CREATE TABLE push_subscriptions (
id INTEGER PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users (id) ON DELETE CASCADE,
endpoint TEXT NOT NULL UNIQUE,
p256dh TEXT NOT NULL,
auth TEXT NOT NULL,
user_agent TEXT NOT NULL DEFAULT '',
created_at TEXT NOT NULL,
last_success_at TEXT,
last_failure_at TEXT,
failure_count INTEGER NOT NULL DEFAULT 0
);
CREATE INDEX push_subscriptions_user_idx ON push_subscriptions (user_id);
-- +goose Down
DROP TABLE push_subscriptions;