system auth

VersionManagerService

VersionManagerService

src/main/services/version-manager.service.ts


Для чого це

Виявляє що змінилось між запусками — версія або оператор. Очищає локальну БД щоб старі дані не заважали новій сесії. Викликається на кроці Login (крок 2).


Логіка checkVersionOnLogin(operatorFamilyId)

Читає app_version таблицю → порівнює версію і operatorFamilyId:

СитуаціяДія
Запису немає (перший запуск)Зберігає поточну версію і operatorFamilyId
Змінився operatorFamilyIdclearDataTables() — DELETE з усіх таблиць
Змінилась версіяhandleVersionChange()db.initializeTables() (зараз без DROP)
Змінилось обидваСпрацьовують обидва кейси
Нічого не змінилосьНічого не робить

Після змін → repository.updateVersion(currentVersion, operatorFamilyId).


Методи для ручних операцій

МетодЩо робить
clearTables(names[])DELETE FROM table для кожної — очищає дані, структура залишається
dropTables(names[])DROP TABLE IF EXISTS — повне видалення
dropAllTables(keep[])DROP всіх крім keep (default: ['app_version'])

Нюанси

  • Singleton через getInstance()
  • Зміна оператора = повне очищення — щоб дані одного оператора не змішувались з іншим на тому ж ПК. getAllTables() динамічно читає список з sqlite_master — очищає навіть нові таблиці
  • handleVersionChangetablesToDrop = [] зараз порожній. Місце для майбутніх міграцій при оновленні схеми
  • Всі помилки логуються і поглинаються — не блокують логін