const admin = require('firebase-admin'); const cleanUpRoom = require('./cleanUpRoom'); const timeDiff = (ds1, ds2) => { const d1 = new Date(ds1); const d2 = new Date(ds2); var diff = (d2.getTime() - d1.getTime()) / 1000; diff /= 60 * 60; return Math.abs(Math.round(diff)); }; module.exports = async (req, res) => { const startedTime = new Date(); res.status(200).send({message:'Started processing'}); const roomList = await admin .firestore() .collection('rooms') .listDocuments() .then((rL) => rL) .catch((err) => { console.error( `Failed to run auto clean up (get room list) @ ${new Date().toLocaleTimeString()}`, err ); }); roomList.forEach((roomRef) => { roomRef .get() .then(async (roomSnap) => { if ( // MORE THAN 24 HOURS AND NOT IN USE (timeDiff(roomSnap.createTime.toDate(), startedTime) >= 24 && timeDiff(roomSnap.updateTime.toDate(), startedTime) >= 4) || // LESS THAN 24 HOURS BUT NOT IN USE timeDiff(roomSnap.updateTime.toDate(), startedTime) >= 12 ) { await cleanUpRoom(roomSnap.id); console.info(`Deleted room ${roomSnap.id} from auto cleanup`); } return; }) .catch((err) => { console.error( `Failed to run auto clean up (get room snap) @ ${new Date().toLocaleTimeString()}`, err ); }); }); return; };