fix(purchase): 작업일정 삭제 시 관련 데이터 캐스케이드 삭제 (admin 전용)
- 삭제 권한을 admin 전용으로 변경 (requireAdmin) - 트랜잭션으로 reports → checkins → safety_education → schedule 순서 삭제 - 프론트엔드: admin만 삭제 버튼 표시, 종속 데이터 삭제 경고 추가 - 404 처리 및 한국어 에러 메시지 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -113,8 +113,25 @@ async function updateStatus(id, status) {
|
||||
}
|
||||
|
||||
async function deleteSchedule(id) {
|
||||
const schedule = await findById(id);
|
||||
if (!schedule) return null;
|
||||
|
||||
const db = getPool();
|
||||
await db.query('DELETE FROM partner_schedules WHERE id = ?', [id]);
|
||||
const conn = await db.getConnection();
|
||||
try {
|
||||
await conn.beginTransaction();
|
||||
await conn.query('DELETE FROM partner_work_reports WHERE schedule_id = ?', [id]);
|
||||
await conn.query('DELETE FROM partner_work_checkins WHERE schedule_id = ?', [id]);
|
||||
await conn.query("DELETE FROM safety_education_reports WHERE target_type = 'partner_schedule' AND target_id = ?", [id]);
|
||||
await conn.query('DELETE FROM partner_schedules WHERE id = ?', [id]);
|
||||
await conn.commit();
|
||||
return true;
|
||||
} catch (err) {
|
||||
await conn.rollback();
|
||||
throw err;
|
||||
} finally {
|
||||
conn.release();
|
||||
}
|
||||
}
|
||||
|
||||
async function findActiveByCompany(companyId) {
|
||||
|
||||
Reference in New Issue
Block a user