Files
transcriber/docs/adr/ADR-2026-08-12-single-data-dir-config-key.md
T
av 01cc31d45f хранилище, файлы записей и очередь переведены на встроенную PocketBase
- записи, метаданные и файлы съехались под один каталог данных; появилась
  панель владельца, а gin, goqu, goose и требование CGO ушли
- захват задачи стал одним запросом с RETURNING; заведены число попыток,
  состояние dead и нарастающая пауза вместо признака is_error
- имя файла в хранилище задаёт сервис и в журнал не идёт: вместе с
  идентификатором записи оно собирало бы ссылку на скачивание
2026-08-12 08:31:59 +03:00

3.8 KiB
Raw Blame History

Каталог данных задаётся одним ключом [storage] data_dir

Решение

Ключи [database] path и [storage] path уходят. Вместо них — один [storage] data_dir со значением data: база и файлы записей лежат под одним каталогом, и по-другому хранилище не умеет.

Выбор сделан человеком 2026-08-12 из трёх названных вариантов.

Почему

Имя ключа конфигурации проект объявил необратимым (../../CLAUDE.md, «Работа»): переименование правится не в одном файле, а в конфигурации на сервере и в выкладке, и молча ломает запуск. Поэтому выбор ушёл человеку, а не был принят по ходу.

Цитата источника о цене каждого варианта:

  • [storage] data_dirвыбрано. Ключ назван по назначению, как названы и сегодняшние; смена библиотеки через год имени не тронет. Слово storage при этом уже занято capability, но в конфигурации оно значит ровно то же — где лежат данные;
  • [pocketbase] data_dir — прямее всего читается тем, кто знает библиотеку, и вписывает имя поставщика в необратимый ключ. Смена библиотеки потребует второго необратимого переименования;
  • [data] dir — короче и нейтральнее всех, но data в проекте уже значит каталог на диске, и секция с таким именем читается как «настройки каталога», а не «настройки хранилища».

Запись попадает в журнал по дорогому откату: переименование ключа стоит правки конфигурации на сервере и в выкладке, а ошибка проявляется отказом старта.

Последствия

  • + имя ключа не называет поставщика, и смена библиотеки хранилища второго необратимого переименования не потребует.
  • + каталог данных один, и запрет «боевой каталог не трогать» покрывает и базу, и записи одной строкой.
  • слово storage в проекте теперь значит три вещи: capability, само хранилище и секцию конфигурации. Поле записи о файле от этого переименовано в location — чтобы смыслов было три, а не четыре.
  • прежние конфигурации несовместимы: сервис на старом config.toml поднимется на умолчании data, а не на прежних путях. Данные при этом не переносятся по решению задачи, так что цена нулевая ровно сейчас и была бы не нулевой при переносе.