All files / src/storage gpx-content-store.ts

0% Statements 0/0
0% Branches 1/1
0% Functions 1/1
0% Lines 0/0

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>;
}