// Package migrations — шаги схемы хранилища и имена коллекций, которые они // заводят. // // Схема заводится версионированными шагами, и применённый шаг не переписывается // — только новым шагом. Инвариант проекта перенесён дословно: хранилище считает // применённое по **имени шага**, а не по пути файла, поэтому имена в // `Register` ниже не переносятся и не переименовываются, даже если файл переехал. // // Шаги лежат своим каталогом, а не файлом внутри пакета репозитория, и причина // внешняя: сверка документов ловит изменённый шаг схемы при нетронутом // `docs/database.md` по префиксу пути (`.av-dev.toml`, ключ `migrations` секции // `[docs]`), а префикс наводится только на каталог. Пока шаги лежали файлом, // наводить его // было не на что, и проверка молчала на всякой правке схемы. package migrations import ( pbmigrations "github.com/pocketbase/pocketbase/migrations" ) // Имена коллекций живут здесь, рядом с шагом, который их заводит. Они же — часть // пути к файлу в раскладке хранилища и часть адреса ссылки на него, поэтому // меняются только новым шагом схемы. const ( FilesCollection = "files" // JobsCollection — прежняя коллекция задач. Шаг 202608140002 её удаляет; // имя остаётся здесь, потому что на него ссылаются прежние шаги схемы, а // применённый шаг не переписывается. JobsCollection = "transcribe_jobs" // RecordsCollection — аудиозапись, центральная сущность сервиса. Имя в // snake_case, как у соседей по схеме: одно исключение разошлось бы молча по // константе имён, запросу захвата, правилам панели и запрету удаления. RecordsCollection = "audio_records" TextsCollection = "texts" StructuresCollection = "structures" RecognitionsCollection = "recognitions" RecordEventsCollection = "record_events" TopicsCollection = "topics" // UsersCollection заводит не наш шаг, а системный шаг библиотеки. Имя стоит // здесь потому, что на него ссылаются и шаги схемы, и проверка предъявителя // на приёме: строковый литерал в двух местах разошёлся бы молча. UsersCollection = "users" ) // Шаг регистрируется в списке приложения при загрузке пакета, а накатывает его // `apis.Serve` прежде, чем поднять сервер. func init() { pbmigrations.Register(up202608110001, down202608110001, "202608110001_init.go") pbmigrations.Register(up202608120001, down202608120001, "202608120001_oidc_login.go") pbmigrations.Register(up202608140001, down202608140001, "202608140001_record_owner.go") pbmigrations.Register(up202608140002, down202608140002, "202608140002_record_centric_model.go") pbmigrations.Register(up202608140003, down202608140003, "202608140003_owner_required.go") } func ptr[T any](v T) *T { return &v }