diff --git a/src/controllers/SubscribeController.ts b/src/controllers/SubscribeController.ts new file mode 100644 index 0000000..1776f2b --- /dev/null +++ b/src/controllers/SubscribeController.ts @@ -0,0 +1,20 @@ +import { Request, Response } from 'express'; +import message from '../modules/responseMessage'; +import statusCode from '../modules/statusCode'; +import util from '../modules/util'; +import SubscribeService from '../services/SubscribeService'; + +const getSubscribeOptions = async (req: Request, res: Response) => { + try { + const data = await SubscribeService.getSubscribeOptions(); + if (!data) { + res.status(statusCode.NOT_FOUND).send(util.fail(statusCode.NOT_FOUND, message.NOT_FOUND)); + } + res.status(statusCode.OK).send(util.success(statusCode.OK, message.READ_SUBSCRIBE_OPTION_SUCCESS, data)); + } catch (error) { + console.log(error); + res.status(statusCode.INTERNAL_SERVER_ERROR).send(util.fail(statusCode.INTERNAL_SERVER_ERROR, message.INTERNAL_SERVER_ERROR)); + } +}; + +export default { getSubscribeOptions }; diff --git a/src/controllers/index.ts b/src/controllers/index.ts index 343b375..2c84a0f 100644 --- a/src/controllers/index.ts +++ b/src/controllers/index.ts @@ -1,4 +1,4 @@ import ReviewController from './ReviewController'; +import SubscribeController from './SubscribeController'; -// controller index file -export { ReviewController }; +export { ReviewController, SubscribeController }; diff --git a/src/interfaces/subscribe/SubscribeOptionDto.ts b/src/interfaces/subscribe/SubscribeOptionDto.ts new file mode 100644 index 0000000..75468a0 --- /dev/null +++ b/src/interfaces/subscribe/SubscribeOptionDto.ts @@ -0,0 +1,7 @@ +import { PeriodInfo } from '../period/PeriodInfo'; +import { QuantityInfo } from '../quantity/QuantityInfo'; + +export interface SubscribeOptionDto { + deliveryPeriodOptions: PeriodInfo[]; + deliveryQuantityOptions: QuantityInfo[]; +} diff --git a/src/modules/responseMessage.ts b/src/modules/responseMessage.ts index 167bc39..3754ac4 100644 --- a/src/modules/responseMessage.ts +++ b/src/modules/responseMessage.ts @@ -5,6 +5,7 @@ const message = { INTERNAL_SERVER_ERROR: '서버 내부 오류', READ_MAINPAGE_REVIEW_SUCCESS: '메인 페이지 리뷰 조회 성공', + READ_SUBSCRIBE_OPTION_SUCCESS: '라면 구독 옵션 조회 성공', }; export default message; diff --git a/src/routes/SubscribeRouter.ts b/src/routes/SubscribeRouter.ts new file mode 100644 index 0000000..be94296 --- /dev/null +++ b/src/routes/SubscribeRouter.ts @@ -0,0 +1,8 @@ +import { Router } from 'express'; +import { SubscribeController } from '../controllers'; + +const router: Router = Router(); + +router.get('/', SubscribeController.getSubscribeOptions); + +export default router; diff --git a/src/routes/index.ts b/src/routes/index.ts index 54f99b5..1aab9ce 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -1,9 +1,11 @@ // router index file import { Router } from 'express'; import ReviewRouter from './ReviewRouter'; +import SubScribeRouter from './SubscribeRouter'; const router: Router = Router(); router.use('/review', ReviewRouter); +router.use('/subscribe', SubScribeRouter); export default router; diff --git a/src/services/SubscribeService.ts b/src/services/SubscribeService.ts new file mode 100644 index 0000000..1188aac --- /dev/null +++ b/src/services/SubscribeService.ts @@ -0,0 +1,26 @@ +import { SubscribeOptionDto } from '../interfaces/subscribe/SubscribeOptionDto'; +import Period from '../models/Period'; +import Quantity from '../models/Quantity'; + +const getSubscribeOptions = async (): Promise => { + try { + const periodOptions = await Period.find(); + const quantityOptions = await Quantity.find(); + + if (!periodOptions || !quantityOptions) { + return null; + } + + const subscribeOptionList = { + deliveryPeriodOptions: periodOptions, + deliveryQuantityOptions: quantityOptions, + }; + + return subscribeOptionList; + } catch (error) { + console.log(error); + throw error; + } +}; + +export default { getSubscribeOptions };