From 674a0e2aa2d65afc2b0cba4791f9277c27d9b78e Mon Sep 17 00:00:00 2001 From: Andres D <84483578+fmcubium@users.noreply.github.com> Date: Mon, 1 Apr 2024 00:56:39 -0400 Subject: [PATCH] Cronjob works now --- server/.gitignore | 1 + server/src/actions/deleter.ts | 25 +++++++++++++++++++++++++ server/src/index.ts | 4 ++++ 3 files changed, 30 insertions(+) create mode 100644 server/src/actions/deleter.ts diff --git a/server/.gitignore b/server/.gitignore index 81da29c6f..ea9d63c78 100644 --- a/server/.gitignore +++ b/server/.gitignore @@ -138,3 +138,4 @@ build # Other .env build/ +.firebase-secrets.json \ No newline at end of file diff --git a/server/src/actions/deleter.ts b/server/src/actions/deleter.ts new file mode 100644 index 000000000..595075249 --- /dev/null +++ b/server/src/actions/deleter.ts @@ -0,0 +1,25 @@ +import { messagesCollection } from '../utilities/firebaseInit' +const cron = require('node-cron') + +//Schedule tasks to be run on the server +export const scheduleCron = () => { + cron.schedule('*/30 * * * * *', function() { + console.log('Deleting old messages every 30s.') + + //Deleter action, takes in a unix timestamp and deletes + //everything older than that + const expiryTime = Number(process.env.message_duration) //Set to 1 minute for testing purposes + + const q = messagesCollection.orderByChild('timeSent').endAt(Date.now() - expiryTime) + + q.on('value', (querySnapshot)=> { + querySnapshot.forEach(async (doc) => { + //Delete the doc here + console.log(doc.id) + await doc.ref.delete() + }) + }) + }) +} + + diff --git a/server/src/index.ts b/server/src/index.ts index 202a50f8b..c4c5afb1f 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -11,6 +11,7 @@ import {geohashForLocation} from 'geofire-common'; import { ConnectedUser } from './types/User'; import { getAuth } from 'firebase-admin/auth'; import Mailgun from "mailgun.js"; +import { scheduleCron } from './actions/deleter'; const { createServer } = require("http"); const { Server } = require("socket.io"); @@ -31,6 +32,9 @@ const io = new Server(socketServer, { }, }); +// Begin searching and collecting Garbage (old messages) +scheduleCron(); + // Firebase JWT Authorization Custom Middleware io.use(async (socket, next) => { const token = socket.handshake.auth.token;