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 () => { const startedTime = new Date(); 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 ( timeDiff(roomSnap.createTime.toDate(), startedTime) >= 24 || 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 ); }); }); };