hubxglpi/src/infra/cron/sync.cron.js

49 lines
1.5 KiB
JavaScript
Raw Normal View History

// infra/cron/sync.cron.js
const loadEnv = require('../../config/env.loader.js')
loadEnv()
const cron = require('node-cron')
const { syncTickets } = require('../../modules/tickets/controller/tickets.controller.js')
const { syncComments } = require('../../modules/comments/useCases/syncHubCommentToGlpi.usecase.js')
//const { retryFailedTickets } = require('../../modules/tickets/useCases/retryFailedTickets.usecase.js') //TODO
//const { retryFailedComments } = require('../../modules/comments/useCases/retryFailedComments.usecase.js') //TODO
const { logInfo, logError } = require('../../shared/utils/logger.js')
let isCronRunning = false
logInfo('Schedule agendado para rodar a cada minuto.')
cron.schedule('* * * * *', async () => {
if (isCronRunning) {
logInfo('Cron já está em execução. Ignorando nova execução.')
return
}
isCronRunning = true
try {
await runSyncPipeline()
} catch (error) {
logError('Erro no cron', error)
} finally {
isCronRunning = false
}
})
async function runSyncPipeline() {
logInfo('[CRON] Iniciando Sync Pipeline Hubsoft -> GLPI ')
logInfo('[CRON] Sincronizando Tickets')
await syncTickets()
logInfo('[CRON] Sincronizando comentários')
await syncComments()
logInfo('[CRON] Resincronizando Tickets que fallharam')
//await retryFailedTickets()
logInfo('[CRON] Resincronizando Comentarios que falharam')
//await retryFailedComments()
logInfo('[CRON] Pipeline Hubsoft -> GLPI finalizado')
}