Browse Source

proper way to delete csv and json

pull/11/head
vargburz 1 year ago
parent
commit
cf64ac2acc
  1. 9
      src/routes/tasks.ts
  2. 20
      src/services/exporter.ts

9
src/routes/tasks.ts

@ -92,10 +92,11 @@ async function addTask(req: TRequest, res) {
} }
async function deleteTask(req, res) { async function deleteTask(req, res) {
let taskId = req.body.taskId; const taskId = req.body.taskId;
let csvFilePath = path.join(CSV_PATH, `${taskId}.csv`); const jsonFilePath = path.join(CSV_PATH, `${taskId}.json`);
let jsonFilePath = path.join(CSV_PATH, `${taskId}.json`); const data = fs.readFileSync(jsonFilePath, 'utf8');
const csvName = JSON.parse(data)['filename'];
const csvFilePath = path.join(CSV_PATH, `${csvName}.csv`);
if(fs.existsSync(csvFilePath)) { if(fs.existsSync(csvFilePath)) {
fs.unlink(csvFilePath, err => console.error(err)); fs.unlink(csvFilePath, err => console.error(err));
} }

20
src/services/exporter.ts

@ -117,15 +117,15 @@ export class Exporter {
const csvStream = csv.createWriteStream({ headers: true, delimiter: this._task.csvDelimiter }) const csvStream = csv.createWriteStream({ headers: true, delimiter: this._task.csvDelimiter })
.on('error', async e => await this._updateProgress({ status: ExportStatus.ERROR, errorMessage: e.message })); .on('error', async e => await this._updateProgress({ status: ExportStatus.ERROR, errorMessage: e.message }));
const writableStream = fs.createWriteStream(this._getFilePath('csv')); const writableStream = fs.createWriteStream(this._getCsvFilePath());
csvStream.pipe(writableStream); csvStream.pipe(writableStream);
writableStream.on('finish', async () => { writableStream.on('finish', async () => {
if(this._task.progress.status !== ExportStatus.ERROR) { if(this._task.progress.status !== ExportStatus.ERROR) {
console.log(`Everything is written to ${this._getFilename('csv')}`); console.log(`Everything is written to ${this._getCsvFilename()}`);
await this._updateProgress({ status: ExportStatus.FINISHED, progress: 1 }); await this._updateProgress({ status: ExportStatus.FINISHED, progress: 1 });
} else { } else {
console.log(`${this._getFilename('csv')} export is finished with error`); console.log(`${this._getCsvFilename()} export is finished with error`);
} }
}); });
@ -141,7 +141,7 @@ export class Exporter {
progress: _.assign(this._task.progress, progress, { time }), progress: _.assign(this._task.progress, progress, { time }),
}; };
await promisify(fs.writeFile)(this._getFilePath('json'), JSON.stringify(data), 'utf8'); await promisify(fs.writeFile)(this._getJsonFilePath(), JSON.stringify(data), 'utf8');
} catch(err) { } catch(err) {
console.error(err); console.error(err);
throw new Error('Can`t write file'); throw new Error('Can`t write file');
@ -174,12 +174,16 @@ export class Exporter {
} }
} }
private _getFilename(extension: string): string { private _getCsvFilename(): string {
return `${this._task.filename}.${extension}`; return `${this._task.filename}.csv`;
} }
private _getFilePath(extension: string): string { private _getCsvFilePath(): string {
let filename = this._getFilename(extension); let filename = this._getCsvFilename();
return path.join(CSV_PATH, filename); return path.join(CSV_PATH, filename);
} }
private _getJsonFilePath(): string {
return path.join(CSV_PATH, `${this._task.id}.json`);
}
} }

Loading…
Cancel
Save