관계도 저장 시 모달 및 이름 중복 안내 구현

This commit is contained in:
hyeonsu
2025-09-19 15:47:35 +09:00
parent 11b1743f6b
commit 61aac5c5c3
6 changed files with 411 additions and 200 deletions

View File

@@ -143,16 +143,36 @@ export const createDataflowDiagram = async (req: Request, res: Response) => {
message: "관계도가 성공적으로 생성되었습니다.",
});
} catch (error) {
logger.error("관계도 생성 실패:", error);
// 디버깅을 위한 에러 정보 출력
logger.error("에러 디버깅:", {
errorType: typeof error,
errorCode: (error as any)?.code,
errorMessage: error instanceof Error ? error.message : "Unknown error",
errorName: (error as any)?.name,
errorMeta: (error as any)?.meta,
});
// 중복 이름 에러 처리
if (error instanceof Error && error.message.includes("unique constraint")) {
// 중복 이름 에러인지 먼저 확인 (로그 출력 전에)
const isDuplicateError =
(error && typeof error === "object" && (error as any).code === "P2002") || // Prisma unique constraint error code
(error instanceof Error &&
(error.message.includes("unique constraint") ||
error.message.includes("Unique constraint") ||
error.message.includes("duplicate key") ||
error.message.includes("UNIQUE constraint failed") ||
error.message.includes("unique_diagram_name_per_company")));
if (isDuplicateError) {
// 중복 에러는 콘솔에 로그 출력하지 않음
return res.status(409).json({
success: false,
message: "이미 존재하는 관계도 이름입니다.",
message: "중복된 이름입니다.",
});
}
// 다른 에러만 로그 출력
logger.error("관계도 생성 실패:", error);
return res.status(500).json({
success: false,
message: "관계도 생성 중 오류가 발생했습니다.",
@@ -214,6 +234,25 @@ export const updateDataflowDiagram = async (req: Request, res: Response) => {
message: "관계도가 성공적으로 수정되었습니다.",
});
} catch (error) {
// 중복 이름 에러인지 먼저 확인 (로그 출력 전에)
const isDuplicateError =
(error && typeof error === "object" && (error as any).code === "P2002") || // Prisma unique constraint error code
(error instanceof Error &&
(error.message.includes("unique constraint") ||
error.message.includes("Unique constraint") ||
error.message.includes("duplicate key") ||
error.message.includes("UNIQUE constraint failed") ||
error.message.includes("unique_diagram_name_per_company")));
if (isDuplicateError) {
// 중복 에러는 콘솔에 로그 출력하지 않음
return res.status(409).json({
success: false,
message: "중복된 이름입니다.",
});
}
// 다른 에러만 로그 출력
logger.error("관계도 수정 실패:", error);
return res.status(500).json({
success: false,