blocks

Сервіс блокувань

Окремий екземпляр для кожної TU. Тримає індекс блокувань для швидкої перевірки RU.

BlockState {
  blockedByTU
  blockedByRU
}

Методи

  • isBlockedByRU(ruId)
  • isBlockedByTU(ruId)
  • isBlocked(ruId) — будь-який напрямок блокування;
  • replaceBlockedByRU(ruIds) — повна заміна списку;
  • updateMany(blockedRuIds, unblockedRuIds) — оновлення всіх RU, для яких прохід повернув явний стан;
  • update(ruId, state) — точкове оновлення; якщо RU є фаворитом, змінені поля також передаються у фаворит-сервіс.

Кожен прохід діалогів збирає два списки: blockedRuIds та unblockedRuIds, і передає їх у updateMany. Оновлюються тільки RU з цих списків. Відсутність RU у пройденій колонці не змінює його стан: він міг зникнути з неї з іншої причини, наприклад перестати бути активним фаворитом.

Точкова перевірка передає в update актуальне значення true або false.

Golden отримує повний актуальний список через окреме API та передає його у replaceBlockedByRU.

Таски та сендер перевіряють блокування тільки через цей сервіс.

blockedByTU і blockedByRU однаково називаються та працюють у всіх проєктах. Інших статусів блокування сервіс не має.

Для фаворитів джерелом цих полів є фаворит-сервіс. Block-сервіс лише будує з них runtime-індекс і далі отримує точкові або повні оновлення.

Golden може повернути blockedByRU для RU, якого ще немає у фаворитах. Такі id сервіс тримає у своєму списку; якщо RU стане фаворитом, значення переноситься в його blockedByRU.