대표 이미지 저장 기능 구현
This commit is contained in:
@@ -616,6 +616,7 @@ export const getComponentFiles = async (
|
||||
regdate: file.regdate?.toISOString(),
|
||||
status: file.status,
|
||||
isTemplate, // 템플릿 파일 여부 표시
|
||||
isRepresentative: file.is_representative || false, // 대표 파일 여부
|
||||
});
|
||||
|
||||
const formattedTemplateFiles = templateFiles.map((file) =>
|
||||
@@ -1088,5 +1089,68 @@ export const getFileByToken = async (req: Request, res: Response) => {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* 대표 파일 설정
|
||||
*/
|
||||
export const setRepresentativeFile = async (
|
||||
req: AuthenticatedRequest,
|
||||
res: Response
|
||||
): Promise<void> => {
|
||||
try {
|
||||
const { objid } = req.params;
|
||||
const companyCode = req.user?.companyCode;
|
||||
|
||||
// 파일 존재 여부 및 권한 확인
|
||||
const fileRecord = await queryOne<any>(
|
||||
`SELECT * FROM attach_file_info WHERE objid = $1 AND status = $2`,
|
||||
[parseInt(objid), "ACTIVE"]
|
||||
);
|
||||
|
||||
if (!fileRecord) {
|
||||
res.status(404).json({
|
||||
success: false,
|
||||
message: "파일을 찾을 수 없습니다.",
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// 멀티테넌시: 회사 코드 확인
|
||||
if (companyCode !== "*" && fileRecord.company_code !== companyCode) {
|
||||
res.status(403).json({
|
||||
success: false,
|
||||
message: "접근 권한이 없습니다.",
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
// 같은 target_objid의 다른 파일들의 is_representative를 false로 설정
|
||||
await query<any>(
|
||||
`UPDATE attach_file_info
|
||||
SET is_representative = false
|
||||
WHERE target_objid = $1 AND objid != $2`,
|
||||
[fileRecord.target_objid, parseInt(objid)]
|
||||
);
|
||||
|
||||
// 선택한 파일을 대표 파일로 설정
|
||||
await query<any>(
|
||||
`UPDATE attach_file_info
|
||||
SET is_representative = true
|
||||
WHERE objid = $1`,
|
||||
[parseInt(objid)]
|
||||
);
|
||||
|
||||
res.json({
|
||||
success: true,
|
||||
message: "대표 파일이 설정되었습니다.",
|
||||
});
|
||||
} catch (error) {
|
||||
console.error("대표 파일 설정 오류:", error);
|
||||
res.status(500).json({
|
||||
success: false,
|
||||
message: "대표 파일 설정 중 오류가 발생했습니다.",
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
// Multer 미들웨어 export
|
||||
export const uploadMiddleware = upload.array("files", 10); // 최대 10개 파일
|
||||
|
||||
Reference in New Issue
Block a user