MCPcopy
hub / github.com/Vincit/objection.js / createModifier

Function createModifier

lib/utils/createModifier.js:5–38  ·  view source on GitHub ↗
({ modelClass, modifier, modifiers })

Source from the content-addressed store, hash-verified

3const { asArray, isString, isFunction, isPlainObject } = require('./objectUtils');
4
5function createModifier({ modelClass, modifier, modifiers }) {
6 const modelModifiers = modelClass ? modelClass.getModifiers() : {};
7
8 const modifierFunctions = asArray(modifier).map((modifier) => {
9 let modify = null;
10
11 if (isString(modifier)) {
12 modify = (modifiers && modifiers[modifier]) || modelModifiers[modifier];
13
14 // Modifiers can be pointers to other modifiers. Call this function recursively.
15 if (modify && !isFunction(modify)) {
16 return createModifier({ modelClass, modifier: modify, modifiers });
17 }
18 } else if (isFunction(modifier)) {
19 modify = modifier;
20 } else if (isPlainObject(modifier)) {
21 modify = (builder) => builder.where(modifier);
22 } else if (Array.isArray(modifier)) {
23 return createModifier({ modelClass, modifier, modifiers });
24 }
25
26 if (!modify) {
27 modify = (builder) => modelClass.modifierNotFound(builder, modifier);
28 }
29
30 return modify;
31 });
32
33 return (builder, ...args) => {
34 for (const modifier of modifierFunctions) {
35 modifier.call(builder, builder, ...args);
36 }
37 };
38}
39
40module.exports = {
41 createModifier,

Callers 5

modifyMethod · 0.85
createSubqueryToJoinFunction · 0.85
fetchRelationBatchMethod · 0.85
parseModifyFunction · 0.85
parseModifyFunction · 0.85

Calls 8

asArrayFunction · 0.85
isStringFunction · 0.85
isPlainObjectFunction · 0.85
getModifiersMethod · 0.80
whereMethod · 0.80
modifierNotFoundMethod · 0.80
isFunctionFunction · 0.70
isArrayMethod · 0.45

Tested by

no test coverage detected