import type express from "express"; export class HttpError extends Error { constructor( public status: number, message: string, public code?: string, public details?: Record ) { super(message); } } /** * Firestore ALREADY_EXISTS 판별 — `create()`를 멱등 쓰기로 쓰는 경로에서 * "이미 존재"를 정상 분기로 처리하기 위한 것. 레포지토리·서비스 양쪽이 쓰므로 * 계층 역전이 없는 여기에 둔다. */ export function isAlreadyExistsError(err: unknown): boolean { const code = (err as { code?: unknown })?.code; return code === 6 || code === "already-exists" || code === "ALREADY_EXISTS"; } export function sendError(res: express.Response, err: unknown): void { if (err instanceof HttpError) { const body: Record = err.code ? { error: err.code, message: err.message } : { error: err.message }; if (err.details) Object.assign(body, err.details); res.status(err.status).json(body); return; } const message = err instanceof Error ? err.message : String(err); res.status(500).json({ error: message }); }