Browse Source

fix: asynchronous local file write

Signed-off-by: mertmit <mertmit99@gmail.com>
pull/5031/head
mertmit 2 years ago
parent
commit
22c4d1739d
  1. 17
      packages/nocodb/src/lib/v1-legacy/plugins/adapters/storage/Local.ts

17
packages/nocodb/src/lib/v1-legacy/plugins/adapters/storage/Local.ts

@ -1,5 +1,6 @@
import fs from 'fs';
import path from 'path';
import { promisify } from 'util';
import mkdirp from 'mkdirp';
@ -8,16 +9,20 @@ import NcConfigFactory from '../../../../utils/NcConfigFactory';
import axios from 'axios';
const writeFileAsync = promisify(fs.writeFile)
const readFileAsync = promisify(fs.readFile)
const unlinkAsync = promisify(fs.unlink)
export default class Local implements IStorageAdapterV2 {
constructor() {}
public async fileCreate(key: string, file: XcFile): Promise<any> {
const destPath = path.join(NcConfigFactory.getToolDir(), ...key.split('/'));
try {
mkdirp.sync(path.dirname(destPath));
const data = await fs.readFileSync(file.path);
await fs.writeFileSync(destPath, data);
fs.unlinkSync(file.path);
await mkdirp(path.dirname(destPath));
const data = await readFileAsync(file.path)
await writeFileAsync(destPath, data);
await unlinkAsync(file.path);
// await fs.promises.rename(file.path, destPath);
} catch (e) {
throw e;
@ -41,8 +46,8 @@ export default class Local implements IStorageAdapterV2 {
origin: 'https://www.airtable.com/',
},
})
.then((response) => {
mkdirp.sync(path.dirname(destPath));
.then(async (response) => {
await mkdirp(path.dirname(destPath));
const file = fs.createWriteStream(destPath);
// close() is async, call cb after close completes
file.on('finish', () => {

Loading…
Cancel
Save