diff --git a/backend/routes/admin.js b/backend/routes/admin.js index cb3cba6..c9b4169 100644 --- a/backend/routes/admin.js +++ b/backend/routes/admin.js @@ -1103,7 +1103,24 @@ router.delete( return res.status(404).json({ error: "카테고리를 찾을 수 없습니다." }); } - // TODO: 해당 카테고리를 사용하는 일정이 있는지 확인 + // 기본 카테고리는 삭제 불가 + if (existing[0].is_default === 1) { + return res + .status(400) + .json({ error: "기본 카테고리는 삭제할 수 없습니다." }); + } + + // 해당 카테고리를 사용하는 일정이 있는지 확인 + const [usedSchedules] = await pool.query( + "SELECT COUNT(*) as count FROM schedules WHERE category_id = ?", + [id] + ); + if (usedSchedules[0].count > 0) { + return res.status(400).json({ + error: `해당 카테고리를 사용하는 일정이 ${usedSchedules[0].count}개 있어 삭제할 수 없습니다.`, + }); + } + await pool.query("DELETE FROM schedule_categories WHERE id = ?", [id]); res.json({ message: "카테고리가 삭제되었습니다." }); diff --git a/frontend/src/pages/pc/admin/AdminScheduleCategory.jsx b/frontend/src/pages/pc/admin/AdminScheduleCategory.jsx index ded9802..8f97904 100644 --- a/frontend/src/pages/pc/admin/AdminScheduleCategory.jsx +++ b/frontend/src/pages/pc/admin/AdminScheduleCategory.jsx @@ -266,12 +266,21 @@ function AdminScheduleCategory() { > - + {category.is_default ? ( + + + + ) : ( + + )} ))}