Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /**
* Абстракция выдачи содержимого GPX. Реализации: локальная папка, позже — объектное хранилище и т.д.
*/
export type GpxContent = {
body: Buffer;
contentType: string;
};
export interface GpxContentStore {
getByFileName(fileName: string): Promise<GpxContent>;
/** Атомарно записать новый файл; если файл уже есть — ошибка домена. */
saveNew(fileName: string, body: Buffer): Promise<void>;
/** Удалить файл по имени (откат при ошибке БД). */
deleteByFileName(fileName: string): Promise<void>;
/**
* Перенести файл в «корзину» (soft-delete): из основного хранилища в trash.
* Идемпотентно: отсутствие исходника — не ошибка. Если trash не настроен — деградирует до удаления.
*/
archive(fileName: string): Promise<void>;
}
|