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;