Browse Source

Refactor FileService class to use event emitter module for better code organization and readability

node16
Onja 12 months ago
parent
commit
e9a15d9834
  1. 14
      src/services/file.js

14
src/services/file.js

@ -1,24 +1,24 @@
const EventEmitter = require('events');
const csv = require('csv-parser');
const File = require('../models/File');
const emitter = require('./eventEmitter');
// Create a class FileService that extends EventEmitter
class FileService extends EventEmitter {
class FileService {
async parseFromUrl(url, columns) {
this.emit('parseFromUrl.start', { url, columns });
emitter.emit('parseFromUrl.start', { url, columns });
// Check if url is valid
if (!url) {
this.emit('parseFromUrl.error', { url, columns, error: 'Invalid url' });
emitter.emit('parseFromUrl.error', { url, columns, error: 'Invalid url' });
return Promise.reject(new Error('Invalid url'));
}
// Check columns
if (!columns || !Array.isArray(columns) || columns.length === 0) {
this.emit('parseFromUrl.error', { url, columns, error: 'Invalid columns' });
emitter.emit('parseFromUrl.error', { url, columns, error: 'Invalid columns' });
return Promise.reject(new Error('Invalid columns'));
}
@ -28,11 +28,11 @@ class FileService extends EventEmitter {
const stream = file.parse(columns);
if ( !stream ) {
this.emit('parseFromUrl.error', { url, columns, error: 'Invalid stream' });
emitter.emit('parseFromUrl.error', { url, columns, error: 'Invalid stream' });
return Promise.reject(new Error('Invalid stream'));
}
this.emit('parseFromUrl.end', { url, columns, filepath });
emitter.emit('parseFromUrl.end', { url, columns, filepath });
return Promise.resolve(stream);
}
}

Loading…
Cancel
Save