- база своя: два пула, захват одним UPDATE ... RETURNING, шаги схемы на goose под файловым замком, одна миграция начальной схемы вместо семи прежних - транспорт переписан на net/http: свои слои, свой ограничитель частоты, отдача файла с проверкой владельца; панель /_/ и пространство /api/ исчезли - по находкам ревью: журнал не пишет путь под корнем приложения, ключ бюджета читается справа налево, узнавание известного идёт читающим пулом
37 lines
2.4 KiB
Go
37 lines
2.4 KiB
Go
package entity
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
// MaxRecordSize — потолок размера одного файла записи. Выведен из расчётного
|
|
// потолка записи в шесть часов с запасом на видео, а не из замера.
|
|
//
|
|
// Число называется **явно** везде, где иначе действует умолчание: у тела запроса
|
|
// приёма умолчание отсекало бы запись раньше, чем она дойдёт до обработчика — и
|
|
// без строки в журнале приёма. Умолчания здесь не «без предела», а величины на
|
|
// два-три порядка меньше нужного.
|
|
const MaxRecordSize int64 = 8 << 30 // 8 ГиБ
|
|
|
|
// File — одна физическая копия записи. Их ровно две: принятая и приведённая к
|
|
// рабочему формату. Копия во внешнем хранилище файлом записи не считается — она
|
|
// существует только потому, что провайдер читает аудио по адресу, и её ключ
|
|
// живёт в строке попытки распознавания.
|
|
type File struct {
|
|
Id string
|
|
// RecordID — запись, которой копия принадлежит. Копии одной записи лежат её
|
|
// подкаталогом, названным этим идентификатором: так они лежат вместе, а
|
|
// запись убирается целиком одним движением.
|
|
RecordID string
|
|
// FileName — имя, под которым файл лежит: имя задаёт сервис. Имя, данное
|
|
// отправителем, в него не попадает — от него взято только расширение.
|
|
FileName string
|
|
Size int64
|
|
// Format — расширение без точки, приведённое к нижнему регистру. Наружу оно
|
|
// выходит только через метку метрики, приведённую к перечню известных.
|
|
Format string
|
|
// DurationMs — длительность записи, если её удалось прочитать.
|
|
DurationMs int64
|
|
CreatedAt time.Time
|
|
}
|