UNPKG

ramlitedb

Version:

NoSQL Database for node.js with all data loaded in ram and backup in json file

147 lines (136 loc) 2.88 kB
/** * Contains a set of generic promises * * Specific promises must be created somewhere else */ var fs = require('fs'); var exec = require('child_process').exec; var promises = { // Execute shell command system: (command) => { return new Promise((resolve, reject) => { exec(command, (error, stdout, stderr) => { if( error !== null && !error.killed) {// error reject({ error: error, stdout: stdout, stderr: stderr }) } else { resolve(stdout); } }); }); }, // Regroups all file manipulation promises file: { // List files from a folder list: (path) => { return new Promise((resolve, reject) => { fs.readdir(path, (err, files) => { if (err) { reject(err); } else { resolve(files); } }) }) }, // Check if file/folder exists exists: (path) => { return new Promise((resolve) => { fs.access(path, fs.F_OK, (err) => { if (err) {// error -> file does not exists // console.log(path, err); resolve(false); } else { resolve(true); } }); }); }, // Read data from a file read: (path) => { return new Promise((resolve, reject) => { fs.readFile(path, 'utf8', (err, data) => { if( err) { reject(err); } else { resolve(data); } }); }); }, // Write data into a file write: (path, data) => { return new Promise((resolve, reject) => { fs.writeFile(path, data, (err) => { if( err) { reject(err); } else { resolve(); } }) }); }, // Append data into a file append: (path, data) => { return new Promise((resolve, reject) => { fs.appendFile(path, data, (err) => { if( err) { reject(err); } else { resolve(); } }) }); }, // delete a file delete: (path) => { return new Promise((resolve, reject) => { promises.file.exists(folderPath).then( // Check if file exists () => { fs.unlink(path, (err) => { if( err) { reject(err); } else { resolve(); } }) }, () => {resolve()} // no need to unlink it ) }); }, // Get statistics about a file/folder stats: (path) => { return new Promise((resolve, reject) => { fs.stat(path, (err, stats) => { if( err) { reject(err); } else { resolve(stats); } }); }); }, // Create a directory with 777 permissions (if not existing yet) mkdir: (folderPath) => { return new Promise((resolve, reject) => { promises.file.exists(folderPath).then( // Check if folder exists () => {resolve()}, // no need to create one () => { fs.mkdir(folderPath, 0o777, (err) => { if( err) { reject(err); } else { resolve(); } }) } ) }); } } } module.exports = promises;