galleon
Version:
A badass SMTP mail server built on Node to make your life simpler.
47 lines (39 loc) • 1.46 kB
JavaScript
var build = require('./get.build');
module.exports = function (Galleon, query, callback) {
var folder = build(query.email, query.page)[query.folder.toUpperCase()];
if (!folder) return callback('Folder not found!');
// Set Default Query Paginate to true
if (query.paginate === undefined) query.paginate = true;
if (!Galleon.connection.collections[folder.collection]) return callback(new Error('Collection Not Found!'));
function GALLEON_QUERY_GET_EXEC(error, mails) {
if (error) return callback("Not Authenticated");
if ((!mails) || (mails.length < 1)) mails = [];
// Count total
Galleon.connection.collections.mail.count().where(folder.where).exec(function (error, found) {
if (error) return callback("Not Authenticated");
callback(null,
((folder.filter) && (folder.filter.constructor === Function))
? folder.filter(mails) : mails,
{
folder: query.folder,
page: query.page,
total: parseInt(found),
limit: parseInt(folder.paginate.limit),
})
})
}
if (query.paginate) {
Galleon.connection.collections[folder.collection]
.find()
.where(folder.where)
.sort(folder.sort)
.paginate(folder.paginate)
.exec(GALLEON_QUERY_GET_EXEC)
} else {
Galleon.connection.collections[folder.collection]
.find()
.where(folder.where)
.sort(folder.sort)
.exec(GALLEON_QUERY_GET_EXEC)
}
}