Optional Postgres backend for larger deployments (SQLite remains the default).
Surfaces: REST API + dashboard + MCP tool. See ROADMAP.md.
Заметки из код-ревью (2026-07, готовность к миграции)
Главный блокер — синхронный API better-sqlite3 несущий по всему коду. Каждый репозиторий возвращает значения синхронно, сервисы/роуты на это опираются. Переход на Postgres форсит протаскивание async через весь код одним махом.
Рекомендация ревьюеров (сделать заранее, до роста кодовой базы): уже сейчас начать возвращать Promise из методов репозиториев (сервисы почти везде уже await), тогда смена драйвера станет локальной для db/, а не глобальным рефакторингом. Это дешевле сделать до Fleet-фазы (#25–29).
Сопутствующее:
Optional Postgres backend for larger deployments (SQLite remains the default).
Surfaces: REST API + dashboard + MCP tool. See ROADMAP.md.
Заметки из код-ревью (2026-07, готовность к миграции)
Главный блокер — синхронный API
better-sqlite3несущий по всему коду. Каждый репозиторий возвращает значения синхронно, сервисы/роуты на это опираются. Переход на Postgres форсит протаскиваниеasyncчерез весь код одним махом.Рекомендация ревьюеров (сделать заранее, до роста кодовой базы): уже сейчас начать возвращать
Promiseиз методов репозиториев (сервисы почти везде ужеawait), тогда смена драйвера станет локальной дляdb/, а не глобальным рефакторингом. Это дешевле сделать до Fleet-фазы (#25–29).Сопутствующее:
BEGIN DEFERRED+ синхронные колбэки). Для Postgres/мульти-инстанса переключить на одиночныйUPDATE … RETURNING(см. Fleet: instance registry #25). ОбщийJobTableRepository<T>сделает это точечно.DATABASE_URL— это путь к файлу, не URL; переименовать вDATABASE_PATHдо миграции, чтобы не создавать перегруз термина (см. Надёжность процесса: unhandledRejection/uncaughtException, closeIdleConnections, логирование catch, env-footguns #77 env-footguns).