Перейти к содержанию

Хранилище (PostgreSQL)

Таблица messages

CREATE TABLE IF NOT EXISTS messages (
  id           UUID PRIMARY KEY,
  to_user      TEXT        NOT NULL,
  header       BYTEA,
  nonce        BYTEA       NOT NULL,
  cipher       BYTEA       NOT NULL,
  created_at   TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  delivered_at TIMESTAMPTZ,
  expires_at   TIMESTAMPTZ
);
CREATE INDEX IF NOT EXISTS idx_inbox_pending
  ON messages (to_user, created_at) WHERE delivered_at IS NULL;
CREATE INDEX IF NOT EXISTS idx_expiry ON messages (expires_at);
  • Доставленные удаляются спустя RETAIN_DELIVERED_MINUTES.
  • Недоставленные — по RETAIN_UNDELIVERED_DAYS.
  • Узлы‑почтовики могут реплицировать по NODE_PEERS (опционально).