From 110c8109f1aba80bbded1ffb913e7d1df833d156 Mon Sep 17 00:00:00 2001
From: tpgus2603 <kakaneymar2424@gmail.com>
Date: Sun, 8 Dec 2024 18:44:14 +0900
Subject: [PATCH] =?UTF-8?q?refacotr:=20cascading=20=EC=97=B0=EA=B4=80=20?=
 =?UTF-8?q?=EA=B4=80=EA=B3=84=20=EC=84=A4=EC=A0=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 models/index.js | 116 +++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 95 insertions(+), 21 deletions(-)

diff --git a/models/index.js b/models/index.js
index 5218166..e76f633 100644
--- a/models/index.js
+++ b/models/index.js
@@ -10,32 +10,106 @@ const Invite =require('./invite')
 const MeetingParticipant = require('./meetingParticipant');
 // const ChatRooms = require('./ChatRooms');
 
-// 愿�怨� �ㅼ젙
-Friend.belongsTo(User, { foreignKey: 'requester_id', as: 'requester' }); // 移쒓뎄 �붿껌�� 蹂대궦 �ъ슜��
-Friend.belongsTo(User, { foreignKey: 'receiver_id', as: 'receiver' });   // 移쒓뎄 �붿껌�� 諛쏆� �ъ슜��
+// Friend 愿�怨� �ㅼ젙
+Friend.belongsTo(User, {
+  foreignKey: 'requester_id',
+  as: 'requester',
+  onDelete: 'CASCADE',
+});
+Friend.belongsTo(User, {
+  foreignKey: 'receiver_id',
+  as: 'receiver',
+  onDelete: 'CASCADE',
+});
+User.hasMany(Friend, {
+  foreignKey: 'requester_id',
+  as: 'sentRequests',
+  onDelete: 'CASCADE',
+});
+User.hasMany(Friend, {
+  foreignKey: 'receiver_id',
+  as: 'receivedRequests',
+  onDelete: 'CASCADE',
+});
 
-User.hasMany(Friend, { foreignKey: 'requester_id', as: 'sentRequests' }); // 移쒓뎄 �붿껌�� 蹂대궦 紐⑸줉
-User.hasMany(Friend, { foreignKey: 'receiver_id', as: 'receivedRequests' }); // 移쒓뎄 �붿껌�� 諛쏆� 紐⑸줉
-// �곌� 愿�怨� �ㅼ젙
-Meeting.belongsTo(User, { foreignKey: 'created_by', as: 'creator' });
-User.hasMany(Meeting, { foreignKey: 'created_by', as: 'meetings' });
+// Meeting 愿�怨� �ㅼ젙
+Meeting.belongsTo(User, {
+  foreignKey: 'created_by',
+  as: 'creator',
+  onDelete: 'SET NULL', // Meetings might persist even if the creator is deleted
+});
+User.hasMany(Meeting, {
+  foreignKey: 'created_by',
+  as: 'meetings',
+  onDelete: 'SET NULL',
+});
 
-MeetingParticipant.belongsTo(Meeting, { foreignKey: 'meeting_id', as: 'meeting' });
-Meeting.hasMany(MeetingParticipant, { foreignKey: 'meeting_id', as: 'participants' });
+// MeetingParticipant 愿�怨� �ㅼ젙
+MeetingParticipant.belongsTo(Meeting, {
+  foreignKey: 'meeting_id',
+  as: 'meeting',
+  onDelete: 'CASCADE',
+});
+Meeting.hasMany(MeetingParticipant, {
+  foreignKey: 'meeting_id',
+  as: 'participants',
+  onDelete: 'CASCADE',
+});
+MeetingParticipant.belongsTo(User, {
+  foreignKey: 'user_id',
+  as: 'user',
+  onDelete: 'CASCADE',
+});
+User.hasMany(MeetingParticipant, {
+  foreignKey: 'user_id',
+  as: 'meetingParticipations',
+  onDelete: 'CASCADE',
+});
 
-MeetingParticipant.belongsTo(User, { foreignKey: 'user_id', as: 'user' });
-User.hasMany(MeetingParticipant, { foreignKey: 'user_id', as: 'meetingParticipations' });
+// Schedule 愿�怨� �ㅼ젙
+Schedule.belongsTo(User, {
+  foreignKey: 'user_id',
+  as: 'user',
+  onDelete: 'CASCADE',
+});
+User.hasMany(Schedule, {
+  foreignKey: 'user_id',
+  as: 'schedules',
+  onDelete: 'CASCADE',
+});
 
-Schedule.belongsTo(User, { foreignKey: 'user_id', as: 'user' });
-User.hasMany(Schedule, { foreignKey: 'user_id', as: 'schedules' });
+// Invite 愿�怨� �ㅼ젙
+Invite.belongsTo(Meeting, {
+  foreignKey: 'meeting_id',
+  as: 'meeting',
+  onDelete: 'CASCADE',
+});
+Invite.belongsTo(User, {
+  foreignKey: 'inviter_id',
+  as: 'inviter',
+  onDelete: 'CASCADE',
+});
+Invite.belongsTo(User, {
+  foreignKey: 'invitee_id',
+  as: 'invitee',
+  onDelete: 'CASCADE',
+});
+User.hasMany(Invite, {
+  foreignKey: 'inviter_id',
+  as: 'sentInvites',
+  onDelete: 'CASCADE',
+});
+User.hasMany(Invite, {
+  foreignKey: 'invitee_id',
+  as: 'receivedInvites',
+  onDelete: 'CASCADE',
+});
+Meeting.hasMany(Invite, {
+  foreignKey: 'meeting_id',
+  as: 'invites',
+  onDelete: 'CASCADE',
+});
 
-Invite.belongsTo(Meeting, { foreignKey: 'meeting_id', as: 'meeting' });
-Invite.belongsTo(User, { foreignKey: 'inviter_id', as: 'inviter' }); // 珥덈��� �ъ슜��
-Invite.belongsTo(User, { foreignKey: 'invitee_id', as: 'invitee' }); // 珥덈�諛쏆� �ъ슜��
-
-User.hasMany(Invite, { foreignKey: 'inviter_id', as: 'sentInvites' }); // 蹂대궦 珥덈� 紐⑸줉
-User.hasMany(Invite, { foreignKey: 'invitee_id', as: 'receivedInvites' }); // 諛쏆� 珥덈� 紐⑸줉
-Meeting.hasMany(Invite, { foreignKey: 'meeting_id', as: 'invites' }); // �대떦 誘명똿�� 紐⑤뱺 珥덈�
 
 module.exports = {
     sequelize,
-- 
GitLab