diff --git a/services/scheduleService.js b/services/scheduleService.js index 9b6f6b81914ad8876cec5bf52f0cb23529a99919..7fd1707a4d49fe9f43b38d22c644ad88f605ddb7 100644 --- a/services/scheduleService.js +++ b/services/scheduleService.js @@ -19,6 +19,8 @@ class schedulService { * �ъ슜�� �ㅼ�以� �앹꽦 */ async createSchedule({ userId, title, start_time, end_time, is_fixed }) { + const transaction = await Schedule.sequelize.transaction(); + try { // �쇱젙 �쒖옉 �쒓컙 - 醫낅즺 �쒓컙 �좏슚�� 寃��� @@ -41,9 +43,11 @@ class schedulService { expiry_date: is_fixed ? null : this.getNextMonday() }; - const schedule = await Schedule.create(scheduleData); + const schedule = await Schedule.create(scheduleData, { transaction }); + await transaction.commit(); return schedule; } catch (error) { + await transaction.rollback(); throw new Error(`Failed to create schedule: ${error.message}`); } } @@ -52,6 +56,8 @@ class schedulService { * �ъ슜�� �ㅼ�以� �섏젙 */ async updateSchedule(id, userId, updateData) { + const transaction = await Schedule.sequelize.transaction(); + try { const schedule = await Schedule.findOne({ where: { id, user_id: userId } @@ -75,9 +81,11 @@ class schedulService { // �ㅼ�以� ���� 蹂�寃쏀븯吏� 紐삵븯�꾨줉 update媛� ��젣 -> 湲곗〈媛� �좎� delete updateData.is_fixed; - await schedule.update(updateData); + await schedule.update(updateData, { transaction }); + await transaction.commit(); return schedule; } catch (error) { + await transaction.rollback(); throw new Error(`Failed to update schedule: ${error.message}`); } } @@ -86,17 +94,22 @@ class schedulService { * �ъ슜�� �ㅼ�以� ��젣 */ async deleteSchedule(id, userId) { + const transaction = await Schedule.sequelize.transaction(); + try { const schedule = await Schedule.destroy({ - where: { id, user_id: userId } + where: { id, user_id: userId }, + transaction }); if (!schedule) { throw new Error('Schedule not found'); } + await transaction.commit(); return true; } catch (error) { + await transaction.rollback(); throw new Error(`Failed to delete schedule: ${error.message}`); } }