From da560cd5a53887974e3b0d00d574e58fb3580e1e Mon Sep 17 00:00:00 2001 From: thxx Date: Sun, 9 Feb 2025 04:14:12 +0900 Subject: [PATCH 1/3] Fix: Activate Event code --- src/index.ts | 18 ++- src/loadenv.ts | 4 +- src/lottery/index.js | 4 +- src/lottery/middlewares/timestampValidator.js | 2 +- src/lottery/modules/contracts.js | 2 +- src/lottery/modules/quests.js | 2 +- src/lottery/modules/stores/mongo.js | 2 +- src/lottery/routes/docs/globalState.js | 2 +- src/lottery/routes/docs/invites.js | 2 +- src/lottery/routes/docs/items.js | 2 +- src/lottery/routes/docs/publicNotice.js | 2 +- src/lottery/routes/docs/quests.js | 2 +- src/lottery/routes/docs/swaggerDocs.js | 2 +- src/lottery/routes/docs/transactions.js | 2 +- src/lottery/routes/globalState.js | 2 +- src/lottery/routes/invites.js | 2 +- src/lottery/routes/items.js | 2 +- src/lottery/routes/quests.js | 2 +- src/lottery/routes/transactions.js | 2 +- src/lottery/schedules/detectAbusingUsers.js | 2 +- src/lottery/services/globalState.js | 4 +- src/lottery/services/invites.js | 2 +- src/lottery/services/items.js | 2 +- src/lottery/services/publicNotice.js | 2 +- src/routes/admin.js | 2 +- src/sampleGenerator/src/testData.js | 2 +- src/services/notifications.js | 12 +- src/services/rooms.js | 136 +++++++++--------- src/services/users.ts | 20 +-- 29 files changed, 127 insertions(+), 115 deletions(-) diff --git a/src/index.ts b/src/index.ts index ced953e8..134f23c0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,7 +3,12 @@ import express from "express"; import cookieParser from "cookie-parser"; import http from "http"; -import { nodeEnv, mongo as mongoUrl, port as httpPort } from "@/loadenv"; +import { + nodeEnv, + mongo as mongoUrl, + port as httpPort, + eventConfig, +} from "@/loadenv"; import { corsMiddleware, errorHandler, @@ -72,9 +77,16 @@ app.use(limitRateMiddleware); // [Router] Swagger (API 문서) app.use("/docs", docsRouter); +if (eventConfig) { + console.log("Registering /events router"); + app.use(`/events`, require("@/lottery").lotteryRouter); +} else { + console.log("eventConfig is undefined"); +} + // [Router] 이벤트 전용 라우터입니다. -// eventConfig && -// app.use(`/events/${eventConfig.mode}`, require("@/lottery").lotteryRouter); +eventConfig && app.use(`/events`, require("@/lottery").lotteryRouter); +// app.use(`/events/${eventConfig.mode}`, require("@/lottery").lotteryRouter); // [Middleware] 모든 API 요청에 대하여 origin 검증 app.use(originValidatorMiddleware); diff --git a/src/loadenv.ts b/src/loadenv.ts index 4e6f649b..ea79bb92 100644 --- a/src/loadenv.ts +++ b/src/loadenv.ts @@ -61,8 +61,8 @@ export const testAccounts = export const slackWebhookUrl = { report: process.env.SLACK_REPORT_WEBHOOK_URL || "", // optional }; -// export const eventConfig = -// process.env.EVENT_CONFIG && JSON.parse(process.env.EVENT_CONFIG); // optional +export const eventConfig = + process.env.EVENT_CONFIG && JSON.parse(process.env.EVENT_CONFIG); // optional export const naverMap = { apiId: process.env.NAVER_MAP_API_ID || "", // optional apiKey: process.env.NAVER_MAP_API_KEY || "", // optional diff --git a/src/lottery/index.js b/src/lottery/index.js index a00e3598..96294fdf 100644 --- a/src/lottery/index.js +++ b/src/lottery/index.js @@ -12,7 +12,7 @@ const { addFiveItemStockAction, } = require("./modules/items"); -const { eventConfig } = require("../../loadenv"); +const { eventConfig } = require("@/loadenv"); const contracts = eventConfig && require("./modules/contracts"); // [Routes] 기존 docs 라우터의 docs extend @@ -24,7 +24,7 @@ eventConfig && require("./schedules")(); const lotteryRouter = express.Router(); // [Middleware] 모든 API 요청에 대하여 origin 검증 -lotteryRouter.use(require("../middlewares/originValidator")); +lotteryRouter.use(require("../middlewares/originValidator").default); // [Router] APIs lotteryRouter.use("/globalState", require("./routes/globalState")); diff --git a/src/lottery/middlewares/timestampValidator.js b/src/lottery/middlewares/timestampValidator.js index 5df2973c..09f5c60b 100644 --- a/src/lottery/middlewares/timestampValidator.js +++ b/src/lottery/middlewares/timestampValidator.js @@ -1,4 +1,4 @@ -const { eventConfig } = require("../../../loadenv"); +const { eventConfig } = require("@/loadenv"); const eventPeriod = eventConfig && { startAt: new Date(eventConfig.period.startAt), endAt: new Date(eventConfig.period.endAt), diff --git a/src/lottery/modules/contracts.js b/src/lottery/modules/contracts.js index 6281bec7..180b8405 100644 --- a/src/lottery/modules/contracts.js +++ b/src/lottery/modules/contracts.js @@ -2,7 +2,7 @@ const { buildQuests, completeQuest } = require("./quests"); const mongoose = require("mongoose"); const logger = require("../../modules/logger"); -const { eventConfig } = require("../../../loadenv"); +const { eventConfig } = require("@/loadenv"); const eventPeriod = eventConfig && { startAt: new Date(eventConfig.period.startAt), endAt: new Date(eventConfig.period.endAt), diff --git a/src/lottery/modules/quests.js b/src/lottery/modules/quests.js index 6bf162fb..95a52a6b 100644 --- a/src/lottery/modules/quests.js +++ b/src/lottery/modules/quests.js @@ -7,7 +7,7 @@ const { const logger = require("../../modules/logger"); const mongoose = require("mongoose"); -const { eventConfig } = require("../../../loadenv"); +const { eventConfig } = require("@/loadenv"); const eventPeriod = eventConfig && { startAt: new Date(eventConfig.period.startAt), endAt: new Date(eventConfig.period.endAt), diff --git a/src/lottery/modules/stores/mongo.js b/src/lottery/modules/stores/mongo.js index 09b6c80e..0fd78b74 100644 --- a/src/lottery/modules/stores/mongo.js +++ b/src/lottery/modules/stores/mongo.js @@ -2,7 +2,7 @@ const mongoose = require("mongoose"); const Schema = mongoose.Schema; // 이벤트마다 사용된 모델을 구분하기 위해 이름에 Prefix를 붙입니다. -const { eventConfig } = require("../../../../loadenv"); +const { eventConfig } = require("@/loadenv"); const modelNamePrefix = eventConfig?.mode ?? ""; const integerValidator = { diff --git a/src/lottery/routes/docs/globalState.js b/src/lottery/routes/docs/globalState.js index 44b62384..d22b86ac 100644 --- a/src/lottery/routes/docs/globalState.js +++ b/src/lottery/routes/docs/globalState.js @@ -1,4 +1,4 @@ -const { eventConfig } = require("../../../../loadenv"); +const { eventConfig } = require("@/loadenv"); const apiPrefix = `/events/${eventConfig?.mode}/globalState`; const globalStateDocs = {}; diff --git a/src/lottery/routes/docs/invites.js b/src/lottery/routes/docs/invites.js index cfe37214..f381ee61 100644 --- a/src/lottery/routes/docs/invites.js +++ b/src/lottery/routes/docs/invites.js @@ -1,4 +1,4 @@ -const { eventConfig } = require("../../../../loadenv"); +const { eventConfig } = require("@/loadenv"); const apiPrefix = `/events/${eventConfig?.mode}/invites`; const invitesDocs = {}; diff --git a/src/lottery/routes/docs/items.js b/src/lottery/routes/docs/items.js index 28ecd53d..f9492a47 100644 --- a/src/lottery/routes/docs/items.js +++ b/src/lottery/routes/docs/items.js @@ -1,4 +1,4 @@ -const { eventConfig } = require("../../../../loadenv"); +const { eventConfig } = require("@/loadenv"); const apiPrefix = `/events/${eventConfig?.mode}/items`; const itemsDocs = {}; diff --git a/src/lottery/routes/docs/publicNotice.js b/src/lottery/routes/docs/publicNotice.js index bcf2cc78..725f644a 100644 --- a/src/lottery/routes/docs/publicNotice.js +++ b/src/lottery/routes/docs/publicNotice.js @@ -1,4 +1,4 @@ -const { eventConfig } = require("../../../../loadenv"); +const { eventConfig } = require("@/loadenv"); const apiPrefix = `/events/${eventConfig?.mode}/publicNotice`; const publicNoticeDocs = {}; diff --git a/src/lottery/routes/docs/quests.js b/src/lottery/routes/docs/quests.js index 42a9c022..76b07d0a 100644 --- a/src/lottery/routes/docs/quests.js +++ b/src/lottery/routes/docs/quests.js @@ -1,4 +1,4 @@ -const { eventConfig } = require("../../../../loadenv"); +const { eventConfig } = require("@/loadenv"); const apiPrefix = `/events/${eventConfig?.mode}/quests`; const questsDocs = {}; diff --git a/src/lottery/routes/docs/swaggerDocs.js b/src/lottery/routes/docs/swaggerDocs.js index 0b6702da..4e653bf0 100644 --- a/src/lottery/routes/docs/swaggerDocs.js +++ b/src/lottery/routes/docs/swaggerDocs.js @@ -10,7 +10,7 @@ const { invitesSchema } = require("./schemas/invitesSchema"); const { itemsSchema } = require("./schemas/itemsSchema"); const { questsSchema } = require("./schemas/questsSchema"); -const { eventConfig } = require("../../../../loadenv"); +const { eventConfig } = require("@/loadenv"); const apiPrefix = `/events/${eventConfig?.mode}`; const eventSwaggerDocs = { diff --git a/src/lottery/routes/docs/transactions.js b/src/lottery/routes/docs/transactions.js index a041b949..ad540b9c 100644 --- a/src/lottery/routes/docs/transactions.js +++ b/src/lottery/routes/docs/transactions.js @@ -1,4 +1,4 @@ -const { eventConfig } = require("../../../../loadenv"); +const { eventConfig } = require("@/loadenv"); const apiPrefix = `/events/${eventConfig?.mode}/transactions`; const transactionsDocs = {}; diff --git a/src/lottery/routes/globalState.js b/src/lottery/routes/globalState.js index c4f37d39..a1c6280d 100644 --- a/src/lottery/routes/globalState.js +++ b/src/lottery/routes/globalState.js @@ -8,7 +8,7 @@ const globalStateHandlers = require("../services/globalState"); router.get("/", globalStateHandlers.getUserGlobalStateHandler); // 아래의 Endpoint 접근 시 로그인 및 시각 체크 필요 -router.use(require("../../middlewares/auth")); +router.use(require("../../middlewares/auth").default); router.use(require("../middlewares/timestampValidator")); router.post( diff --git a/src/lottery/routes/invites.js b/src/lottery/routes/invites.js index 65e4271e..26e4bcec 100644 --- a/src/lottery/routes/invites.js +++ b/src/lottery/routes/invites.js @@ -12,7 +12,7 @@ router.get( ); // 아래의 Endpoint 접근 시 로그인, 차단 여부 및 시각 체크 필요 -router.use(require("../../middlewares/auth")); +router.use(require("../../middlewares/auth").default); router.use(require("../middlewares/checkBanned")); router.use(require("../middlewares/timestampValidator")); diff --git a/src/lottery/routes/items.js b/src/lottery/routes/items.js index 0de8be18..a25f1a93 100644 --- a/src/lottery/routes/items.js +++ b/src/lottery/routes/items.js @@ -18,7 +18,7 @@ router.get( ); // 아래의 Endpoint 접근 시 로그인, 차단 여부 및 시각 체크 필요 -router.use(require("../../middlewares/auth")); +router.use(require("../../middlewares/auth").default); router.use(require("../middlewares/checkBanned")); router.use(require("../middlewares/timestampValidator")); diff --git a/src/lottery/routes/quests.js b/src/lottery/routes/quests.js index e9845434..a008e5f6 100644 --- a/src/lottery/routes/quests.js +++ b/src/lottery/routes/quests.js @@ -6,7 +6,7 @@ const { questsZod } = require("./docs/schemas/questsSchema"); const questsHandlers = require("../services/quests"); // 아래의 Endpoint 접근 시 로그인, 차단 여부 및 시각 체크 필요 -router.use(require("../../middlewares/auth")); +router.use(require("../../middlewares/auth").default); router.use(require("../middlewares/checkBanned")); router.use(require("../middlewares/timestampValidator")); diff --git a/src/lottery/routes/transactions.js b/src/lottery/routes/transactions.js index f9e375ca..106a4542 100644 --- a/src/lottery/routes/transactions.js +++ b/src/lottery/routes/transactions.js @@ -4,7 +4,7 @@ const router = express.Router(); const transactionsHandlers = require("../services/transactions"); // 아래의 Endpoint 접근 시 로그인 필요 -router.use(require("../../middlewares/auth")); +router.use(require("../../middlewares/auth").default); router.get("/", transactionsHandlers.getUserTransactionsHandler); diff --git a/src/lottery/schedules/detectAbusingUsers.js b/src/lottery/schedules/detectAbusingUsers.js index e5b910aa..cac2d775 100644 --- a/src/lottery/schedules/detectAbusingUsers.js +++ b/src/lottery/schedules/detectAbusingUsers.js @@ -9,7 +9,7 @@ const { } = require("../modules/slackNotification"); const logger = require("../../modules/logger"); -const { eventConfig } = require("../../../loadenv"); +const { eventConfig } = require("@/loadenv"); const eventPeriod = eventConfig && { startAt: new Date(eventConfig.period.startAt), endAt: new Date(eventConfig.period.endAt), diff --git a/src/lottery/services/globalState.js b/src/lottery/services/globalState.js index 7a16d0e7..f467ef9c 100644 --- a/src/lottery/services/globalState.js +++ b/src/lottery/services/globalState.js @@ -2,9 +2,9 @@ const { eventStatusModel } = require("../modules/stores/mongo"); const { userModel } = require("../../modules/stores/mongo"); const logger = require("../../modules/logger"); const { isLogin, getLoginInfo } = require("../../modules/auths/login"); -const { nodeEnv } = require("../../../loadenv"); +const { nodeEnv } = require("@/loadenv"); -const { eventConfig } = require("../../../loadenv"); +const { eventConfig } = require("@/loadenv"); const contracts = require("../modules/contracts"); const quests = Object.values(contracts.quests); diff --git a/src/lottery/services/invites.js b/src/lottery/services/invites.js index 935e158e..4d67611e 100644 --- a/src/lottery/services/invites.js +++ b/src/lottery/services/invites.js @@ -2,7 +2,7 @@ const { eventStatusModel } = require("../modules/stores/mongo"); const { userModel } = require("../../modules/stores/mongo"); const logger = require("../../modules/logger"); -const { eventConfig } = require("../../../loadenv"); +const { eventConfig } = require("@/loadenv"); const searchInviterHandler = async (req, res) => { try { diff --git a/src/lottery/services/items.js b/src/lottery/services/items.js index c5f5a2c5..2ed24e0b 100644 --- a/src/lottery/services/items.js +++ b/src/lottery/services/items.js @@ -7,7 +7,7 @@ const { userModel } = require("../../modules/stores/mongo"); const { isLogin, getLoginInfo } = require("../../modules/auths/login"); const logger = require("../../modules/logger"); -const { eventConfig } = require("../../../loadenv"); +const { eventConfig } = require("@/loadenv"); const contracts = require("../modules/contracts"); const getItemsHandler = async (req, res) => { diff --git a/src/lottery/services/publicNotice.js b/src/lottery/services/publicNotice.js index f0244421..23289585 100644 --- a/src/lottery/services/publicNotice.js +++ b/src/lottery/services/publicNotice.js @@ -9,7 +9,7 @@ const { publicNoticePopulateOption, } = require("../modules/populates/transactions"); -const { eventConfig } = require("../../../loadenv"); +const { eventConfig } = require("@/loadenv"); /** * getValueRank 사용자의 상품 구매 내역 또는 경품 추첨 내역의 순위 결정을 위한 가치를 평가하는 함수 diff --git a/src/routes/admin.js b/src/routes/admin.js index d1502a03..643f9e1d 100644 --- a/src/routes/admin.js +++ b/src/routes/admin.js @@ -40,7 +40,7 @@ const resources = [ taxiFareModel, ] .map(buildResource()) - .concat(/*require("@/lottery").resources*/ []); + .concat(require("@/lottery").resources); // Create router for admin page const adminJS = new AdminJS({ resources }); diff --git a/src/sampleGenerator/src/testData.js b/src/sampleGenerator/src/testData.js index 2866eafa..5e177a9f 100644 --- a/src/sampleGenerator/src/testData.js +++ b/src/sampleGenerator/src/testData.js @@ -10,7 +10,7 @@ const { maximumIntervalBtwChats, occurenceOfJoin, occurenceOfAbort, -} = require("../loadenv"); +} = require("@/loadenv"); const generateUser = async (id, num, isAdmin) => { const newUser = new userModel({ diff --git a/src/services/notifications.js b/src/services/notifications.js index f0c4bf94..8e4a3519 100644 --- a/src/services/notifications.js +++ b/src/services/notifications.js @@ -5,7 +5,7 @@ const logger = require("@/modules/logger").default; const { registerDeviceToken, validateDeviceToken } = require("@/modules/fcm"); // 이벤트 코드입니다. -// const { contracts } = require("@/lottery"); +const { contracts } = require("@/lottery"); const registerDeviceTokenHandler = async (req, res) => { try { @@ -111,11 +111,11 @@ const editOptionsHandler = async (req, res) => { } // 이벤트 코드입니다. - // await contracts?.completeAdPushAgreementQuest( - // req.userOid, - // req.timestamp, - // options.advertisement - // ); + await contracts?.completeAdPushAgreementQuest( + req.userOid, + req.timestamp, + options.advertisement + ); res.status(200).json(updatedNotificationOptions); } catch (err) { diff --git a/src/services/rooms.js b/src/services/rooms.js index 7cc1370b..7ad94172 100644 --- a/src/services/rooms.js +++ b/src/services/rooms.js @@ -15,12 +15,12 @@ const { } = require("@/modules/slackNotification"); // 이벤트 코드입니다. -// const { eventConfig } = require("@/loadenv"); -// const eventPeriod = eventConfig && { -// startAt: new Date(eventConfig.period.startAt), -// endAt: new Date(eventConfig.period.endAt), -// }; -// const { contracts } = require("@/lottery"); +const { eventConfig } = require("@/loadenv"); +const eventPeriod = eventConfig && { + startAt: new Date(eventConfig.period.startAt), + endAt: new Date(eventConfig.period.endAt), +}; +const { contracts } = require("@/lottery"); const createHandler = async (req, res) => { const { name, from, to, time, maxPartLength } = req.body; @@ -110,7 +110,7 @@ const createHandler = async (req, res) => { const roomObjectFormated = formatSettlement(roomObject); // 이벤트 코드입니다. - // await contracts?.completeFirstRoomCreationQuest(req.userOid, req.timestamp); + await contracts?.completeFirstRoomCreationQuest(req.userOid, req.timestamp); return res.send(roomObjectFormated); } catch (err) { @@ -128,58 +128,58 @@ const createTestHandler = async (req, res) => { try { // 이벤트 코드입니다. - // if ( - // !eventPeriod || - // req.timestamp >= eventPeriod.endAt || - // req.timestamp < eventPeriod.startAt - // ) - // return res.json({ result: true }); - - // const countRecentlyMadeRooms = await roomModel.countDocuments({ - // madeat: { $gte: new Date(req.timestamp - 86400000) }, // 밀리초 단위로 24시간을 나타냅니다. - // "part.0.user": req.userOid, // 방 최초 생성자를 저장하는 필드가 없으므로, 첫 번째 참여자를 생성자로 간주합니다. - // }); - // if (!countRecentlyMadeRooms && countRecentlyMadeRooms !== 0) - // return res - // .status(500) - // .json({ error: "Rooms/create/test : internal server error" }); - - // const dateTime = new Date(time); - // const candidateRooms = await roomModel - // .find( - // { - // time: { - // $gte: new Date(dateTime.getTime() - 43200000), - // $lte: new Date(dateTime.getTime() + 43200000), - // }, - // part: { $elemMatch: { user: req.userOid } }, - // }, - // "from to time maxPartLength" - // ) - // .limit(2) - // .lean(); - // if (!candidateRooms) - // return res - // .status(500) - // .json({ error: "Rooms/create/test : internal server error" }); - - // const isAbusing = checkIsAbusing( - // req.body, - // countRecentlyMadeRooms, - // candidateRooms - // ); - // if (isAbusing) { - // const user = await userModel - // .findOne({ _id: req.userOid, withdraw: false }) - // .lean(); - // notifyRoomCreationAbuseToReportChannel( - // req.userOid, - // user?.nickname ?? req.userOid, - // req.body - // ); - // } + if ( + !eventPeriod || + req.timestamp >= eventPeriod.endAt || + req.timestamp < eventPeriod.startAt + ) + return res.json({ result: true }); - // return res.json({ result: !isAbusing }); + const countRecentlyMadeRooms = await roomModel.countDocuments({ + madeat: { $gte: new Date(req.timestamp - 86400000) }, // 밀리초 단위로 24시간을 나타냅니다. + "part.0.user": req.userOid, // 방 최초 생성자를 저장하는 필드가 없으므로, 첫 번째 참여자를 생성자로 간주합니다. + }); + if (!countRecentlyMadeRooms && countRecentlyMadeRooms !== 0) + return res + .status(500) + .json({ error: "Rooms/create/test : internal server error" }); + + const dateTime = new Date(time); + const candidateRooms = await roomModel + .find( + { + time: { + $gte: new Date(dateTime.getTime() - 43200000), + $lte: new Date(dateTime.getTime() + 43200000), + }, + part: { $elemMatch: { user: req.userOid } }, + }, + "from to time maxPartLength" + ) + .limit(2) + .lean(); + if (!candidateRooms) + return res + .status(500) + .json({ error: "Rooms/create/test : internal server error" }); + + const isAbusing = checkIsAbusing( + req.body, + countRecentlyMadeRooms, + candidateRooms + ); + if (isAbusing) { + const user = await userModel + .findOne({ _id: req.userOid, withdraw: false }) + .lean(); + notifyRoomCreationAbuseToReportChannel( + req.userOid, + user?.nickname ?? req.userOid, + req.body + ); + } + + return res.json({ result: !isAbusing }); return res.json({ result: true }); } catch (err) { logger.error(err); @@ -590,11 +590,11 @@ const commitSettlementHandler = async (req, res) => { }); // 이벤트 코드입니다. - // await contracts?.completeFareSettlementQuest( - // req.userOid, - // req.timestamp, - // roomObject - // ); + await contracts?.completeFareSettlementQuest( + req.userOid, + req.timestamp, + roomObject + ); // 수정한 방 정보를 반환합니다. res.send(formatSettlement(roomObject, { isOver: true })); @@ -663,11 +663,11 @@ const commitPaymentHandler = async (req, res) => { }); // 이벤트 코드입니다. - // await contracts?.completeFarePaymentQuest( - // req.userOid, - // req.timestamp, - // roomObject - // ); + await contracts?.completeFarePaymentQuest( + req.userOid, + req.timestamp, + roomObject + ); // 수정한 방 정보를 반환합니다. res.send(formatSettlement(roomObject, { isOver: true })); diff --git a/src/services/users.ts b/src/services/users.ts index bfc37e30..73c2b698 100644 --- a/src/services/users.ts +++ b/src/services/users.ts @@ -10,7 +10,7 @@ import * as aws from "@/modules/stores/aws"; import { userModel, banModel } from "@/modules/stores/mongo"; // 이벤트 코드입니다. -// const { contracts } = require("@/lottery"); +const { contracts } = require("@/lottery"); export const agreeOnTermsOfServiceHandler: RequestHandler = async ( req, @@ -73,10 +73,10 @@ export const editNicknameHandler: RequestHandler = async (req, res) => { if (result) { // 이벤트 코드입니다. - // await contracts?.completeNicknameChangingQuest( - // req.userOid, - // req.timestamp - // ); + await contracts?.completeNicknameChangingQuest( + req.userOid, + req.timestamp + ); return res .status(200) @@ -102,11 +102,11 @@ export const editAccountHandler: RequestHandler = async (req, res) => { if (result) { // 이벤트 코드입니다. - // await contracts?.completeAccountChangingQuest( - // req.userOid, - // req.timestamp, - // newAccount - // ); + await contracts?.completeAccountChangingQuest( + req.userOid, + req.timestamp, + newAccount + ); return res .status(200) From 9b190e1b774f0e929680e654a0418bdc91638505 Mon Sep 17 00:00:00 2001 From: thxx Date: Tue, 11 Feb 2025 20:13:39 +0900 Subject: [PATCH 2/3] CI test passed --- src/index.ts | 8 -------- src/lottery/modules/contracts.js | 2 +- src/sampleGenerator/src/testData.js | 2 +- src/services/notifications.js | 2 +- src/services/rooms.js | 2 +- src/services/users.ts | 2 +- 6 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/index.ts b/src/index.ts index 134f23c0..0b5e20bc 100644 --- a/src/index.ts +++ b/src/index.ts @@ -77,16 +77,8 @@ app.use(limitRateMiddleware); // [Router] Swagger (API 문서) app.use("/docs", docsRouter); -if (eventConfig) { - console.log("Registering /events router"); - app.use(`/events`, require("@/lottery").lotteryRouter); -} else { - console.log("eventConfig is undefined"); -} - // [Router] 이벤트 전용 라우터입니다. eventConfig && app.use(`/events`, require("@/lottery").lotteryRouter); -// app.use(`/events/${eventConfig.mode}`, require("@/lottery").lotteryRouter); // [Middleware] 모든 API 요청에 대하여 origin 검증 app.use(originValidatorMiddleware); diff --git a/src/lottery/modules/contracts.js b/src/lottery/modules/contracts.js index 180b8405..0ef3d893 100644 --- a/src/lottery/modules/contracts.js +++ b/src/lottery/modules/contracts.js @@ -1,6 +1,6 @@ const { buildQuests, completeQuest } = require("./quests"); const mongoose = require("mongoose"); -const logger = require("../../modules/logger"); +import logger from "../../modules/logger"; const { eventConfig } = require("@/loadenv"); const eventPeriod = eventConfig && { diff --git a/src/sampleGenerator/src/testData.js b/src/sampleGenerator/src/testData.js index 5e177a9f..2866eafa 100644 --- a/src/sampleGenerator/src/testData.js +++ b/src/sampleGenerator/src/testData.js @@ -10,7 +10,7 @@ const { maximumIntervalBtwChats, occurenceOfJoin, occurenceOfAbort, -} = require("@/loadenv"); +} = require("../loadenv"); const generateUser = async (id, num, isAdmin) => { const newUser = new userModel({ diff --git a/src/services/notifications.js b/src/services/notifications.js index 8e4a3519..7a8d1706 100644 --- a/src/services/notifications.js +++ b/src/services/notifications.js @@ -5,7 +5,7 @@ const logger = require("@/modules/logger").default; const { registerDeviceToken, validateDeviceToken } = require("@/modules/fcm"); // 이벤트 코드입니다. -const { contracts } = require("@/lottery"); +import { contracts } from "@/lottery"; const registerDeviceTokenHandler = async (req, res) => { try { diff --git a/src/services/rooms.js b/src/services/rooms.js index 7ad94172..10661d9f 100644 --- a/src/services/rooms.js +++ b/src/services/rooms.js @@ -20,7 +20,7 @@ const eventPeriod = eventConfig && { startAt: new Date(eventConfig.period.startAt), endAt: new Date(eventConfig.period.endAt), }; -const { contracts } = require("@/lottery"); +import { contracts } from "@/lottery"; const createHandler = async (req, res) => { const { name, from, to, time, maxPartLength } = req.body; diff --git a/src/services/users.ts b/src/services/users.ts index 73c2b698..561680e9 100644 --- a/src/services/users.ts +++ b/src/services/users.ts @@ -10,7 +10,7 @@ import * as aws from "@/modules/stores/aws"; import { userModel, banModel } from "@/modules/stores/mongo"; // 이벤트 코드입니다. -const { contracts } = require("@/lottery"); +import { contracts } from "@/lottery"; export const agreeOnTermsOfServiceHandler: RequestHandler = async ( req, From 17ee5053f9f008fa2950a1c88d9e4a9724eb5b05 Mon Sep 17 00:00:00 2001 From: thxx Date: Tue, 11 Feb 2025 22:48:27 +0900 Subject: [PATCH 3/3] fix: require to import --- src/index.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 0b5e20bc..18a0fcfb 100644 --- a/src/index.ts +++ b/src/index.ts @@ -38,6 +38,7 @@ import logger from "@/modules/logger"; import { startSocketServer } from "@/modules/socket"; import { connectDatabase } from "@/modules/stores/mongo"; import registerSchedules from "@/schedules"; +import { lotteryRouter } from "@/lottery"; // Firebase Admin 초기설정 initializeFirebase(); @@ -78,7 +79,9 @@ app.use(limitRateMiddleware); app.use("/docs", docsRouter); // [Router] 이벤트 전용 라우터입니다. -eventConfig && app.use(`/events`, require("@/lottery").lotteryRouter); +if (eventConfig) { + app.use("/events", lotteryRouter); +} // [Middleware] 모든 API 요청에 대하여 origin 검증 app.use(originValidatorMiddleware);