From e9a15d9834d52cc1917064e0801a4f50723a33be Mon Sep 17 00:00:00 2001 From: Onja Date: Tue, 10 Oct 2023 16:11:33 +0300 Subject: [PATCH] Refactor FileService class to use event emitter module for better code organization and readability --- src/services/file.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/services/file.js b/src/services/file.js index 5981c6a..3b6d706 100644 --- a/src/services/file.js +++ b/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); } }