Skip to content
Snippets Groups Projects
Commit 04004ee2 authored by Wo-ogie's avatar Wo-ogie
Browse files

feat: 약속 목적별 많이 선택한 시간 조회 시 top 3 데이터를 조회하도록 수정

parent ab1f0ec1
No related branches found
No related tags found
No related merge requests found
......@@ -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);
}
......
......@@ -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,
};
}));
};
......@@ -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);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment