node_storage_manager
Version:
Node - Storage Pipe Manager allows world-wide storage and retrieval of any amount of data at any time. You can use Google Cloud Storage, AWS S3 Bucket for a range of scenarios including serving website content, storing data for archival and disaster recov
99 lines (88 loc) • 2.63 kB
JavaScript
const StorageSystem = require('./storage-system');
const fse = require('fs-extra');
const fs = require('fs');
class NFSStorageSystem extends StorageSystem {
/**
* @memberof NFSStorage
* @name Upload
* @params filename, destination
* @description Serves as General Upload SDK for NFS Storage
*/
constructor() {
super();
this._nfsMount = process.env.NFS_MOUNT_POINT;
}
async upload(bucketName, filename, destination) {
try {
const finalDest = `${this._nfsMount}${bucketName}/${filename}`;
return fse.copy(destination, finalDest);
} catch (e) {
return new Error(e);
}
}
/**
* @memberof NFSStorage
* @name Download
* @params filename, destination
* @description Serves as General Download SDK for NFS Storage
*/
async download(bucketName, filename, destination) {
try {
return await fse.copy(`${this._nfsMount}${bucketName}/${filename}`, destination);
} catch (e) {
return new Error(e);
}
}
async createBucket(bucketName) {
try {
if (!fs.existsSync(this._nfsMount + bucketName)) {
return fs.mkdirSync(this._nfsMount + bucketName);
} else {
return new Error('Bucket Already Exist')
}
} catch (err) {
return new Error(err)
}
}
async deleteBucket(bucketName) {
try {
if (fs.existsSync(this._nfsMount + bucketName) === true) {
return fs.rmdirSync(this._nfsMount + bucketName, {recursive: true});
} else {
return new Error('Bucket Does Not Exist')
}
} catch (err) {
return new Error(err)
}
}
async listFiles(bucketName) {
let files = [];
try {
fs.readdirSync(this._nfsMount + bucketName).forEach(file => {
files.push(file);
});
return files
} catch (err) {
return new Error(err)
}
}
async listBuckets() {
let files = [];
try {
fs.readdirSync(this._nfsMount).forEach(file => {
files.push(file);
});
return files
} catch (err) {
return new Error(err)
}
}
async deleteFile(buckName, filename) {
try {
return fs.unlinkSync(this._nfsMount + buckName + filename)
} catch (err) {
return new Error(err)
}
}
}
module.exports = NFSStorageSystem;