테이블 노드 위치정보 저장 구현

This commit is contained in:
2025-09-10 17:48:55 +09:00
parent db509bb3d9
commit 72b0d2ee98
5 changed files with 116 additions and 26 deletions

View File

@@ -17,9 +17,17 @@ export const getDataflowDiagrams = async (req: Request, res: Response) => {
const page = parseInt(req.query.page as string) || 1;
const size = parseInt(req.query.size as string) || 20;
const searchTerm = req.query.searchTerm as string;
const companyCode = (req.query.companyCode as string) || req.headers["x-company-code"] as string || "*";
const companyCode =
(req.query.companyCode as string) ||
(req.headers["x-company-code"] as string) ||
"*";
const result = await getDataflowDiagramsService(companyCode, page, size, searchTerm);
const result = await getDataflowDiagramsService(
companyCode,
page,
size,
searchTerm
);
res.json({
success: true,
@@ -41,7 +49,10 @@ export const getDataflowDiagrams = async (req: Request, res: Response) => {
export const getDataflowDiagramById = async (req: Request, res: Response) => {
try {
const diagramId = parseInt(req.params.diagramId);
const companyCode = (req.query.companyCode as string) || req.headers["x-company-code"] as string || "*";
const companyCode =
(req.query.companyCode as string) ||
(req.headers["x-company-code"] as string) ||
"*";
if (isNaN(diagramId)) {
return res.status(400).json({
@@ -78,9 +89,24 @@ export const getDataflowDiagramById = async (req: Request, res: Response) => {
*/
export const createDataflowDiagram = async (req: Request, res: Response) => {
try {
const { diagram_name, relationships, company_code, created_by, updated_by } = req.body;
const companyCode = company_code || (req.query.companyCode as string) || req.headers["x-company-code"] as string || "*";
const userId = created_by || updated_by || req.headers["x-user-id"] as string || "SYSTEM";
const {
diagram_name,
relationships,
node_positions,
company_code,
created_by,
updated_by,
} = req.body;
const companyCode =
company_code ||
(req.query.companyCode as string) ||
(req.headers["x-company-code"] as string) ||
"*";
const userId =
created_by ||
updated_by ||
(req.headers["x-user-id"] as string) ||
"SYSTEM";
if (!diagram_name || !relationships) {
return res.status(400).json({
@@ -92,6 +118,7 @@ export const createDataflowDiagram = async (req: Request, res: Response) => {
const newDiagram = await createDataflowDiagramService({
diagram_name,
relationships,
node_positions,
company_code: companyCode,
created_by: userId,
updated_by: userId,
@@ -104,7 +131,7 @@ export const createDataflowDiagram = async (req: Request, res: Response) => {
});
} catch (error) {
logger.error("관계도 생성 실패:", error);
// 중복 이름 에러 처리
if (error instanceof Error && error.message.includes("unique constraint")) {
return res.status(409).json({
@@ -128,8 +155,12 @@ export const updateDataflowDiagram = async (req: Request, res: Response) => {
try {
const diagramId = parseInt(req.params.diagramId);
const { updated_by } = req.body;
const companyCode = (req.query.companyCode as string) || req.headers["x-company-code"] as string || "*";
const userId = updated_by || req.headers["x-user-id"] as string || "SYSTEM";
const companyCode =
(req.query.companyCode as string) ||
(req.headers["x-company-code"] as string) ||
"*";
const userId =
updated_by || (req.headers["x-user-id"] as string) || "SYSTEM";
if (isNaN(diagramId)) {
return res.status(400).json({
@@ -143,7 +174,11 @@ export const updateDataflowDiagram = async (req: Request, res: Response) => {
updated_by: userId,
};
const updatedDiagram = await updateDataflowDiagramService(diagramId, updateData, companyCode);
const updatedDiagram = await updateDataflowDiagramService(
diagramId,
updateData,
companyCode
);
if (!updatedDiagram) {
return res.status(404).json({
@@ -173,7 +208,10 @@ export const updateDataflowDiagram = async (req: Request, res: Response) => {
export const deleteDataflowDiagram = async (req: Request, res: Response) => {
try {
const diagramId = parseInt(req.params.diagramId);
const companyCode = (req.query.companyCode as string) || req.headers["x-company-code"] as string || "*";
const companyCode =
(req.query.companyCode as string) ||
(req.headers["x-company-code"] as string) ||
"*";
if (isNaN(diagramId)) {
return res.status(400).json({
@@ -211,9 +249,18 @@ export const deleteDataflowDiagram = async (req: Request, res: Response) => {
export const copyDataflowDiagram = async (req: Request, res: Response) => {
try {
const diagramId = parseInt(req.params.diagramId);
const { new_name, companyCode: bodyCompanyCode, userId: bodyUserId } = req.body;
const companyCode = bodyCompanyCode || (req.query.companyCode as string) || req.headers["x-company-code"] as string || "*";
const userId = bodyUserId || req.headers["x-user-id"] as string || "SYSTEM";
const {
new_name,
companyCode: bodyCompanyCode,
userId: bodyUserId,
} = req.body;
const companyCode =
bodyCompanyCode ||
(req.query.companyCode as string) ||
(req.headers["x-company-code"] as string) ||
"*";
const userId =
bodyUserId || (req.headers["x-user-id"] as string) || "SYSTEM";
if (isNaN(diagramId)) {
return res.status(400).json({
@@ -222,7 +269,12 @@ export const copyDataflowDiagram = async (req: Request, res: Response) => {
});
}
const copiedDiagram = await copyDataflowDiagramService(diagramId, companyCode, new_name, userId);
const copiedDiagram = await copyDataflowDiagramService(
diagramId,
companyCode,
new_name,
userId
);
if (!copiedDiagram) {
return res.status(404).json({