12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /**
- * Module dependencies
- */
- var _ = require('@sailshq/lodash');
- var flaverr = require('flaverr');
- var parley = require('../../');
- var helpFind = require('./private/help-find.util');
- /**
- * find-but-with-final-after-exec-lc.fixture.js
- *
- * A simplified/fake mock of Waterline's `find()` model method --
- * but using a lifecycle callback to do some weird stuff.
- *
- * > See `find.fixture.js` for more info. Many comments were removed from the code below
- * > to avoid unnecessary duplication and reduce the chances of things getting weird.
- *
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- * @param {Dictionary?} criteria
- * @param {Function} explicitCb
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- * @returns {Deferred} If no callback specified
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- */
- module.exports = function findButWithFinalAfterExecLC( /* 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];
- }//>-
- // ===========================================================================
- return parley(function (done){
- helpFind(undefined, metadata, done);
- }, explicitCb, {
- where: function(clause) {
- metadata.criteria = metadata.criteria || {};
- metadata.criteria.where = clause;
- return this;
- }
- }, undefined, undefined, function (err, result){
- // console.log('* * * * running intercept');
- if (err) {
- if (err.code !== 'E_SOME_ERROR') {
- err = flaverr('E_SOME_UNRECOGNIZED_ERROR', new Error(err.message));
- // console.log('* * MUTATED ERROR!');
- return err;
- }//-•
- return err;
- }//-•
- // Unless criteria is `true`, simulate a case where we'd want to change the result.
- // > Note that we could mutate result and return that, or just return the result.
- // > It shouldn't matter! Same thing for the error above.
- if (metadata.criteria !== true) {
- result.push({ fake: true });
- // console.log('* * MUTATED OUTPUT!');
- return result;
- }//-•
- return result;
- });
- };
|