59 lines
1.6 KiB
JavaScript
59 lines
1.6 KiB
JavaScript
|
|
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;
|