k-mfds-fooddb-mcp-server
Version:
식품의약품안전처 식품영양성분DB를 MCP 도구로 제공합니다.
44 lines (38 loc) • 1.79 kB
text/typescript
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);
}