Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • main
1 result

Target

Select target project
  • meanspec/meanspec-backend
1 result
Select Git revision
  • main
1 result
Show changes
Commits on Source (2)
......@@ -81,6 +81,18 @@ const myRepository = {
const { rowCount } = await pool.query(query, values);
return rowCount > 0;
},
async deleteCombinationById(combinationId) {
const query = `
UPDATE combinations
SET owner_id = NULL
WHERE id = $1
`;
const values = [combinationId];
const { rowCount } = await pool.query(query, values);
return rowCount > 0;
}
};
export default myRepository;
......@@ -21,6 +21,31 @@ myRouter.get(
})
);
myRouter.delete(
'/pc/:pcId',
authMiddleware,
wrapAsync(async (req, res) => {
const { pcId } = req.params;
const userId = req.user?.userId;
if (!userId) {
throw new ReportableError(400, '유효한 사용자 정보가 없습니다.');
}
if (!pcId) {
throw new ReportableError(400, 'PC ID가 필요합니다.');
}
const result = await myService.deleteUserPC(userId, pcId);
if (result.success) {
return res.sendResponse(result.message, 200, {});
} else {
throw new ReportableError(500, 'PC 삭제 중 문제가 발생했습니다.');
}
})
);
myRouter.patch(
'/pc/:combinationId/name',
authMiddleware,
......
......@@ -178,6 +178,36 @@ const myService = {
return await ShareRepository.createCombinationUuid(combinationId);
},
async deleteUserPC(userId, pcId) {
if (!userId || !pcId) {
throw new ReportableError(400, '유효한 사용자 ID 및 PC ID가 필요합니다.');
}
const userExists = await myRepository.checkUserExists(userId);
if (!userExists) {
throw new ReportableError(404, '사용자를 찾을 수 없습니다.');
}
const combination = await myRepository.getCombinationById(pcId);
if (!combination) {
throw new ReportableError(404, '해당 PC 조합을 찾을 수 없습니다.');
}
if (combination.userId !== userId) {
throw new ReportableError(403, '해당 PC 조합에 대한 권한이 없습니다.');
}
const deleted = await myRepository.deleteCombinationById(pcId);
if (!deleted) {
throw new ReportableError(500, 'PC 조합 삭제 중 문제가 발생했습니다.');
}
return {
success: true,
message: 'PC 조합이 성공적으로 삭제되었습니다.',
};
},
};
export default myService;