- Removidos os arquivos não utilizados: fetchService, geocodeService, normalizeService e retryService. - Adicionado o viabilidadeController para gerenciar consultas de viabilidade e upload de arquivos CSV. - Criadas as viabilidadeRoutes para tratar as rotas da API relacionadas à viabilidade. - Implementado o csvService para processamento de arquivos CSV e integração com as consultas de viabilidade. - Criado o jobStore.service para gerenciamento do estado dos jobs durante o processamento do CSV. - Desenvolvido o viabilidadeService para integração com a API de viabilidade.
58 lines
919 B
JavaScript
58 lines
919 B
JavaScript
const crypto = require('crypto');
|
|
|
|
const jobs = new Map();
|
|
|
|
function createJob(total) {
|
|
const id = crypto.randomUUID();
|
|
jobs.set(id, {
|
|
id,
|
|
status: 'processing',
|
|
total,
|
|
processed: 0,
|
|
errors: 0,
|
|
download: null,
|
|
startedAt: new Date()
|
|
});
|
|
return id;
|
|
}
|
|
|
|
function incrementProcessed(id) {
|
|
const job = jobs.get(id);
|
|
if (job) job.processed++;
|
|
}
|
|
|
|
function incrementErrors(id) {
|
|
const job = jobs.get(id);
|
|
if (job) job.errors++;
|
|
}
|
|
|
|
function finishJob(id, download) {
|
|
const job = jobs.get(id);
|
|
if (job) {
|
|
job.status = 'done';
|
|
job.download = download;
|
|
job.finishedAt = new Date();
|
|
}
|
|
}
|
|
|
|
function failJob(id, error) {
|
|
const job = jobs.get(id);
|
|
if (job) {
|
|
job.status = 'error';
|
|
job.error = error;
|
|
}
|
|
}
|
|
|
|
function getJob(id) {
|
|
return jobs.get(id);
|
|
}
|
|
|
|
module.exports = {
|
|
createJob,
|
|
incrementProcessed,
|
|
incrementErrors,
|
|
finishJob,
|
|
failJob,
|
|
getJob
|
|
};
|