import express from 'express' import { searchSubstances, getSubstanceById } from './hnsService.js' import { isValidNumber } from '../middleware/security.js' const router = express.Router() // HNS 물질 검색 router.get('/', async (req, res) => { try { const q = req.query.q as string | undefined const type = req.query.type as string | undefined const sebc = req.query.sebc as string | undefined const page = parseInt(req.query.page as string, 10) || 1 const limit = parseInt(req.query.limit as string, 10) || 50 if (!isValidNumber(page, 1, 10000) || !isValidNumber(limit, 1, 100)) { return res.status(400).json({ error: '유효하지 않은 페이지네이션', message: 'page는 1~10000, limit은 1~100 범위여야 합니다.', }) } const validTypes = ['abbreviation', 'nameKr', 'nameEn', 'casNumber', 'unNumber', 'cargoCode'] const searchType = type && validTypes.includes(type) ? type as 'abbreviation' | 'nameKr' | 'nameEn' | 'casNumber' | 'unNumber' | 'cargoCode' : undefined const result = await searchSubstances({ q, type: searchType, sebc, page, limit }) res.json(result) } catch { res.status(500).json({ error: 'HNS 물질 검색 실패' }) } }) // HNS 물질 상세 조회 router.get('/:id', async (req, res) => { try { const id = parseInt(req.params.id, 10) if (!isValidNumber(id, 1, 999999)) { return res.status(400).json({ error: '유효하지 않은 물질 ID' }) } const substance = await getSubstanceById(id) if (!substance) { return res.status(404).json({ error: '물질을 찾을 수 없습니다' }) } res.json(substance) } catch { res.status(500).json({ error: 'HNS 물질 조회 실패' }) } }) export default router