From 04004ee24d049b5326672fc6a88ede804d8ef687 Mon Sep 17 00:00:00 2001 From: Wo-ogie <siwall0105@gmail.com> Date: Tue, 5 Dec 2023 13:02:20 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=95=BD=EC=86=8D=20=EB=AA=A9=EC=A0=81?= =?UTF-8?q?=EB=B3=84=20=EB=A7=8E=EC=9D=B4=20=EC=84=A0=ED=83=9D=ED=95=9C=20?= =?UTF-8?q?=EC=8B=9C=EA=B0=84=20=EC=A1=B0=ED=9A=8C=20=EC=8B=9C=20top=203?= =?UTF-8?q?=20=EB=8D=B0=EC=9D=B4=ED=84=B0=EB=A5=BC=20=EC=A1=B0=ED=9A=8C?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controllers/meeting.js | 8 +++++--- repository/meeting.js | 11 +++++------ routes/meeting.js | 4 ++-- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/controllers/meeting.js b/controllers/meeting.js index 1b3a1f0..6bd22ca 100644 --- a/controllers/meeting.js +++ b/controllers/meeting.js @@ -196,14 +196,16 @@ exports.getMeetingDetailById = async (req, res, next) => { } }; -exports.getMostConfirmedTime = async (req, res, next) => { +exports.getTopThreeConfirmedTimes = async (req, res, next) => { const { purpose } = req.query; if (!purpose) { return res.status(400).json({ message: 'Purpose is required' }); } try { - const result = await meetingRepositotry.getMostConfirmedTime(purpose); - return res.json(result); + const results = await meetingRepositotry.getTopThreeConfirmedTimes(purpose); + return res.json({ + topThreeConfirmedTimes: results, + }); } catch (error) { return next(error); } diff --git a/repository/meeting.js b/repository/meeting.js index d634c3f..dd49fcd 100644 --- a/repository/meeting.js +++ b/repository/meeting.js @@ -4,7 +4,7 @@ const { createMostConfirmedTimeNotFoundError, } = require('../errors/meetingErrors'); -exports.getMostConfirmedTime = async (purpose) => { +exports.getTopThreeConfirmedTimes = async (purpose) => { const query = ` SELECT EXTRACT(HOUR FROM m.confirmed_time) AS confirmed_time_hour, COUNT(1) AS confirmed_time_count @@ -18,14 +18,13 @@ exports.getMostConfirmedTime = async (purpose) => { const params = { replacements: { purpose }, type: Sequelize.QueryTypes.SELECT, - plain: true, }; - const result = await sequelize.query(query, params); - if (!result) { + const results = await sequelize.query(query, params); + if (!results || results.length === 0) { throw createMostConfirmedTimeNotFoundError(); } - return { + return results.slice(0, 3).map((result) => ({ hour: result.confirmed_time_hour, count: result.confirmed_time_count, - }; + })); }; diff --git a/routes/meeting.js b/routes/meeting.js index 4ad462d..85952a9 100644 --- a/routes/meeting.js +++ b/routes/meeting.js @@ -5,7 +5,7 @@ const { entry, getMeetingById, getMeetingDetailById, - getMostConfirmedTime, + getTopThreeConfirmedTimes, closeMeeting, confirmTime, } = require('../controllers/meeting'); @@ -14,7 +14,7 @@ const router = express.Router(); router.post('/', createMeeting); -router.get('/most-confirmed-time', getMostConfirmedTime); +router.get('/top-three-confirmed-times', getTopThreeConfirmedTimes); router.post('/:meetingId/entry', entry); -- GitLab