From 32d94dab07b7919dea6483a701a7add3f165230c Mon Sep 17 00:00:00 2001
From: Wo-ogie <siwall0105@gmail.com>
Date: Sun, 10 Dec 2023 03:40:47 +0900
Subject: [PATCH] =?UTF-8?q?feat:=20=EC=84=9C=EB=B2=84=20=EA=B5=AC=EB=8F=99?=
 =?UTF-8?q?=20=EC=8B=9C=20=EC=95=84=EC=A7=81=20=EC=A2=85=EB=A3=8C=EB=90=98?=
 =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EC=9D=80=20=EC=95=BD=EC=86=8D=EB=93=A4?=
 =?UTF-8?q?=EC=9D=84=20scheduler=EC=97=90=20=EB=93=B1=EB=A1=9D=ED=95=98?=
 =?UTF-8?q?=EC=97=AC=20=EC=A2=85=EB=A3=8C=EB=90=A0=20=EC=88=98=20=EC=9E=88?=
 =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EC=84=A4=EC=A0=95=ED=95=98=EB=8A=94=20?=
 =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 app.js                     |  3 +++
 schedules/checkMeetings.js | 31 +++++++++++++++++++++++++++++++
 2 files changed, 34 insertions(+)
 create mode 100644 schedules/checkMeetings.js

diff --git a/app.js b/app.js
index 46a87da..419c5b5 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 0000000..73db5af
--- /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,
+    );
+  }
+};
-- 
GitLab