From 6fd4ae8b771d37d0d66cd31caf440fe61e14c91c Mon Sep 17 00:00:00 2001
From: tpgus2603 <kakaneymar2424@gmail.com>
Date: Sun, 8 Dec 2024 18:56:44 +0900
Subject: [PATCH] =?UTF-8?q?refactor:=20=EC=97=B0=EA=B4=80=EA=B4=80?=
 =?UTF-8?q?=EA=B3=84=20=EC=BA=90=EC=8A=A4=EC=BA=90=EC=9D=B4=EB=94=A9=20?=
 =?UTF-8?q?=EC=84=A4=EC=A0=95=20=EC=B6=94=EA=B0=80(#25)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

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

diff --git a/models/index.js b/models/index.js
index 7c656bc..7caa672 100644
--- a/models/index.js
+++ b/models/index.js
@@ -10,35 +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', 
+});
+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',
+});
 
-FcmToken.belongsTo(User, { foreignKey: 'userId', as: 'user' });
-User.hasMany(FcmToken, { foreignKey: 'userId', as: 'fcmTokenList' });
-
-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