diff --git a/controllers/meeting.js b/controllers/meeting.js index 1b3a1f053c5f0d33cd6ab9f5924f332ac6149895..6bd22cad83ac5abe4ff5f9052b949f34112df458 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 d634c3f7d23040d68ee16b950c3591aba33e1d14..dd49fcd78de956f54ec4615a2bcb15e6a6b133a3 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 4ad462d02083a3e5f04147876ece5543d124d2b6..85952a9bddbf40b6027adaa6aefc545e3746b27d 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);