using stream.pipeline for better handling errors

This commit is contained in:
SPRINX0\prochazka
2025-03-04 09:51:29 +01:00
parent 69f781d3de
commit beca5c6e45
13 changed files with 87 additions and 96 deletions

View File

@@ -95,9 +95,10 @@ async function reader({ fileName, encoding = 'utf-8', header = true, delimiter,
});
const fileStream = fs.createReadStream(downloadedFile, encoding);
const csvPrepare = new CsvPrepareStream({ header });
fileStream.pipe(csvStream);
csvStream.pipe(csvPrepare);
return csvPrepare;
return [fileStream, csvStream, csvPrepare];
// fileStream.pipe(csvStream);
// csvStream.pipe(csvPrepare);
// return csvPrepare;
}
reader.initialize = (dbgateEnv) => {

View File

@@ -31,11 +31,13 @@ async function writer({ fileName, encoding = 'utf-8', header = true, delimiter,
const csvPrepare = new CsvPrepareStream({ header });
const csvStream = csv.stringify({ delimiter, quoted });
const fileStream = fs.createWriteStream(fileName, encoding);
csvPrepare.pipe(csvStream);
csvStream.pipe(fileStream);
csvPrepare['finisher'] = fileStream;
// csvPrepare.pipe(csvStream);
// csvStream.pipe(fileStream);
// csvPrepare['finisher'] = fileStream;
csvPrepare.requireFixedStructure = true;
return csvPrepare;
return [csvPrepare, csvStream, fileStream];
// return csvPrepare;
}
module.exports = writer;

View File

@@ -63,8 +63,10 @@ async function reader({ fileName, encoding = 'utf-8', itemElementName }) {
const fileStream = fs.createReadStream(fileName, encoding);
const parser = new ParseStream({ itemElementName });
fileStream.pipe(parser);
return parser;
return [fileStream, parser];
// fileStream.pipe(parser);
// return parser;
}
module.exports = reader;

View File

@@ -73,9 +73,10 @@ async function writer({ fileName, encoding = 'utf-8', itemElementName, rootEleme
logger.info(`Writing file ${fileName}`);
const stringify = new StringifyStream({ itemElementName, rootElementName });
const fileStream = fs.createWriteStream(fileName, encoding);
stringify.pipe(fileStream);
stringify['finisher'] = fileStream;
return stringify;
return [stringify, fileStream];
// stringify.pipe(fileStream);
// stringify['finisher'] = fileStream;
// return stringify;
}
module.exports = writer;