/**
 * رابط فضای ذخیره فایل (عکس محصولات).
 * پیاده‌سازی‌ها: local (دیسک همین سرور) و s3 (هر سرویس سازگار با S3، مثل فضای ابری ابرآروان).
 * برای سرویس جدید فقط یک فایل با همین رابط کافی است.
 */
export interface FileStorage {
  id: string;
  /** ذخیره فایل با کلید داده‌شده (مثل products/13/abc-800.webp) */
  put(key: string, body: Buffer, contentType: string): Promise<void>;
  /** حذف چند فایل؛ نبودن فایل خطا نیست */
  remove(keys: string[]): Promise<void>;
  /** آدرس عمومی فایل برای نمایش در سایت */
  publicUrl(key: string): string;
  /** تبدیل آدرس عمومی به کلید (برای حذف)؛ اگر آدرس متعلق به این فضا نباشد undefined */
  keyFromUrl(url: string): string | undefined;
}
