File: /var/dev/nowruzgan/rest/node_modules/parley/test/fixtures/find.fixture.js
/**
* Module dependencies
*/
var _ = require('@sailshq/lodash');
var flaverr = require('flaverr');
var parley = require('../../');
var helpFind = require('./private/help-find.util');
/**
* find.fixture.js
*
* A simplified mock of Waterline's `find()` model method.
*
* @param {Dictionary?} criteria
* @param {Function} explicitCb
*
* @returns {Deferred} If no callback specified
*/
module.exports = function find( /* variadic */ ){
var metadata = {};
var explicitCb;
// Handle variadic usage:
// ===========================================================================
if (!_.isUndefined(arguments[0])) {
if (_.isFunction(arguments[0])) {
explicitCb = arguments[0];
}
else {
metadata.criteria = arguments[0];
}
}//>-
if (!_.isUndefined(arguments[1])) {
explicitCb = arguments[1];
}//>-
// ===========================================================================
// This deferred may or may not actually need to get built.
// (but in case it does, we define it out here so we can unambiguously
// return it below)
//
// > If an explicit callback was specified, then go ahead
// > and proceed to where the real action is at.
// > Otherwise, no callback was specified explicitly,
// > so we'll build and return a Deferred instead.
var deferred = parley(function (deferredCb){
helpFind(undefined, metadata, deferredCb);
}, explicitCb);
// If we ended up building a Deferred above, we would have done so synchronously.
// In other words, if there's going to be a Deferred, we have it here.
//
// So if we DON'T have a Deferred, then we know that we must have already went ahead
// and performed our business logic. So we'll just return undefined.
if (!deferred) {
return;
}//-•
// IWMIH, then we know we have a Deferred.
// (and thus we haven't actually done anything yet.)
// At this point, we might opt to attach some methods to our Deferred.
_.extend(deferred, {
where: function(clause) {
metadata.criteria = metadata.criteria || {};
metadata.criteria.where = clause;
return deferred;
}
});
// When we're confident that our Deferred is ready for primetime,
// we finish up by returning it.
return deferred;
};