데이터 관계도 삭제, 복사 구현

This commit is contained in:
2025-09-09 13:10:03 +09:00
parent 3a24fd3ebd
commit 142cfe022b
5 changed files with 393 additions and 33 deletions

View File

@@ -718,3 +718,111 @@ export async function getDiagramRelationships(
res.status(500).json(response);
}
}
/**
* 관계도 복사
*/
export async function copyDiagram(
req: AuthenticatedRequest,
res: Response
): Promise<void> {
try {
const { diagramName } = req.params;
const companyCode = (req.user as any)?.company_code || "*";
if (!diagramName) {
const response: ApiResponse<null> = {
success: false,
message: "관계도 이름이 필요합니다.",
error: {
code: "MISSING_DIAGRAM_NAME",
details: "diagramName 파라미터가 필요합니다.",
},
};
res.status(400).json(response);
return;
}
const dataflowService = new DataflowService();
const newDiagramName = await dataflowService.copyDiagram(
companyCode,
decodeURIComponent(diagramName)
);
const response: ApiResponse<{ newDiagramName: string }> = {
success: true,
message: "관계도가 성공적으로 복사되었습니다.",
data: { newDiagramName },
};
res.status(200).json(response);
} catch (error) {
logger.error("관계도 복사 실패:", error);
const response: ApiResponse<null> = {
success: false,
message: "관계도 복사에 실패했습니다.",
error: {
code: "DIAGRAM_COPY_FAILED",
details:
error instanceof Error
? error.message
: "알 수 없는 오류가 발생했습니다.",
},
};
res.status(500).json(response);
}
}
/**
* 관계도 삭제
*/
export async function deleteDiagram(
req: AuthenticatedRequest,
res: Response
): Promise<void> {
try {
const { diagramName } = req.params;
const companyCode = (req.user as any)?.company_code || "*";
if (!diagramName) {
const response: ApiResponse<null> = {
success: false,
message: "관계도 이름이 필요합니다.",
error: {
code: "MISSING_DIAGRAM_NAME",
details: "diagramName 파라미터가 필요합니다.",
},
};
res.status(400).json(response);
return;
}
const dataflowService = new DataflowService();
const deletedCount = await dataflowService.deleteDiagram(
companyCode,
decodeURIComponent(diagramName)
);
const response: ApiResponse<{ deletedCount: number }> = {
success: true,
message: "관계도가 성공적으로 삭제되었습니다.",
data: { deletedCount },
};
res.status(200).json(response);
} catch (error) {
logger.error("관계도 삭제 실패:", error);
const response: ApiResponse<null> = {
success: false,
message: "관계도 삭제에 실패했습니다.",
error: {
code: "DIAGRAM_DELETE_FAILED",
details:
error instanceof Error
? error.message
: "알 수 없는 오류가 발생했습니다.",
},
};
res.status(500).json(response);
}
}