var moment = require('moment'), path = require('path'); function StorageBase() { } StorageBase.prototype.getTargetDir = function (baseDir) { var m = moment(new Date().getTime()), month = m.format('MM'), year = m.format('YYYY'); if (baseDir) { return path.join(baseDir, year, month); } return path.join(year, month); }; StorageBase.prototype.generateUnique = function (store, dir, name, ext, i) { var self = this, filename, append = ''; if (i) { append = '-' + i; } filename = path.join(dir, name + append + ext); return store.exists(filename).then(function (exists) { if (exists) { i = i + 1; return self.generateUnique(store, dir, name, ext, i); } else { return filename; } }); }; StorageBase.prototype.getUniqueFileName = function (store, image, targetDir) { var ext = path.extname(image.name), name = path.basename(image.name, ext).replace(/[\W]/gi, '-'), self = this; return self.generateUnique(store, targetDir, name, ext, 0); }; module.exports = StorageBase;