From 159a6944906ed4356958645faba02f3514e53de2 Mon Sep 17 00:00:00 2001
From: Wo-ogie <siwall0105@gmail.com>
Date: Sun, 10 Dec 2023 03:09:03 +0900
Subject: [PATCH] =?UTF-8?q?feat:=20=EB=AF=B8=ED=8C=85=20=EC=83=9D=EC=84=B1?=
 =?UTF-8?q?=20=EC=8B=9C=20expiresAt=EC=97=90=20=EC=A7=80=EC=A0=95=EB=90=9C?=
 =?UTF-8?q?=20=EC=8B=9C=EA=B0=84=EC=97=90=20=EC=9E=90=EB=8F=99=EC=9C=BC?=
 =?UTF-8?q?=EB=A1=9C=20=EC=A2=85=EB=A3=8C=EB=90=98=EB=8F=84=EB=A1=9D=20sch?=
 =?UTF-8?q?eling=20=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

---
 controllers/meeting.js | 7 +++++++
 services/meeting.js    | 2 +-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/controllers/meeting.js b/controllers/meeting.js
index d897d04..4e0771e 100644
--- a/controllers/meeting.js
+++ b/controllers/meeting.js
@@ -1,4 +1,6 @@
+const schedule = require('node-schedule');
 const bcrypt = require('bcrypt');
+
 const { Meeting, Participant } = require('../models');
 const meetingRepository = require('../repository/meeting');
 const {
@@ -102,6 +104,11 @@ exports.createMeeting = async (req, res, next) => {
       voteExpiresAt: req.body.voteExpiresAt,
       confirmedTime: null,
     });
+
+    schedule.scheduleJob(meeting.voteExpiresAt, async () => {
+      await closeMeetingById(meeting.id);
+    });
+
     return res.status(201).json(MeetingResponse.from(meeting));
   } catch (error) {
     return next(error);
diff --git a/services/meeting.js b/services/meeting.js
index 1643eda..30f5971 100644
--- a/services/meeting.js
+++ b/services/meeting.js
@@ -64,7 +64,7 @@ function validateMeetingIsNotClosed(meeting) {
 }
 
 const closeMeetingById = async (meetingId) => {
-  const meeting = await getMeetingById(meetingId);
+  const meeting = await getMeetingWithParticipantsById(meetingId);
   validateMeetingIsNotClosed(meeting);
 
   meeting.isClosed = true;
-- 
GitLab