-- 001_init.sql — initial schema for the unibus membership/key-distribution service.
-- Additive and idempotent: safe to apply repeatedly. Never modify this file;
-- schema changes go in new numbered migrations (see .claude/rules/db_migrations.md).

CREATE TABLE IF NOT EXISTS rooms (
  room_id        TEXT PRIMARY KEY,
  subject        TEXT NOT NULL,
  key_epoch      INTEGER NOT NULL DEFAULT 1,
  encrypt        INTEGER NOT NULL,
  persist        INTEGER NOT NULL,
  sign_msgs      INTEGER NOT NULL,
  owner_endpoint TEXT NOT NULL,
  created_at     TEXT NOT NULL
);

CREATE TABLE IF NOT EXISTS members (
  room_id   TEXT NOT NULL,
  endpoint  TEXT NOT NULL,
  role      TEXT NOT NULL,
  joined_at TEXT NOT NULL,
  sign_pub  BLOB NOT NULL,
  kex_pub   BLOB NOT NULL,
  PRIMARY KEY (room_id, endpoint)
);

CREATE TABLE IF NOT EXISTS room_keys (
  room_id    TEXT NOT NULL,
  epoch      INTEGER NOT NULL,
  endpoint   TEXT NOT NULL,
  sealed_key BLOB NOT NULL,
  PRIMARY KEY (room_id, epoch, endpoint)
);
