333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../browser/src/query-builder/UpdateQueryBuilder.ts"],"names":[],"mappings":"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","file":"UpdateQueryBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {QueryBuilder} from \"./QueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {Connection} from \"../connection/Connection\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {WhereExpression} from \"./WhereExpression\";\nimport {Brackets} from \"./Brackets\";\nimport {EntityMetadata} from \"../metadata/EntityMetadata\";\nimport {UpdateResult} from \"./result/UpdateResult\";\nimport {ReturningStatementNotSupportedError} from \"../error/ReturningStatementNotSupportedError\";\nimport {ReturningResultsEntityUpdator} from \"./ReturningResultsEntityUpdator\";\nimport {SqljsDriver} from \"../driver/sqljs/SqljsDriver\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {BroadcasterResult} from \"../subscriber/BroadcasterResult\";\nimport {AbstractSqliteDriver} from \"../driver/sqlite-abstract/AbstractSqliteDriver\";\nimport {OrderByCondition} from \"../find-options/OrderByCondition\";\nimport {LimitOnUpdateNotSupportedError} from \"../error/LimitOnUpdateNotSupportedError\";\nimport {OracleDriver} from \"../driver/oracle/OracleDriver\";\nimport {UpdateValuesMissingError} from \"../error/UpdateValuesMissingError\";\nimport {EntityColumnNotFound} from \"../error/EntityColumnNotFound\";\nimport {QueryDeepPartialEntity} from \"./QueryPartialEntity\";\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nexport class UpdateQueryBuilder<Entity> extends QueryBuilder<Entity> implements WhereExpression {\n\n    // -------------------------------------------------------------------------\n    // Constructor\n    // -------------------------------------------------------------------------\n\n    constructor(connectionOrQueryBuilder: Connection|QueryBuilder<any>, queryRunner?: QueryRunner) {\n        super(connectionOrQueryBuilder as any, queryRunner);\n        this.expressionMap.aliasNamePrefixingEnabled = false;\n    }\n\n    // -------------------------------------------------------------------------\n    // Public Implemented Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Gets generated sql query without parameters being replaced.\n     */\n    getQuery(): string {\n        let sql = this.createUpdateExpression();\n        sql += this.createOrderByExpression();\n        sql += this.createLimitExpression();\n        return sql.trim();\n    }\n\n    /**\n     * Executes sql generated by query builder and returns raw database results.\n     */\n    async execute(): Promise<UpdateResult> {\n        const queryRunner = this.obtainQueryRunner();\n        let transactionStartedByUs: boolean = false;\n\n        try {\n\n            // start transaction if it was enabled\n            if (this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false) {\n                await queryRunner.startTransaction();\n                transactionStartedByUs = true;\n            }\n\n            // call before updation methods in listeners and subscribers\n            if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n                const broadcastResult = new BroadcasterResult();\n                queryRunner.broadcaster.broadcastBeforeUpdateEvent(broadcastResult, this.expressionMap.mainAlias!.metadata);\n                if (broadcastResult.promises.length > 0) await Promise.all(broadcastResult.promises);\n            }\n\n            // if update entity mode is enabled we may need extra columns for the returning statement\n            const returningResultsEntityUpdator = new ReturningResultsEntityUpdator(queryRunner, this.expressionMap);\n            if (this.expressionMap.updateEntity === true &&\n                this.expressionMap.mainAlias!.hasMetadata &&\n                this.expressionMap.whereEntities.length > 0) {\n                this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getUpdationReturningColumns();\n            }\n\n            // execute update query\n            const [sql, parameters] = this.getQueryAndParameters();\n            const updateResult = new UpdateResult();\n            updateResult.raw = await queryRunner.query(sql, parameters);\n\n            // if we are updating entities and entity updation is enabled we must update some of entity columns (like version, update date, etc.)\n            if (this.expressionMap.updateEntity === true &&\n                this.expressionMap.mainAlias!.hasMetadata &&\n                this.expressionMap.whereEntities.length > 0) {\n                await returningResultsEntityUpdator.update(updateResult, this.expressionMap.whereEntities);\n            }\n\n            // call after updation methods in listeners and subscribers\n            if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n                const broadcastResult = new BroadcasterResult();\n                queryRunner.broadcaster.broadcastAfterUpdateEvent(broadcastResult, this.expressionMap.mainAlias!.metadata);\n                if (broadcastResult.promises.length > 0) await Promise.all(broadcastResult.promises);\n            }\n\n            // close transaction if we started it\n            if (transactionStartedByUs)\n                await queryRunner.commitTransaction();\n\n            return updateResult;\n\n        } catch (error) {\n\n            // rollback transaction if we started it\n            if (transactionStartedByUs) {\n                try {\n                    await queryRunner.rollbackTransaction();\n                } catch (rollbackError) { }\n            }\n            throw error;\n\n        } finally {\n            if (queryRunner !== this.queryRunner) { // means we created our own query runner\n                await queryRunner.release();\n            }\n            if (this.connection.driver instanceof SqljsDriver && !queryRunner.isTransactionActive) {\n                await this.connection.driver.autoSave();\n            }\n        }\n    }\n\n    // -------------------------------------------------------------------------\n    // Public Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Values needs to be updated.\n     */\n    set(values: QueryDeepPartialEntity<Entity>): this {\n        this.expressionMap.valuesSet = values;\n        return this;\n    }\n\n    /**\n     * Sets WHERE condition in the query builder.\n     * If you had previously WHERE expression defined,\n     * calling this function will override previously set WHERE conditions.\n     * Additionally you can add parameters used in where expression.\n     */\n    where(where: string|((qb: this) => string)|Brackets|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n        this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n        const condition = this.computeWhereParameter(where);\n        if (condition)\n            this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n        if (parameters)\n            this.setParameters(parameters);\n        return this;\n    }\n\n    /**\n     * Adds new AND WHERE condition in the query builder.\n     * Additionally you can add parameters used in where expression.\n     */\n    andWhere(where: string|((qb: this) => string)|Brackets, parameters?: ObjectLiteral): this {\n        this.expressionMap.wheres.push({ type: \"and\", condition: this.computeWhereParameter(where) });\n        if (parameters) this.setParameters(parameters);\n        return this;\n    }\n\n    /**\n     * Adds new OR WHERE condition in the query builder.\n     * Additionally you can add parameters used in where expression.\n     */\n    orWhere(where: string|((qb: this) => string)|Brackets, parameters?: ObjectLiteral): this {\n        this.expressionMap.wheres.push({ type: \"or\", condition: this.computeWhereParameter(where) });\n        if (parameters) this.setParameters(parameters);\n        return this;\n    }\n\n    /**\n     * Adds new AND WHERE with conditions for the given ids.\n     */\n    whereInIds(ids: any|any[]): this {\n        return this.where(this.createWhereIdsExpression(ids));\n    }\n\n    /**\n     * Adds new AND WHERE with conditions for the given ids.\n     */\n    andWhereInIds(ids: any|any[]): this {\n        return this.andWhere(this.createWhereIdsExpression(ids));\n    }\n\n    /**\n     * Adds new OR WHERE with conditions for the given ids.\n     */\n    orWhereInIds(ids: any|any[]): this {\n        return this.orWhere(this.createWhereIdsExpression(ids));\n    }\n    /**\n     * Optional returning/output clause.\n     * This will return given column values.\n     */\n    output(columns: string[]): this;\n\n    /**\n     * Optional returning/output clause.\n     * Returning is a SQL string containing returning statement.\n     */\n    output(output: string): this;\n\n    /**\n     * Optional returning/output clause.\n     */\n    output(output: string|string[]): this;\n\n    /**\n     * Optional returning/output clause.\n     */\n    output(output: string|string[]): this {\n        return this.returning(output);\n    }\n\n    /**\n     * Optional returning/output clause.\n     * This will return given column values.\n     */\n    returning(columns: string[]): this;\n\n    /**\n     * Optional returning/output clause.\n     * Returning is a SQL string containing returning statement.\n     */\n    returning(returning: string): this;\n\n    /**\n     * Optional returning/output clause.\n     */\n    returning(returning: string|string[]): this;\n\n    /**\n     * Optional returning/output clause.\n     */\n    returning(returning: string|string[]): this {\n\n        // not all databases support returning/output cause\n        if (!this.connection.driver.isReturningSqlSupported())\n            throw new ReturningStatementNotSupportedError();\n\n        this.expressionMap.returning = returning;\n        return this;\n    }\n\n    /**\n     * Sets ORDER BY condition in the query builder.\n     * If you had previously ORDER BY expression defined,\n     * calling this function will override previously set ORDER BY conditions.\n     *\n     * Calling order by without order set will remove all previously set order bys.\n     */\n    orderBy(): this;\n\n    /**\n     * Sets ORDER BY condition in the query builder.\n     * If you had previously ORDER BY expression defined,\n     * calling this function will override previously set ORDER BY conditions.\n     */\n    orderBy(sort: string, order?: \"ASC\"|\"DESC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this;\n\n    /**\n     * Sets ORDER BY condition in the query builder.\n     * If you had previously ORDER BY expression defined,\n     * calling this function will override previously set ORDER BY conditions.\n     */\n    orderBy(order: OrderByCondition): this;\n\n    /**\n     * Sets ORDER BY condition in the query builder.\n     * If you had previously ORDER BY expression defined,\n     * calling this function will override previously set ORDER BY conditions.\n     */\n    orderBy(sort?: string|OrderByCondition, order: \"ASC\"|\"DESC\" = \"ASC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this {\n        if (sort) {\n            if (sort instanceof Object) {\n                this.expressionMap.orderBys = sort as OrderByCondition;\n            } else {\n                if (nulls) {\n                    this.expressionMap.orderBys = { [sort as string]: { order, nulls } };\n                } else {\n                    this.expressionMap.orderBys = { [sort as string]: order };\n                }\n            }\n        } else {\n            this.expressionMap.orderBys = {};\n        }\n        return this;\n    }\n\n    /**\n     * Adds ORDER BY condition in the query builder.\n     */\n    addOrderBy(sort: string, order: \"ASC\"|\"DESC\" = \"ASC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this {\n        if (nulls) {\n            this.expressionMap.orderBys[sort] = { order, nulls };\n        } else {\n            this.expressionMap.orderBys[sort] = order;\n        }\n        return this;\n    }\n\n    /**\n     * Sets LIMIT - maximum number of rows to be selected.\n     */\n    limit(limit?: number): this {\n        this.expressionMap.limit = limit;\n        return this;\n    }\n\n    /**\n     * Indicates if entity must be updated after update operation.\n     * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n     * Enabled by default.\n     */\n    whereEntity(entity: Entity|Entity[]): this {\n        if (!this.expressionMap.mainAlias!.hasMetadata)\n            throw new Error(`.whereEntity method can only be used on queries which update real entity table.`);\n\n        this.expressionMap.wheres = [];\n        const entities: Entity[] = entity instanceof Array ? entity : [entity];\n        entities.forEach(entity => {\n\n            const entityIdMap = this.expressionMap.mainAlias!.metadata.getEntityIdMap(entity);\n            if (!entityIdMap)\n                throw new Error(`Provided entity does not have ids set, cannot perform operation.`);\n\n            this.orWhereInIds(entityIdMap);\n        });\n\n        this.expressionMap.whereEntities = entities;\n        return this;\n    }\n\n    /**\n     * Indicates if entity must be updated after update operation.\n     * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n     * Enabled by default.\n     */\n    updateEntity(enabled: boolean): this {\n        this.expressionMap.updateEntity = enabled;\n        return this;\n    }\n\n    // -------------------------------------------------------------------------\n    // Protected Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Creates UPDATE express used to perform insert query.\n     */\n    protected createUpdateExpression() {\n        const valuesSet = this.getValueSet();\n        const metadata = this.expressionMap.mainAlias!.hasMetadata ? this.expressionMap.mainAlias!.metadata : undefined;\n\n        // prepare columns and values to be updated\n        const updateColumnAndValues: string[] = [];\n        const newParameters: ObjectLiteral = {};\n        let parametersCount =   this.connection.driver instanceof MysqlDriver ||\n                                this.connection.driver instanceof OracleDriver ||\n                                this.connection.driver instanceof AbstractSqliteDriver\n            ? 0 : Object.keys(this.expressionMap.nativeParameters).length;\n        if (metadata) {\n            EntityMetadata.createPropertyPath(metadata, valuesSet).forEach(propertyPath => {\n                // todo: make this and other query builder to work with properly with tables without metadata\n                const columns = metadata.findColumnsWithPropertyPath(propertyPath);\n\n                if (columns.length <= 0) {\n                    throw new EntityColumnNotFound(propertyPath);\n                }\n\n                columns.forEach(column => {\n                    const paramName = \"upd_\" + column.databaseName;\n\n                    //\n                    let value = column.getEntityValue(valuesSet);\n                    if (column.referencedColumn && value instanceof Object) {\n                        value = column.referencedColumn.getEntityValue(value);\n                    }\n                    else if (!(value instanceof Function)) {\n                        value = this.connection.driver.preparePersistentValue(value, column);\n                    }\n\n                    // todo: duplication zone\n                    if (value instanceof Function) { // support for SQL expressions in update query\n                        updateColumnAndValues.push(this.escape(column.databaseName) + \" = \" + value());\n                    } else {\n                        if (this.connection.driver instanceof SqlServerDriver) {\n                            value = this.connection.driver.parametrizeValue(column, value);\n\n                        // } else if (value instanceof Array) {\n                        //     value = new ArrayParameter(value);\n                        }\n\n                        if (this.connection.driver instanceof MysqlDriver ||\n                            this.connection.driver instanceof OracleDriver ||\n                            this.connection.driver instanceof AbstractSqliteDriver) {\n                            newParameters[paramName] = value;\n                        } else {\n                            this.expressionMap.nativeParameters[paramName] = value;\n                        }\n\n                        let expression = null;\n                        if (this.connection.driver instanceof MysqlDriver && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n                            expression = `GeomFromText(${this.connection.driver.createParameter(paramName, parametersCount)})`;\n                        } else if (this.connection.driver instanceof PostgresDriver && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n                            if (column.srid != null) {\n                              expression = `ST_SetSRID(ST_GeomFromGeoJSON(${this.connection.driver.createParameter(paramName, parametersCount)}), ${column.srid})::${column.type}`;\n                            } else {\n                              expression = `ST_GeomFromGeoJSON(${this.connection.driver.createParameter(paramName, parametersCount)})::${column.type}`;\n                            }\n                        } else {\n                            expression = this.connection.driver.createParameter(paramName, parametersCount);\n                        }\n                        updateColumnAndValues.push(this.escape(column.databaseName) + \" = \" + expression);\n                        parametersCount++;\n                    }\n                });\n            });\n\n            if (metadata.versionColumn)\n                updateColumnAndValues.push(this.escape(metadata.versionColumn.databaseName) + \" = \" + this.escape(metadata.versionColumn.databaseName) + \" + 1\");\n            if (metadata.updateDateColumn)\n                updateColumnAndValues.push(this.escape(metadata.updateDateColumn.databaseName) + \" = CURRENT_TIMESTAMP\"); // todo: fix issue with CURRENT_TIMESTAMP(6) being used, can \"DEFAULT\" be used?!\n\n        } else {\n            Object.keys(valuesSet).map(key => {\n                let value = valuesSet[key];\n\n                // todo: duplication zone\n                if (value instanceof Function) { // support for SQL expressions in update query\n                    updateColumnAndValues.push(this.escape(key) + \" = \" + value());\n                } else {\n\n                    // we need to store array values in a special class to make sure parameter replacement will work correctly\n                    // if (value instanceof Array)\n                    //     value = new ArrayParameter(value);\n\n                    if (this.connection.driver instanceof MysqlDriver ||\n                        this.connection.driver instanceof OracleDriver ||\n                        this.connection.driver instanceof AbstractSqliteDriver) {\n                        newParameters[key] = value;\n                    } else {\n                        this.expressionMap.nativeParameters[key] = value;\n                    }\n\n                    updateColumnAndValues.push(this.escape(key) + \" = \" + this.connection.driver.createParameter(key, parametersCount));\n                    parametersCount++;\n                }\n            });\n        }\n\n        if (updateColumnAndValues.length <= 0) {\n            throw new UpdateValuesMissingError();\n        }\n\n        // we re-write parameters this way because we want our \"UPDATE ... SET\" parameters to be first in the list of \"nativeParameters\"\n        // because some drivers like mysql depend on order of parameters\n        if (this.connection.driver instanceof MysqlDriver ||\n            this.connection.driver instanceof OracleDriver ||\n            this.connection.driver instanceof AbstractSqliteDriver) {\n            this.expressionMap.nativeParameters = Object.assign(newParameters, this.expressionMap.nativeParameters);\n        }\n\n        // get a table name and all column database names\n        const whereExpression = this.createWhereExpression();\n        const returningExpression = this.createReturningExpression();\n\n        // generate and return sql update query\n        if (returningExpression && (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof OracleDriver || this.connection.driver instanceof CockroachDriver)) {\n            return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")}${whereExpression} RETURNING ${returningExpression}`;\n\n        } else if (returningExpression && this.connection.driver instanceof SqlServerDriver) {\n            return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")} OUTPUT ${returningExpression}${whereExpression}`;\n\n        } else {\n            return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")}${whereExpression}`; // todo: how do we replace aliases in where to nothing?\n        }\n    }\n\n    /**\n     * Creates \"ORDER BY\" part of SQL query.\n     */\n    protected createOrderByExpression() {\n        const orderBys = this.expressionMap.orderBys;\n        if (Object.keys(orderBys).length > 0)\n            return \" ORDER BY \" + Object.keys(orderBys)\n                    .map(columnName => {\n                        if (typeof orderBys[columnName] === \"string\") {\n                            return this.replacePropertyNames(columnName) + \" \" + orderBys[columnName];\n                        } else {\n                            return this.replacePropertyNames(columnName) + \" \" + (orderBys[columnName] as any).order + \" \" + (orderBys[columnName] as any).nulls;\n                        }\n                    })\n                    .join(\", \");\n\n        return \"\";\n    }\n\n    /**\n     * Creates \"LIMIT\" parts of SQL query.\n     */\n    protected createLimitExpression(): string {\n        let limit: number|undefined = this.expressionMap.limit;\n\n        if (limit) {\n            if (this.connection.driver instanceof MysqlDriver) {\n                return \" LIMIT \" + limit;\n            } else {\n                throw new LimitOnUpdateNotSupportedError();\n            }\n        }\n\n        return \"\";\n    }\n\n    /**\n     * Gets array of values need to be inserted into the target table.\n     */\n    protected getValueSet(): ObjectLiteral {\n        if (this.expressionMap.valuesSet instanceof Object)\n            return this.expressionMap.valuesSet;\n\n        throw new UpdateValuesMissingError();\n    }\n\n}\n"],"sourceRoot":".."}