49 lines
1.5 KiB
JavaScript
49 lines
1.5 KiB
JavaScript
// 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')
|
|
}
|
|
|