- записи, метаданные и файлы съехались под один каталог данных; появилась панель владельца, а gin, goqu, goose и требование CGO ушли - захват задачи стал одним запросом с RETURNING; заведены число попыток, состояние dead и нарастающая пауза вместо признака is_error - имя файла в хранилище задаёт сервис и в журнал не идёт: вместе с идентификатором записи оно собирало бы ссылку на скачивание
3.8 KiB
3.8 KiB
Каталог данных задаётся одним ключом [storage] data_dir
- Дата: 2026-08-12
- Источник: ../../openspec/changes/archive/2026-08-12-pocketbase-storage/design.md, раздел «Ключи конфигурации: два пути заменяются одним каталогом»
Решение
Ключи [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, а не на прежних путях. Данные при этом не переносятся по решению задачи, так что цена нулевая ровно сейчас и была бы не нулевой при переносе.