diff --git a/lib/document_stores/file.js b/lib/document_stores/file.js index 44499e5..d7111e6 100644 --- a/lib/document_stores/file.js +++ b/lib/document_stores/file.js @@ -11,51 +11,49 @@ class FileDocumentStore { } //save data in a file, key as md5 - since we don't know what we can passed here - set(key, data, callback, skipExpire){ + async set(key, data, callback, skipExpire){ const _this = this; const filePath = this.getPath(key); - - try { - if (!fs.existsSync(this.basePath)){ - winston.debug('creating data storage directory', { filename: this.basePath }); - fs.mkdirSync(this.basePath, {mode: '700'}); - } - try { - fs.writeFileSync(filePath, data); + if (!fs.existsSync(this.basePath)){ + winston.debug('creating data storage directory', { filename: this.basePath }); + await fs.promises.mkdir(this.basePath, {mode: '700'}) + .catch(err => { + winston.error('error while creating dir', { path: _this.basePath, error: err }); + }); + } + + winston.silly('set key', { type: 'file', filename: filePath }); + await fs.promises.writeFile(filePath, data, {mode: '600'}) + .then(() => { callback(true); if (_this.expire && !skipExpire){ winston.warn('file store cannot set expirations on keys', { file: filePath }); } - } - catch (err){ + }) + .catch(err => { winston.error('error while writing document to file', { file: filePath, error: err }); callback(false); - } - } - catch (err){ - winston.error('error while creating dir', { path: _this.basePath, error: err }); - return callback(false); - } + }); } //get data from a file - get(key, callback, skipExpire){ + async get(key, callback, skipExpire){ const _this = this; const filePath = this.getPath(key); - - try { - winston.silly('get key', { type: 'file', filename: filePath }); - let data = fs.readFileSync(filePath).toString(); - callback(data); - if (_this.expire && !skipExpire){ - winston.warn('file store cannot set expirations on keys', { file: filePath }); - } - } - catch (err){ - winston.debug('error while reading document', { file: filePath, error: err }); - return callback(false); - } + + winston.silly('get key', { type: 'file', filename: filePath }); + await fs.promises.readFile(filePath, {encoding: 'utf8'}) + .then(data => { + callback(data); + if (_this.expire && !skipExpire){ + winston.warn('file store cannot set expirations on keys', { file: filePath }); + } + }) + .catch(err => { + winston.debug('error while reading document', { file: filePath, error: err }); + return callback(false); + }); } //generate a md5 hash of a key