333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../browser/src/find-options/FindOperator.ts"],"names":[],"mappings":"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","file":"FindOperator.js","sourcesContent":["import {FindOperatorType} from \"./FindOperatorType\";\nimport {Connection} from \"../\";\n\n/**\n * Find Operator used in Find Conditions.\n */\nexport class FindOperator<T> {\n\n    // -------------------------------------------------------------------------\n    // Private Properties\n    // -------------------------------------------------------------------------\n\n    /**\n     * Operator type.\n     */\n    private _type: FindOperatorType;\n\n    /**\n     * Parameter value.\n     */\n    private _value: T|FindOperator<T>;\n\n    /**\n     * Indicates if parameter is used or not for this operator.\n     */\n    private _useParameter: boolean;\n\n    /**\n     * Indicates if multiple parameters must be used for this operator.\n     */\n    private _multipleParameters: boolean;\n\n    // -------------------------------------------------------------------------\n    // Constructor\n    // -------------------------------------------------------------------------\n\n    constructor(type: FindOperatorType, value: T|FindOperator<T>, useParameter: boolean = true, multipleParameters: boolean = false) {\n        this._type = type;\n        this._value = value;\n        this._useParameter = useParameter;\n        this._multipleParameters = multipleParameters;\n    }\n\n    // -------------------------------------------------------------------------\n    // Accessors\n    // -------------------------------------------------------------------------\n\n    /**\n     * Indicates if parameter is used or not for this operator.\n     * Extracts final value if value is another find operator.\n     */\n    get useParameter(): boolean {\n        if (this._value instanceof FindOperator)\n            return this._value.useParameter;\n\n        return this._useParameter;\n    }\n\n    /**\n     * Indicates if multiple parameters must be used for this operator.\n     * Extracts final value if value is another find operator.\n     */\n    get multipleParameters(): boolean {\n        if (this._value instanceof FindOperator)\n            return this._value.multipleParameters;\n\n        return this._multipleParameters;\n    }\n\n    /**\n     * Gets the final value needs to be used as parameter value.\n     */\n    get value(): T {\n        if (this._value instanceof FindOperator)\n            return this._value.value;\n\n        return this._value;\n    }\n\n    // -------------------------------------------------------------------------\n    // Public Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Gets SQL needs to be inserted into final query.\n     */\n    toSql(connection: Connection, aliasPath: string, parameters: string[]): string {\n        switch (this._type) {\n            case \"not\":\n                if (this._value instanceof FindOperator) {\n                    return `NOT(${this._value.toSql(connection, aliasPath, parameters)})`;\n                } else {\n                    return `${aliasPath} != ${parameters[0]}`;\n                }\n            case \"lessThan\":\n                return `${aliasPath} < ${parameters[0]}`;\n            case \"lessThanOrEqual\":\n                return `${aliasPath} <= ${parameters[0]}`;\n            case \"moreThan\":\n                return `${aliasPath} > ${parameters[0]}`;\n            case \"moreThanOrEqual\":\n                return `${aliasPath} >= ${parameters[0]}`;\n            case \"equal\":\n                return `${aliasPath} = ${parameters[0]}`;\n            case \"like\":\n                return `${aliasPath} LIKE ${parameters[0]}`;\n            case \"between\":\n                return `${aliasPath} BETWEEN ${parameters[0]} AND ${parameters[1]}`;\n            case \"in\":\n                return `${aliasPath} IN (${parameters.join(\", \")})`;\n            case \"any\":\n                return `${aliasPath} = ANY(${parameters[0]})`;\n            case \"isNull\":\n                return `${aliasPath} IS NULL`;\n            case \"raw\":\n                if (this.value instanceof Function) {\n                    return this.value(aliasPath);\n                } else {\n                    return `${aliasPath} = ${this.value}`;\n                }\n        }\n\n        return \"\";\n    }\n\n}"],"sourceRoot":".."}