yandex-tank-ammo-generator
Version:
Cartridge generation for Yandex tank
59 lines (58 loc) • 1.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function isScriptBuilder(b) {
return true;
}
exports.isScriptBuilder = isScriptBuilder;
class ScriptBuilder {
constructor() {
this._scripts = {
script_fields: {},
};
}
static isScriptBuilder(b) {
return typeof b !== 'string';
}
/**
* Добавить свой скрипт
* @param fieldName
* @param source
* @return {this}
*/
addCustomField(fieldName, source) {
this._scripts.script_fields[fieldName] = {
script: {
source,
},
};
return this;
}
/**
* Билд
* @return {{script_fields: {currentPrice: {script: {source: string}}}}}
*/
build() {
return this._scripts;
}
}
exports.ScriptBuilder = ScriptBuilder;
ScriptBuilder.Math = {
generateMaxFunction: (valuesPath) => {
let tmp = `Math.max(0,`;
tmp += valuesPath.map(item => `params['_source']${item}`).join(',');
tmp += ')';
return tmp;
},
generateMaxFunctionOfArray: (cities) => {
let tmp = 'def price=0; for( city in [';
tmp += cities.map(item => `'${item}'`).join(',');
tmp += `]){ if(params['_source']['cities'][city] !== null){price = Math.max(params['_source']['cities'][city]['price'],price) }} return price;`;
return tmp;
},
generateMinFunction: (valuesPath) => {
let tmp = `Math.min(999999,`;
tmp += valuesPath.map(item => `params['_source']${item}`).join(',');
tmp += ')';
return tmp;
},
};