diff --git a/app.js b/app.js index 46a87dac803a863020982615a1672b264f0fe6af..419c5b50a03fac5b5119fbbdbb1a917424fb08e1 100644 --- a/app.js +++ b/app.js @@ -13,7 +13,10 @@ const participantRouter = require('./routes/participant'); const myScheduleRouter = require('./routes/mySchedule'); const { sequelize } = require('./models'); +const checkMeetings = require('./schedules/checkMeetings'); + const app = express(); +checkMeetings(); app.set('port', process.env.PORT || 3000); sequelize diff --git a/schedules/checkMeetings.js b/schedules/checkMeetings.js new file mode 100644 index 0000000000000000000000000000000000000000..73db5afe956ea232f69c0320a7ca003b07a0a49c --- /dev/null +++ b/schedules/checkMeetings.js @@ -0,0 +1,31 @@ +const { scheduleJob } = require('node-schedule'); +const { Op } = require('sequelize'); +const { Meeting } = require('../models'); +const { closeMeetingById } = require('../services/meeting'); + +module.exports = async () => { + console.log( + 'Check meeting... 종료되지 않은 미팅을 찾아 스케줄러에 등록합니다.', + ); + try { + const meetings = await Meeting.findAll({ + where: { + voteExpiresAt: { + [Op.ne]: null, + }, + isClosed: false, + }, + }); + console.log('meetings', meetings); + meetings.forEach((meeting) => { + scheduleJob(meeting.voteExpiresAt, async () => { + await closeMeetingById(meeting.id); + }); + }); + } catch (error) { + console.log( + 'Scheduler에 등록할 meeting을 확인하던 중 에러가 발생했습니다.', + error, + ); + } +};