import fs from 'fs';
import type { Express } from 'express';

export const DISK_FULL_MESSAGE =
  '저장 공간이 부족하여 파일을 업로드하지 못했습니다. 불필요한 파일을 삭제한 후 다시 시도해 주세요.';

export function isDiskFullError(err: unknown): boolean {
  if (!err || typeof err !== 'object') return false;
  const e = err as NodeJS.ErrnoException & { cause?: unknown };
  if (e.code === 'ENOSPC' || e.code === 'EDQUOT') return true;
  if (e.cause !== undefined) return isDiskFullError(e.cause);
  return false;
}

/** multer 업로드 실패 시 디스크에 남은 임시 파일 제거 */
export function cleanupUploadedFile(file?: Express.Multer.File | null) {
  if (!file?.path) return;
  try {
    if (fs.existsSync(file.path)) fs.unlinkSync(file.path);
  } catch {
    /* ignore */
  }
}
