- audiorecords вместо transcribe_jobs: приложения (texts, structures, recognitions, record_events, topics) живут своими коллекциями, ссылки на исходник и на приведённую копию перестали переставляться - рубеж называет достигнутое, отказ стал признаком остановки с причиной, а сторожей стало двое: число отказов и время в рубеже - воркеры потеряли специализацию, их число задаётся [pipeline] workers, шаг выбирается по рубежу, а захват отдаёт идентификатор и признак захвата
55 lines
3.7 KiB
Go
55 lines
3.7 KiB
Go
// 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")
|
|
}
|
|
|
|
func ptr[T any](v T) *T { return &v }
|