"use strict";
var _ = require('lodash');
module.exports = exports = function getAll(schema,options){
/**
* Получить все записи
*
* @param {number} opts.limit - rows limit, default 1000
* @param {object} opts.sort - sorting, default { name: -1 }
* @param {object} opts.filter - filter, default {}
* @param {number} opts.skip - skip records, default 0
*
* @function getAll
* @memberOf Thing
* @static
*/
schema.statics.getAll = function(opts){
var self = this;
var collectionName = self.collection.name;
return function(req,res,next) {
var defaults = {
limit: req.param('limit') || 1000,
sort: req.param('sort') || { name: 1 },
filter: req.param('filter') || {},
skip: req.param('skip') || 0
};
_.merge(defaults,opts);
self
.find(defaults.filter)
.skip(defaults.skip)
.limit(defaults.limit)
.sort(defaults.sort)
.exec(function(err, results){
if(err) return next({
statusCode: 500,
message: res.__('ERROR_DATABASE_FATAL')
});
/**
* Get total counts
*/
self.count(defaults.filter,function(e,c){
if(err) return next({
statusCode: 500,
message: res.__('ERROR_DATABASE_FATAL')
});
req[collectionName] = results;
res.locals[collectionName] = results || [];
res.locals[collectionName].count = c;
next();
});
});
}
};
/**
*
* @param {Object} opts
* @function removeAll
* @memberOf Thing
* @static
*
*/
schema.statics.removeAll = function(opts){
var self = this;
var collectionName = self.collection.name;
return function(req,res,next){
var defaults = {
filter: req.param('filter') || {}
};
_.merge(defaults,opts);
self
.remove(defaults.filter)
.exec(function(err,results){
if(err) return next({
statusCode: 500,
message: res.__('ERROR_DATABASE_FATAL')
});
res.locals[collectionName] = [];
next();
});
};
};
};