/* eslint-disable promise/always-return */
/**
* @module method/purge
*/
const admin = require('firebase-admin');
const db = admin.firestore();
/**
* Purge all invite codes that are past their expiration for a month
*/
const purge = () => {
// Assign purgable time
const allowanceInHours = 720; // 30 days with 24 hours a day
const allowanceInMill = allowanceInHours * 3600 * 1000;
const purgableTargetTimestamp = Date.now() - allowanceInMill;
console.log(purgableTargetTimestamp);
// Assign reference to invite code codes collection
const inviteCodeRef = db.collection('appGlobalSettings')
.doc('inviteCode')
.collection('codes');
// Assign query reference to purgable invite code
const purgableInviteCodeRef = inviteCodeRef.where('expiration', '<', new Date(purgableTargetTimestamp));
// Delete purgable invite code documents
return purgableInviteCodeRef.get().then((purgableSnapshot) => {
purgableSnapshot.forEach((inviteCodeDoc) => {
// Delete document
inviteCodeDoc.ref.delete();
// Purge function
console.info('[Success] Performed daily invite code purge');
// Return
return null;
});
});
};
module.exports = purge;