node-mongo-demo

node.js and mongodb demo

git clone https://9o.is/git/node-mongo-demo.git

commit 6f348d89a1e88286287940b480c1f5c0bcb2e476
parent a4c6edd672406f72e0029d1f0e8214ec33e1acac
Author: Jul <jul@9o.is>
Date:   Sun, 26 Jan 2025 08:55:50 -0500

create lucky7 sessions service

Diffstat:
Mbackend/src/api/lucky7-sessions-create.js | 30++----------------------------
Abackend/src/services/lucky7-session.js | 33+++++++++++++++++++++++++++++++++
2 files changed, 35 insertions(+), 28 deletions(-)

diff --git a/backend/src/api/lucky7-sessions-create.js b/backend/src/api/lucky7-sessions-create.js @@ -1,36 +1,10 @@ -import Lucky7Session from "../models/lucky7-session.js"; - -const dateDifferenceInSeconds = (date1, date2) => { - return Math.floor((date2 - date1) / 1000) + 1; -}; - -const nextGameTime = (startDateTime) => { - const currentSeconds = Math.ceil(new Date() / 1000); - const startSeconds = Math.floor(startDateTime.getTime() / 1000); - const difference = currentSeconds - startSeconds; - - const nextChunk = Math.ceil(difference / 15) * 15; - return new Date((startSeconds + nextChunk) * 1000); -}; +import lucky7Session from "../services/lucky7-session.js"; const lucky7SessionsCreate = async (req, res) => { const { userId } = req; try { - const session = await Lucky7Session.findOneAndUpdate({ - userId, - }, {}, { - upsert: true, - new: true, - }); - - const { _id, createdAt } = session.toObject(); - - res.status(200).json({ - id: _id, - createdAt, - nextGameInSeconds: dateDifferenceInSeconds(new Date(), nextGameTime(createdAt)), - }); + res.status(200).json(await lucky7Session(userId)); } catch (error) { console.error(error); res.status(500).json({ message: "Something went wrong" }); diff --git a/backend/src/services/lucky7-session.js b/backend/src/services/lucky7-session.js @@ -0,0 +1,33 @@ +import Lucky7Session from "../models/lucky7-session.js"; + +export const dateDifferenceInSeconds = (date1, date2) => { + return Math.floor((date2 - date1) / 1000) + 1; +}; + +export const nextGameTime = (startDateTime) => { + const currentSeconds = Math.ceil(new Date() / 1000); + const startSeconds = Math.floor(startDateTime.getTime() / 1000); + const difference = currentSeconds - startSeconds; + + const nextChunk = Math.ceil(difference / 15) * 15; + return new Date((startSeconds + nextChunk) * 1000); +}; + +const lucky7Session = async (userId) => { + const session = await Lucky7Session.findOneAndUpdate({ + userId, + }, {}, { + upsert: true, + new: true, + }); + + const { _id, createdAt } = session.toObject(); + + return { + id: _id, + createdAt, + nextGameInSeconds: dateDifferenceInSeconds(new Date(), nextGameTime(createdAt)), + }; +}; + +export default lucky7Session;