12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- const symbol_1 = require("../helper/symbol");
- const query_1 = require("./query");
- exports.AND = 'and';
- exports.OR = 'or';
- exports.NOT = 'not';
- exports.NOR = 'nor';
- var LOGIC_COMMANDS_LITERAL;
- (function (LOGIC_COMMANDS_LITERAL) {
- LOGIC_COMMANDS_LITERAL["AND"] = "and";
- LOGIC_COMMANDS_LITERAL["OR"] = "or";
- LOGIC_COMMANDS_LITERAL["NOT"] = "not";
- LOGIC_COMMANDS_LITERAL["NOR"] = "nor";
- })(LOGIC_COMMANDS_LITERAL = exports.LOGIC_COMMANDS_LITERAL || (exports.LOGIC_COMMANDS_LITERAL = {}));
- class LogicCommand {
- constructor(operator, operands, fieldName) {
- this._internalType = symbol_1.SYMBOL_LOGIC_COMMAND;
- Object.defineProperties(this, {
- _internalType: {
- enumerable: false,
- configurable: false,
- },
- });
- this.operator = operator;
- this.operands = operands;
- this.fieldName = fieldName || symbol_1.SYMBOL_UNSET_FIELD_NAME;
- if (this.fieldName !== symbol_1.SYMBOL_UNSET_FIELD_NAME) {
- if (Array.isArray(operands)) {
- operands = operands.slice();
- this.operands = operands;
- for (let i = 0, len = operands.length; i < len; i++) {
- const query = operands[i];
- if (isLogicCommand(query) || query_1.isQueryCommand(query)) {
- operands[i] = query._setFieldName(this.fieldName);
- }
- }
- }
- else {
- const query = operands;
- if (isLogicCommand(query) || query_1.isQueryCommand(query)) {
- operands = query._setFieldName(this.fieldName);
- }
- }
- }
- }
- _setFieldName(fieldName) {
- const operands = this.operands.map(operand => {
- if (operand instanceof LogicCommand) {
- return operand._setFieldName(fieldName);
- }
- else {
- return operand;
- }
- });
- const command = new LogicCommand(this.operator, operands, fieldName);
- return command;
- }
- and(...__expressions__) {
- const expressions = Array.isArray(arguments[0]) ? arguments[0] : Array.from(arguments);
- expressions.unshift(this);
- return new LogicCommand(LOGIC_COMMANDS_LITERAL.AND, expressions, this.fieldName);
- }
- or(...__expressions__) {
- const expressions = Array.isArray(arguments[0]) ? arguments[0] : Array.from(arguments);
- expressions.unshift(this);
- return new LogicCommand(LOGIC_COMMANDS_LITERAL.OR, expressions, this.fieldName);
- }
- }
- exports.LogicCommand = LogicCommand;
- function isLogicCommand(object) {
- return object && (object instanceof LogicCommand) && (object._internalType === symbol_1.SYMBOL_LOGIC_COMMAND);
- }
- exports.isLogicCommand = isLogicCommand;
- function isKnownLogicCommand(object) {
- return isLogicCommand && (object.operator.toUpperCase() in LOGIC_COMMANDS_LITERAL);
- }
- exports.isKnownLogicCommand = isKnownLogicCommand;
- exports.default = LogicCommand;
|