package entity import ( "time" ) // Где лежит копия файла. Поле названо `location`, а не `storage`: последним // словом зовут само хранилище, и третий смысл у одного слова развёл бы по // разным вещам запись о файле и хранилище, в котором она лежит. const ( LocationLocal = "local" LocationS3 = "s3" ) // MaxRecordSize — потолок размера одного файла записи. Выведен из расчётного // потолка записи в шесть часов с запасом на видео, а не из замера. // // Число нужно назвать **явно** в двух местах сразу: у поля файла в хранилище // нулевой потолок значит не «без предела», а умолчание библиотеки в 5 МиБ, а у // тела запроса приёма умолчание роутера отсекало бы запись раньше, чем она // дойдёт до обработчика — без строки в журнале приёма. const MaxRecordSize int64 = 8 << 30 // 8 ГиБ // File — одна физическая копия: исходник, результат конвертации и копия во // внешнем хранилище — три разные записи. type File struct { Id string Location string // FileName — имя, под которым файл лежит: у местной копии это имя, заданное // сервисом, у внешней — ключ объекта. Своего суффикса хранилище к заданному // имени не дописывает: суффикс появляется только у имён, которые оно строит // само из имени отправителя, а это умолчание не применяется. FileName string Size int64 CreatedAt time.Time }