maplestory/backend/routes/boss/selections.js

59 lines
1.6 KiB
JavaScript
Raw Normal View History

import { Router } from 'express';
import { requireAuth } from '../../middleware/auth.js';
import { UserBossSelection, BossDifficulty, Boss } from '../../models/index.js';
const router = Router();
// 내 캐릭터별 보스 선택 현황
router.get('/', requireAuth, async (req, res) => {
try {
const selections = await UserBossSelection.findAll({
where: { user_id: req.session.userId },
include: [{
model: BossDifficulty,
as: 'difficulty',
include: [{ model: Boss }],
}],
});
res.json(selections);
} catch (err) {
console.error('선택 조회 오류:', err.message);
res.status(500).json({ error: '보스 선택 조회 실패' });
}
});
// 캐릭터별 보스 선택 저장
router.put('/:characterId', requireAuth, async (req, res) => {
const { characterId } = req.params;
const { selections } = req.body; // [{ boss_difficulty_id, party_size }]
try {
// 기존 선택 삭제
await UserBossSelection.destroy({
where: {
user_id: req.session.userId,
user_character_id: characterId,
},
});
// 새 선택 생성
if (selections?.length) {
await UserBossSelection.bulkCreate(
selections.map((s) => ({
user_id: req.session.userId,
user_character_id: characterId,
boss_difficulty_id: s.boss_difficulty_id,
party_size: s.party_size || 1,
}))
);
}
res.json({ success: true });
} catch (err) {
console.error('선택 저장 오류:', err.message);
res.status(500).json({ error: '보스 선택 저장 실패' });
}
});
export default router;