From d420e9ecfa5e5ef2236581ffc0f87e2571d872c8 Mon Sep 17 00:00:00 2001 From: Srinivasa Varanasi Date: Wed, 2 Mar 2022 14:37:35 +0530 Subject: [PATCH 1/2] added expireAt index to doc schema & removed services --- Server/index.js | 2 -- Server/models/doc.js | 8 +++++--- Server/routes/savecode.js | 20 ++++++++++---------- Server/services/expiry.js | 21 --------------------- 4 files changed, 15 insertions(+), 36 deletions(-) delete mode 100644 Server/services/expiry.js diff --git a/Server/index.js b/Server/index.js index 243e358..9167d72 100644 --- a/Server/index.js +++ b/Server/index.js @@ -2,7 +2,6 @@ const express = require("express"); const cors = require("cors"); require("dotenv").config(); -const scheduleExpiryJobs = require("./services/expiry"); const saveCode = require("./routes/savecode"); const getCode = require("./routes/getcode"); @@ -34,5 +33,4 @@ app.get("*", (req, res) => { app.listen(port, () => { console.log(`app listening on port ${port}!`); - scheduleExpiryJobs(); }); diff --git a/Server/models/doc.js b/Server/models/doc.js index c8f5687..6358883 100644 --- a/Server/models/doc.js +++ b/Server/models/doc.js @@ -14,12 +14,14 @@ const doc = new mongoose.Schema({ required: true, unique: true, }, - expiryDate: { - type: String, - required: true, + expireAt: { + type: Date, + default: null } }); +doc.index({ expireAt: 1 }, { expireAfterSeconds: 0 }); + const Doc = mongoose.model("DelDog", doc); module.exports = Doc; diff --git a/Server/routes/savecode.js b/Server/routes/savecode.js index 0bb063b..bb1fbe9 100644 --- a/Server/routes/savecode.js +++ b/Server/routes/savecode.js @@ -17,14 +17,14 @@ router.post("/api/v1/saveCode", async (req, res) => { expiryDate === undefined ? (expiryDate = "72h") : (expiryDate = expiryDate); expiryDate = Date.now() + ms(expiryDate.toString()); - + if(!expiryDate) { return res.status(400).json({ error: "No expiry date provided" }); } console.log(new Date(expiryDate), expiryDate); - if (customUrl.length <= 4) { + if (customUrl && customUrl.length <= 4) { return res .status(400) .json({ error: "Custom url must be at least 5 characters long" }); @@ -34,24 +34,24 @@ router.post("/api/v1/saveCode", async (req, res) => { if (customUrl !== undefined) { let url = await Doc.findOne({ customUrl }).exec(); - if (url) + if (url) return res.status(400).json({ error: "Custom url already exists" }); } else { customUrl = await nanoid(5); } - + const doc = new Doc({ - language, - code, - customUrl, - expiryDate + code: code, + language: language, + customUrl: customUrl, + expireAt: expiryDate }); await doc.save(); - } - + } + catch (err) { console.log(err); } diff --git a/Server/services/expiry.js b/Server/services/expiry.js deleted file mode 100644 index cd701e5..0000000 --- a/Server/services/expiry.js +++ /dev/null @@ -1,21 +0,0 @@ -const cron = require("node-cron"); -const Doc = require("../models/doc"); - -const scheduleExpiryJobs = () => { - cron.schedule("0 0 * * * *", () => { - Doc.find({}, (err, docs) => { - if (err) return console.log(err); - - docs.forEach((doc) => { - if (doc.expiryDate < Date.now()) { - Doc.deleteOne({ _id: doc._id }, (err) => { - if (err) return console.log(err); - console.log("Document expired"); - }); - } - }); - }); - }); -}; - -module.exports = scheduleExpiryJobs; From 5fbf42a32409b2425ef6b1fdd2de2595e4cad15e Mon Sep 17 00:00:00 2001 From: Srinivasa Varanasi Date: Tue, 8 Mar 2022 22:27:00 +0530 Subject: [PATCH 2/2] add service/expiry.js in Server --- Server/index.js | 1 + Server/services/expiry.js | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 Server/services/expiry.js diff --git a/Server/index.js b/Server/index.js index 9167d72..3a0b26e 100644 --- a/Server/index.js +++ b/Server/index.js @@ -1,5 +1,6 @@ const express = require("express"); const cors = require("cors"); +// const scheduleExpiryJobs = require("./services/expiry"); require("dotenv").config(); diff --git a/Server/services/expiry.js b/Server/services/expiry.js new file mode 100644 index 0000000..9755648 --- /dev/null +++ b/Server/services/expiry.js @@ -0,0 +1,21 @@ +const cron = require("node-cron"); +const Doc = require("../models/doc"); + +const scheduleExpiryJobs = () => { + cron.schedule("0 0 * * * *", () => { + Doc.find({}, (err, docs) => { + if (err) return console.log(err); + + docs.forEach((doc) => { + if (doc.expiryDate < Date.now()) { + Doc.deleteOne({ _id: doc._id }, (err) => { + if (err) return console.log(err); + console.log("Document expired"); + }); + } + }); + }); + }); +}; + +module.exports = scheduleExpiryJobs; \ No newline at end of file