-- Таблица для сопоставлений адресов из Doma.AI с домами в локальной БД
CREATE TABLE IF NOT EXISTS doma_address_mappings (
  id                BIGSERIAL PRIMARY KEY,
  doma_address      TEXT NOT NULL UNIQUE, -- Адрес из Doma.AI
  building_id       VARCHAR(50) NOT NULL REFERENCES buildings(id) ON DELETE CASCADE,
  created_at        TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  updated_at        TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE INDEX IF NOT EXISTS idx_doma_address_mappings_doma_address ON doma_address_mappings(doma_address);
CREATE INDEX IF NOT EXISTS idx_doma_address_mappings_building ON doma_address_mappings(building_id);

-- Таблица для сопоставлений имён сотрудников из Doma.AI с сотрудниками в локальной БД
CREATE TABLE IF NOT EXISTS doma_employee_mappings (
  id                BIGSERIAL PRIMARY KEY,
  doma_name         TEXT NOT NULL UNIQUE, -- Имя из Doma.AI
  employee_id       VARCHAR(50) NOT NULL REFERENCES employees(id) ON DELETE CASCADE,
  created_at        TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  updated_at        TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

CREATE INDEX IF NOT EXISTS idx_doma_employee_mappings_doma_name ON doma_employee_mappings(doma_name);
CREATE INDEX IF NOT EXISTS idx_doma_employee_mappings_employee ON doma_employee_mappings(employee_id);

-- Таблица для ожидающих подтверждения сопоставлений
CREATE TABLE IF NOT EXISTS pending_doma_mappings (
  id                BIGSERIAL PRIMARY KEY,
  type              VARCHAR(20) NOT NULL CHECK (type IN ('building', 'employee')),
  doma_value        TEXT NOT NULL, -- Адрес или имя из Doma.AI
  suggested_id      VARCHAR(50), -- Предложенный ID существующей записи
  suggested_name    TEXT, -- Название предложенной записи для отображения
  created_at        TIMESTAMPTZ NOT NULL DEFAULT NOW(),
  resolved_at       TIMESTAMPTZ,
  resolved_by       TEXT, -- Кто разрешил (user_id или 'system')
  resolution        VARCHAR(20) CHECK (resolution IN ('approved', 'rejected', 'new')), -- approved = использовать suggested_id, rejected = игнорировать, new = создать новую
  resolved_id       VARCHAR(50) -- ID, который был использован после разрешения
);

CREATE INDEX IF NOT EXISTS idx_pending_mappings_type ON pending_doma_mappings(type);
CREATE INDEX IF NOT EXISTS idx_pending_mappings_resolved ON pending_doma_mappings(resolved_at);
