UNPKG

k-mfds-fooddb-mcp-server

Version:

식품의약품안전처 식품영양성분DB를 MCP 도구로 제공합니다.

44 lines (38 loc) 1.79 kB
import { extractItemArrayOrDefualtEmptyArrayFromBody, extractPagingInfoOrDefaultEmptyObjectFromBody } from './util'; import * as api from './api'; import * as mapper from './mapper'; import { SearchFoodNutritionRequest } from './dtos/SearchFoodNutritionRequest'; import { SeachFoodNutritionResponse } from './dtos/SeachFoodNutritionResponse'; import { AmtNumDataType } from './types/AmtNumDataType'; /** * `식품의약품안전처_식품영양성분DB정보` 음식 정보 검색 * @param searchFoodNutritionRequest 요청 인자 * @returns 검색 결과 */ export async function searchFoodNutritionInfo(searchFoodNutritionRequest: SearchFoodNutritionRequest): Promise<SeachFoodNutritionResponse> { if (!(searchFoodNutritionRequest instanceof SearchFoodNutritionRequest)) { throw new Error('요청인자 형식에 맞지 않음'); } const body = await api.getFoodNutritionComponentDatabaseInquery( searchFoodNutritionRequest.foodNameKr, searchFoodNutritionRequest.researchYearMonthDate, searchFoodNutritionRequest.makerName, searchFoodNutritionRequest.pageNo, searchFoodNutritionRequest.numOfRows, searchFoodNutritionRequest.type, searchFoodNutritionRequest.foodCategory1Name, searchFoodNutritionRequest.itemReportNo, searchFoodNutritionRequest.updateDate, searchFoodNutritionRequest.dbClassName, ); const foodNutritions = extractItemArrayOrDefualtEmptyArrayFromBody(body) .map(each => mapper.toFoodNutrition(each)); const paging = extractPagingInfoOrDefaultEmptyObjectFromBody(body); return new SeachFoodNutritionResponse({ data: foodNutritions, paging, }); } export function getNutritionComponentTypes() { return mapper.toAmtCodeTypeResponse(AmtNumDataType); }