Skip to content
Snippets Groups Projects
Commit 6578e4bf authored by MinJae Kwon's avatar MinJae Kwon
Browse files

fix: add missing endpoint

parent 9dbde0fa
No related branches found
No related tags found
No related merge requests found
...@@ -49,6 +49,54 @@ exports.createCrew = async (req, res) => { ...@@ -49,6 +49,54 @@ exports.createCrew = async (req, res) => {
} }
}; };
exports.listCrewMembers = async (req, res) => {
try {
const {crewID} = req.params;
// 해당 크루 정보 조회
const crew = await Crew.findByPk(crewID, {
attributes: ['crewID', 'name'], // 필요한 크루 정보만 가져옴
});
if (!crew) {
return res.status(404).json({error: '해당 크루가 존재하지 않습니다.'});
}
// 해당 크루에 가입된 유저 목록과 역할 정보 조회
const users = await User.findAll({
include: [
{
model: UserCrew,
as: 'userCrews', // 관계에 대해 명시적으로 선언
where: {crewID},
attributes: ['role'], // UserCrew의 역할 정보 포함
},
],
attributes: ['userID', 'name', 'email'], // 유저 정보만 반환
});
// 역할 정보를 포함한 멤버 리스트 생성
const members = users.map((user) => {
const {userID, name, email} = user;
const role = user.userCrews[0]?.role || 'Unknown'; // UserCrew 테이블에서 역할 정보 가져오기
return {userID, name, email, role};
});
// 응답 데이터 구성
const response = {
crewID: crew.crewID,
name: crew.name,
currentMemberCount: members.length,
members,
};
res.status(200).json(response);
} catch (error) {
console.error('크루 멤버 조회 중 오류:', error);
res.status(500).json({error: '크루 멤버 조회 중 오류가 발생했습니다.'});
}
};
// 크루 가입 컨트롤러 // 크루 가입 컨트롤러
exports.joinCrew = async (req, res) => { exports.joinCrew = async (req, res) => {
const {crewID} = req.params; const {crewID} = req.params;
......
...@@ -25,6 +25,9 @@ router.get('/', crewController.getCrews); ...@@ -25,6 +25,9 @@ router.get('/', crewController.getCrews);
// 특정 크루의 이벤트 조회 API // 특정 크루의 이벤트 조회 API
router.get('/:crewID/events', crewController.getEventsByCrew); router.get('/:crewID/events', crewController.getEventsByCrew);
// 크루 멤버 조회 API
router.get('/:crewID/members', authMiddleware, crewController.listCrewMembers);
// 크루 멤버 추가 (가입) API // 크루 멤버 추가 (가입) API
router.post('/:crewID/members', authMiddleware, crewController.joinCrew); router.post('/:crewID/members', authMiddleware, crewController.joinCrew);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment