Files
musicland/functions/src/cron.js
T
2026-01-13 12:23:58 +01:00

41 lines
1.2 KiB
JavaScript

const { onSchedule } = require('firebase-functions/v2/scheduler')
const { db } = require('../index')
exports.resetMonthViews = onSchedule(
{
schedule: '0 0 1 * *',
timeZone: 'Europe/Paris',
timeoutSeconds: 540,
memory: '512MiB',
},
async (event) => {
console.log('Starting monthly reset of project views...')
const projectsRef = db.collection('projects')
const bulkWriter = db.bulkWriter()
bulkWriter.onWriteError((error) => {
console.error('Failed to write document:', error.documentRef.path, error.error)
return false // Do not retry indefinitely for this use case
})
try {
const stream = projectsRef.stream()
let count = 0
for await (const doc of stream) {
const docRef = db.collection('projects').doc(doc.id)
bulkWriter.update(docRef, { monthViews: 0 })
count++
}
await bulkWriter.close()
console.log(`Successfully scheduled reset for ${count} projects.`)
} catch (error) {
console.error('Error in resetMonthViews:', error)
}
}
)