maplestory/backend/routes/symbol.js
caadiq eb4369d8fb 심볼 계산기/관리자 API 연동 및 입력 확장
- 공개 /api/symbols 엔드포인트 추가 (레벨 포함)
- 심볼 계산기가 DB 데이터 기반으로 탭·카드 구성, 하드코딩 data.js 제거
- 심볼 카드 입력: 일퀘/주간퀘 Select(회→개 표기)/추가 심볼 3열
- 카드 상단에 '금일 일퀘 완료/미완료' 토글 (완료=에메랄드, 미완료=빨간색)
- 관리자 페이지: 목록/폼 실 API 연결, dnd-kit 드래그 순서 변경,
  레벨별 메소 입력 쉼표 포매팅 및 한글 요약 표시

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-15 13:43:52 +09:00

39 lines
1.1 KiB
JavaScript

import { Router } from 'express';
import { Symbol, SymbolLevel } from '../models/index.js';
import { getPublicUrl } from '../lib/s3.js';
const router = Router();
router.get('/', async (_req, res) => {
try {
const rows = await Symbol.findAll({
order: [['sort_order', 'ASC'], ['id', 'ASC']],
include: [{ model: SymbolLevel, as: 'levels' }],
});
res.json(rows.map((s) => {
const j = s.toJSON();
return {
id: j.id,
type: j.type,
region: j.region,
image_url: j.image ? getPublicUrl(j.image) : null,
max_level: j.max_level,
daily_default: j.daily_default,
weekly_default: j.weekly_default,
sort_order: j.sort_order,
levels: (j.levels || [])
.sort((a, b) => a.level - b.level)
.map((l) => ({
level: l.level,
required_count: l.required_count,
meso_cost: Number(l.meso_cost),
})),
};
}));
} catch (err) {
console.error('심볼 목록 조회 오류:', err.message);
res.status(500).json({ error: '심볼 목록 조회 실패' });
}
});
export default router;