diff --git a/services/friendService.js b/services/friendService.js new file mode 100644 index 0000000000000000000000000000000000000000..8b93749c431a127d94bf87dc63605fedb1ff011f --- /dev/null +++ b/services/friendService.js @@ -0,0 +1,38 @@ +const { Op } = require('sequelize'); +const Friend = require('../models/Friend'); +const User = require('../models/user'); + +class friendService { + + /** + * 친구 요청 보내기 + * 나 자신에게 보내기 or 이미 존재하는 친구 -> X + * 이후, PENDING 상태로 변환 -> 수락/거절에 따라 변화 + */ + async sendFriendRequest(userId, friendId) { + if (userId === friendId) { + throw new Error('Cannot send friend request to yourself'); + } + + const existingFriend = await Friend.findOne({ + where: { + [Op.or]: [ + { user_id: userId, friend_id: friendId }, + { user_id: friendId, friend_id: userId } + ] + } + }); + + if (existingFriend) { + throw new Error('Friend request already exists'); + } + + return Friend.create({ + user_id: userId, + friend_id: friendId, + status: 'PENDING' + }); + } +} + +module.exports = new FriendService(); \ No newline at end of file