-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfiles-service.js
52 lines (46 loc) · 1.52 KB
/
files-service.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
const fs = require('fs');
const { report } = require('process');
const util = require('util');
const readdir = util.promisify(fs.readdir);
const readFile = util.promisify(fs.readFile);
const createPath = ( path ) => {
if (!fs.existsSync(path)){
fs.mkdirSync(path);
}
}
const readFiles = async (fileDirectory) => {
try {
const filenames = await readdir(fileDirectory);
const files_promise = filenames.map(filename => {
return readFile(fileDirectory + filename, 'utf-8');
});
const response = await Promise.all(files_promise);
let result = [];
response.forEach((row) => { row.split(/\r?\n/).forEach((bin) => {result.push(bin)})});
result = result.filter(e => e);
return result;
} catch (error) {
console.error('Error while reading files under ' , fileDirectory, ', \n error message =>' , error);
}
}
const createFile = async (filename, headers) => {
try {
fs.writeFileSync(filename, headers);
} catch (error) {
console.error(`Got an error trying to create ${filename}: ${error.message}`);
}
}
const addRecord = async ({ filename, headers, data }) => {
try {
let newLine = [];
headers.split(',').forEach((header) => {
newLine.push(data[header]);
});
newLine = `\n${newLine}`;
await fs.appendFileSync(filename, newLine, { flag: 'a' });
} catch (error) {
console.error(`Got an error trying to add a record to ${filename}: ${error.message}`);
}
}
const FileService = { createPath, readFiles, createFile, addRecord };
module.exports = FileService;