333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../browser/src/query-builder/InsertQueryBuilder.ts"],"names":[],"mappings":"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","file":"InsertQueryBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {QueryBuilder} from \"./QueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {ObjectType} from \"../common/ObjectType\";\nimport {QueryDeepPartialEntity} from \"./QueryPartialEntity\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {RandomGenerator} from \"../util/RandomGenerator\";\nimport {InsertResult} from \"./result/InsertResult\";\nimport {ReturningStatementNotSupportedError} from \"../error/ReturningStatementNotSupportedError\";\nimport {InsertValuesMissingError} from \"../error/InsertValuesMissingError\";\nimport {ColumnMetadata} from \"../metadata/ColumnMetadata\";\nimport {ReturningResultsEntityUpdator} from \"./ReturningResultsEntityUpdator\";\nimport {AbstractSqliteDriver} from \"../driver/sqlite-abstract/AbstractSqliteDriver\";\nimport {SqljsDriver} from \"../driver/sqljs/SqljsDriver\";\nimport {BroadcasterResult} from \"../subscriber/BroadcasterResult\";\nimport {EntitySchema} from \"../\";\nimport {OracleDriver} from \"../driver/oracle/OracleDriver\";\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nexport class InsertQueryBuilder<Entity> extends QueryBuilder<Entity> {\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.createInsertExpression();\n        return sql.trim();\n    }\n\n    /**\n     * Executes sql generated by query builder and returns raw database results.\n     */\n    async execute(): Promise<InsertResult> {\n        // console.time(\"QueryBuilder.execute\");\n        // console.time(\".database stuff\");\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            // console.timeEnd(\".database stuff\");\n            // console.time(\".value sets\");\n            const valueSets: ObjectLiteral[] = this.getValueSets();\n            // console.timeEnd(\".value sets\");\n\n            // call before insertion methods in listeners and subscribers\n            if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n                const broadcastResult = new BroadcasterResult();\n                valueSets.forEach(valueSet => {\n                    queryRunner.broadcaster.broadcastBeforeInsertEvent(broadcastResult, this.expressionMap.mainAlias!.metadata, valueSet);\n                });\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            // console.time(\".prepare returning statement\");\n            const returningResultsEntityUpdator = new ReturningResultsEntityUpdator(queryRunner, this.expressionMap);\n            if (this.expressionMap.updateEntity === true && this.expressionMap.mainAlias!.hasMetadata) {\n                this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getInsertionReturningColumns();\n            }\n            // console.timeEnd(\".prepare returning statement\");\n\n            // execute query\n            // console.time(\".getting query and parameters\");\n            const [sql, parameters] = this.getQueryAndParameters();\n            // console.timeEnd(\".getting query and parameters\");\n            const insertResult = new InsertResult();\n            // console.time(\".query execution by database\");\n            insertResult.raw = await queryRunner.query(sql, parameters);\n            // console.timeEnd(\".query execution by database\");\n\n            // load returning results and set them to the entity if entity updation is enabled\n            if (this.expressionMap.updateEntity === true && this.expressionMap.mainAlias!.hasMetadata) {\n                // console.time(\".updating entity\");\n                await returningResultsEntityUpdator.insert(insertResult, valueSets);\n                // console.timeEnd(\".updating entity\");\n            }\n\n            // call after insertion methods in listeners and subscribers\n            if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n                const broadcastResult = new BroadcasterResult();\n                valueSets.forEach(valueSet => {\n                    queryRunner.broadcaster.broadcastAfterInsertEvent(broadcastResult, this.expressionMap.mainAlias!.metadata, valueSet);\n                });\n                if (broadcastResult.promises.length > 0) await Promise.all(broadcastResult.promises);\n            }\n\n            // close transaction if we started it\n            // console.time(\".commit\");\n            if (transactionStartedByUs) {\n                await queryRunner.commitTransaction();\n            }\n            // console.timeEnd(\".commit\");\n\n            return insertResult;\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\n            // console.time(\".releasing connection\");\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            // console.timeEnd(\".releasing connection\");\n            // console.timeEnd(\"QueryBuilder.execute\");\n        }\n    }\n\n    // -------------------------------------------------------------------------\n    // Public Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Specifies INTO which entity's table insertion will be executed.\n     */\n    into<T>(entityTarget: ObjectType<T>|EntitySchema<T>|string, columns?: string[]): InsertQueryBuilder<T> {\n        entityTarget = entityTarget instanceof EntitySchema ? entityTarget.options.name : entityTarget;\n        const mainAlias = this.createFromAlias(entityTarget);\n        this.expressionMap.setMainAlias(mainAlias);\n        this.expressionMap.insertColumns = columns || [];\n        return (this as any) as InsertQueryBuilder<T>;\n    }\n\n    /**\n     * Values needs to be inserted into table.\n     */\n    values(values: QueryDeepPartialEntity<Entity>|QueryDeepPartialEntity<Entity>[]): this {\n        this.expressionMap.valuesSet = values;\n        return this;\n    }\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     * Indicates if entity must be updated after insertion operations.\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     * Adds additional ON CONFLICT statement supported in postgres.\n     */\n    onConflict(statement: string): this {\n        this.expressionMap.onConflict = statement;\n        return this;\n    }\n\n    /**\n     * Adds additional ignore statement supported in databases.\n     */\n    orIgnore(statement: string | boolean = true): this {\n        this.expressionMap.onIgnore = statement;\n        return this;\n    }\n\n    /**\n     * Adds additional update statement supported in databases.\n     */\n    orUpdate(statement?: { columns?: string[], overwrite?: string[], conflict_target?: string | string[] }): this {\n      this.expressionMap.onUpdate = {};\n      if (statement && statement.conflict_target instanceof Array)\n          this.expressionMap.onUpdate.conflict = ` ( ${statement.conflict_target.join(\", \")} ) `;\n      if (statement && typeof statement.conflict_target === \"string\")\n          this.expressionMap.onUpdate.conflict = ` ON CONSTRAINT ${statement.conflict_target} `;\n      if (statement && statement.columns instanceof Array)\n          this.expressionMap.onUpdate.columns = statement.columns.map(column => `${column} = :${column}`).join(\", \");\n      if (statement && statement.overwrite instanceof Array) {\n        if (this.connection.driver instanceof MysqlDriver) {\n          this.expressionMap.onUpdate.overwrite = statement.overwrite.map(column => `${column} = VALUES(${column})`).join(\", \");\n        } else if (this.connection.driver instanceof PostgresDriver) {\n          this.expressionMap.onUpdate.overwrite = statement.overwrite.map(column => `${column} = EXCLUDED.${column}`).join(\", \");\n        }\n      }\n      return this;\n  }\n\n\n    // -------------------------------------------------------------------------\n    // Protected Methods\n    // -------------------------------------------------------------------------\n\n    /**\n     * Creates INSERT express used to perform insert query.\n     */\n    protected createInsertExpression() {\n        const tableName = this.getTableName(this.getMainTableName());\n        const valuesExpression = this.createValuesExpression(); // its important to get values before returning expression because oracle rely on native parameters and ordering of them is important\n        const returningExpression = this.createReturningExpression();\n        const columnsExpression = this.createColumnNamesExpression();\n        let query = \"INSERT \";\n\n        if (this.connection.driver instanceof MysqlDriver) {\n          query += `${this.expressionMap.onIgnore ? \" IGNORE \" : \"\"}`;\n        }\n\n        query += `INTO ${tableName}`;\n\n        // add columns expression\n        if (columnsExpression) {\n            query += `(${columnsExpression})`;\n        } else {\n            if (!valuesExpression && this.connection.driver instanceof MysqlDriver) // special syntax for mysql DEFAULT VALUES insertion\n                query += \"()\";\n        }\n\n        // add OUTPUT expression\n        if (returningExpression && this.connection.driver instanceof SqlServerDriver) {\n            query += ` OUTPUT ${returningExpression}`;\n        }\n\n        // add VALUES expression\n        if (valuesExpression) {\n            query += ` VALUES ${valuesExpression}`;\n        } else {\n            if (this.connection.driver instanceof MysqlDriver) { // special syntax for mysql DEFAULT VALUES insertion\n                query += \" VALUES ()\";\n            } else {\n                query += ` DEFAULT VALUES`;\n            }\n        }\n        if (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof AbstractSqliteDriver) {\n          query += `${this.expressionMap.onIgnore ? \" ON CONFLICT DO NOTHING \" : \"\"}`;\n          query += `${this.expressionMap.onConflict ? \" ON CONFLICT \" + this.expressionMap.onConflict : \"\"}`;\n          if (this.expressionMap.onUpdate) {\n            const { overwrite, columns, conflict } = this.expressionMap.onUpdate;\n            query += `${columns ? \" ON CONFLICT \" + conflict + \" DO UPDATE SET \" + columns : \"\"}`;\n            query += `${overwrite ? \" ON CONFLICT \" + conflict + \" DO UPDATE SET \" + overwrite : \"\"}`;\n          }\n        } else if (this.connection.driver instanceof MysqlDriver) {\n            if (this.expressionMap.onUpdate) {\n              const { overwrite, columns } = this.expressionMap.onUpdate;\n              query += `${columns ? \" ON DUPLICATE KEY UPDATE \" + columns : \"\"}`;\n              query += `${overwrite ? \" ON DUPLICATE KEY UPDATE \" + overwrite : \"\"}`;\n            }\n        }\n\n        // add RETURNING expression\n        if (returningExpression && (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof OracleDriver || this.connection.driver instanceof CockroachDriver)) {\n            query += ` RETURNING ${returningExpression}`;\n        }\n\n        return query;\n    }\n\n    /**\n     * Gets list of columns where values must be inserted to.\n     */\n    protected getInsertedColumns(): ColumnMetadata[] {\n        if (!this.expressionMap.mainAlias!.hasMetadata)\n            return [];\n\n        return this.expressionMap.mainAlias!.metadata.columns.filter(column => {\n\n            // if user specified list of columns he wants to insert to, then we filter only them\n            if (this.expressionMap.insertColumns.length)\n                return this.expressionMap.insertColumns.indexOf(column.propertyPath) !== -1;\n\n            // if user did not specified such list then return all columns except auto-increment one\n            // for Oracle we return auto-increment column as well because Oracle does not support DEFAULT VALUES expression\n            if (column.isGenerated && column.generationStrategy === \"increment\"\n                && !(this.connection.driver instanceof OracleDriver)\n                && !(this.connection.driver instanceof AbstractSqliteDriver)\n                && !(this.connection.driver instanceof MysqlDriver))\n                return false;\n\n            return true;\n        });\n    }\n\n    /**\n     * Creates a columns string where values must be inserted to for INSERT INTO expression.\n     */\n    protected createColumnNamesExpression(): string {\n        const columns = this.getInsertedColumns();\n        if (columns.length > 0)\n            return columns.map(column => this.escape(column.databaseName)).join(\", \");\n\n        // in the case if there are no insert columns specified and table without metadata used\n        // we get columns from the inserted value map, in the case if only one inserted map is specified\n        if (!this.expressionMap.mainAlias!.hasMetadata && !this.expressionMap.insertColumns.length) {\n            const valueSets = this.getValueSets();\n            if (valueSets.length === 1)\n                return Object.keys(valueSets[0]).map(columnName => this.escape(columnName)).join(\", \");\n        }\n\n        // get a table name and all column database names\n        return this.expressionMap.insertColumns.map(columnName => this.escape(columnName)).join(\", \");\n    }\n\n    /**\n     * Creates list of values needs to be inserted in the VALUES expression.\n     */\n    protected createValuesExpression(): string {\n        const valueSets = this.getValueSets();\n        const columns = this.getInsertedColumns();\n\n        // if column metadatas are given then apply all necessary operations with values\n        if (columns.length > 0) {\n            let expression = \"\";\n            let parametersCount = Object.keys(this.expressionMap.nativeParameters).length;\n            valueSets.forEach((valueSet, valueSetIndex) => {\n                columns.forEach((column, columnIndex) => {\n                    if (columnIndex === 0) {\n                        expression += \"(\";\n                    }\n                    const paramName = \"i\" + valueSetIndex + \"_\" + column.databaseName;\n\n                    // extract real value from the entity\n                    let value = column.getEntityValue(valueSet);\n\n                    // if column is relational and value is an object then get real referenced column value from this object\n                    // for example column value is { question: { id: 1 } }, value will be equal to { id: 1 }\n                    // and we extract \"1\" from this object\n                    /*if (column.referencedColumn && value instanceof Object && !(value instanceof Function)) { // todo: check if we still need it since getEntityValue already has similar code\n                        value = column.referencedColumn.getEntityValue(value);\n                    }*/\n\n                    // make sure our value is normalized by a driver\n                    value = this.connection.driver.preparePersistentValue(value, column);\n\n                    // newly inserted entities always have a version equal to 1 (first version)\n                    if (column.isVersion) {\n                        expression += \"1\";\n\n                    // } else if (column.isNestedSetLeft) {\n                    //     const tableName = this.connection.driver.escape(column.entityMetadata.tablePath);\n                    //     const rightColumnName = this.connection.driver.escape(column.entityMetadata.nestedSetRightColumn!.databaseName);\n                    //     const subQuery = `(SELECT c.max + 1 FROM (SELECT MAX(${rightColumnName}) as max from ${tableName}) c)`;\n                    //     expression += subQuery;\n                    //\n                    // } else if (column.isNestedSetRight) {\n                    //     const tableName = this.connection.driver.escape(column.entityMetadata.tablePath);\n                    //     const rightColumnName = this.connection.driver.escape(column.entityMetadata.nestedSetRightColumn!.databaseName);\n                    //     const subQuery = `(SELECT c.max + 2 FROM (SELECT MAX(${rightColumnName}) as max from ${tableName}) c)`;\n                    //     expression += subQuery;\n\n                    } else if (column.isDiscriminator) {\n                        this.expressionMap.nativeParameters[\"discriminator_value_\" + parametersCount] = this.expressionMap.mainAlias!.metadata.discriminatorValue;\n                        expression += this.connection.driver.createParameter(\"discriminator_value_\" + parametersCount, parametersCount);\n                        parametersCount++;\n                        // return \"1\";\n\n                    // for create and update dates we insert current date\n                    // no, we don't do it because this constant is already in \"default\" value of the column\n                    // with extended timestamp functionality, like CURRENT_TIMESTAMP(6) for example\n                    // } else if (column.isCreateDate || column.isUpdateDate) {\n                    //     return \"CURRENT_TIMESTAMP\";\n\n                    // if column is generated uuid and database does not support its generation and custom generated value was not provided by a user - we generate a new uuid value for insertion\n                    } else if (column.isGenerated && column.generationStrategy === \"uuid\" && !this.connection.driver.isUUIDGenerationSupported() && value === undefined) {\n\n                        const paramName = \"uuid_\" + column.databaseName + valueSetIndex;\n                        value = RandomGenerator.uuid4();\n                        this.expressionMap.nativeParameters[paramName] = value;\n                        expression += this.connection.driver.createParameter(paramName, parametersCount);\n                        parametersCount++;\n\n                    // if value for this column was not provided then insert default value\n                    } else if (value === undefined) {\n                        if (this.connection.driver instanceof AbstractSqliteDriver) { // unfortunately sqlite does not support DEFAULT expression in INSERT queries\n                            if (column.default !== undefined) { // try to use default defined in the column\n                                expression += this.connection.driver.normalizeDefault(column);\n                            } else {\n                                expression += \"NULL\"; // otherwise simply use NULL and pray if column is nullable\n                            }\n\n                        } else {\n                            expression += \"DEFAULT\";\n                        }\n\n                    // support for SQL expressions in queries\n                    } else if (value instanceof Function) {\n                        expression += value();\n\n                    // just any other regular value\n                    } else {\n                        if (this.connection.driver instanceof SqlServerDriver)\n                            value = this.connection.driver.parametrizeValue(column, value);\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                        this.expressionMap.nativeParameters[paramName] = value;\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                        parametersCount++;\n                    }\n\n                    if (columnIndex === columns.length - 1) {\n                        if (valueSetIndex === valueSets.length - 1) {\n                            expression += \")\";\n                        } else {\n                            expression += \"), \";\n                        }\n                    } else {\n                        expression += \", \";\n                    }\n                });\n            });\n            if (expression === \"()\")\n                return \"\";\n\n            return expression;\n        } else { // for tables without metadata\n            // get values needs to be inserted\n            let expression = \"\";\n            let parametersCount = Object.keys(this.expressionMap.nativeParameters).length;\n\n            valueSets.forEach((valueSet, insertionIndex) => {\n                const columns = Object.keys(valueSet);\n                columns.forEach((columnName, columnIndex) => {\n                    if (columnIndex === 0) {\n                        expression += \"(\";\n                    }\n                    const paramName = \"i\" + insertionIndex + \"_\" + columnName;\n                    const value = valueSet[columnName];\n\n                    // support for SQL expressions in queries\n                    if (value instanceof Function) {\n                        expression += value();\n\n                    // if value for this column was not provided then insert default value\n                    } else if (value === undefined) {\n                        if (this.connection.driver instanceof AbstractSqliteDriver) {\n                            expression += \"NULL\";\n\n                        } else {\n                            expression += \"DEFAULT\";\n                        }\n\n                    // just any other regular value\n                    } else {\n                        this.expressionMap.nativeParameters[paramName] = value;\n                        expression += this.connection.driver.createParameter(paramName, parametersCount);\n                        parametersCount++;\n                    }\n\n                    if (columnIndex === Object.keys(valueSet).length - 1) {\n                        if (insertionIndex === valueSets.length - 1) {\n                            expression += \")\";\n                        } else {\n                            expression += \"), \";\n                        }\n                    }\n                    else {\n                        expression += \", \";\n                    }\n                });\n            });\n            if (expression === \"()\")\n                return \"\";\n            return expression;\n        }\n    }\n\n    /**\n     * Gets array of values need to be inserted into the target table.\n     */\n    protected getValueSets(): ObjectLiteral[] {\n        if (this.expressionMap.valuesSet instanceof Array && this.expressionMap.valuesSet.length > 0)\n            return this.expressionMap.valuesSet;\n\n        if (this.expressionMap.valuesSet instanceof Object)\n            return [this.expressionMap.valuesSet];\n\n        throw new InsertValuesMissingError();\n    }\n\n}\n"],"sourceRoot":".."}