diff --git a/models/index.js b/models/index.js index 7c656bce5e72aacf3846966653feac308ca30f29..7caa67277dc86e3f1dcc043a15e8897cbc7ee641 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,