- база своя: два пула, захват одним UPDATE ... RETURNING, шаги схемы на goose под файловым замком, одна миграция начальной схемы вместо семи прежних - транспорт переписан на net/http: свои слои, свой ограничитель частоты, отдача файла с проверкой владельца; панель /_/ и пространство /api/ исчезли - по находкам ревью: журнал не пишет путь под корнем приложения, ключ бюджета читается справа налево, узнавание известного идёт читающим пулом
54 lines
3.2 KiB
Go
54 lines
3.2 KiB
Go
package entity
|
|
|
|
// Виды текста записи. Расшифровка и вычитанный текст читаются по открытию одной
|
|
// записи и лежат строками `texts`, а не колонками: колонкой на каждый вид схема
|
|
// росла бы с каждым новым видом, а необратимый шаг схемы платится за каждую
|
|
// такую колонку отдельно.
|
|
const (
|
|
// TextKindTranscript — сырая расшифровка, как её отдал распознаватель.
|
|
TextKindTranscript = "transcript"
|
|
// TextKindLiterary — вычитанный текст. Его считает отдельная задача; здесь
|
|
// заведено только место, куда он ляжет.
|
|
TextKindLiterary = "literary"
|
|
)
|
|
|
|
// Виды текста, которыми приложение спрашивает текст записи.
|
|
//
|
|
// Перечень закрыт, и каждое значение называет ровно одну хранимую вещь. Назван
|
|
// он так, а не парой «вид текста плюс форма показа», потому что реплики со
|
|
// временем — не вид текста: они лежат структурой разбора и принадлежат записи, а
|
|
// не тексту. Пара из двух параметров обещала бы сочетания, которых не существует.
|
|
//
|
|
// Вычитанный текст назван здесь вперёд, хотя считает его отдельная задача:
|
|
// перечень без него пришлось бы расширять правкой публичного контракта — того
|
|
// самого, который согласован один раз.
|
|
const (
|
|
// TextViewTranscript — сырая расшифровка сплошным текстом.
|
|
TextViewTranscript = TextKindTranscript
|
|
// TextViewLiterary — вычитанный текст сплошным.
|
|
TextViewLiterary = TextKindLiterary
|
|
// TextViewReplicas — реплики со временем.
|
|
TextViewReplicas = "replicas"
|
|
)
|
|
|
|
// IsKnownTextView — принадлежит ли вид закрытому перечню. Незаданный вид
|
|
// известным не считается: умолчание сделало бы ответ функцией того, что успел
|
|
// записать конвейер, а не состояния записи.
|
|
func IsKnownTextView(view string) bool {
|
|
switch view {
|
|
case TextViewTranscript, TextViewLiterary, TextViewReplicas:
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
// Text — один вид текста одной записи. Пара «запись и вид» уникальна: повтор
|
|
// прерванного шага иначе завёл бы второй комплект строк, и вопрос «какой текст
|
|
// отдавать человеку» стал бы вопросом порядка записи, а не состояния.
|
|
type Text struct {
|
|
Id string
|
|
RecordID string
|
|
Kind string
|
|
Contents string
|
|
}
|