typeorm 0.2.42-dev.92c3e79 → 0.2.42-dev.93383bd
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/decorator/listeners/AfterRecover.d.ts +4 -0
- package/browser/decorator/listeners/AfterRecover.js +16 -0
- package/browser/decorator/listeners/AfterRecover.js.map +1 -0
- package/browser/decorator/listeners/AfterSoftRemove.d.ts +4 -0
- package/browser/decorator/listeners/AfterSoftRemove.js +16 -0
- package/browser/decorator/listeners/AfterSoftRemove.js.map +1 -0
- package/browser/decorator/listeners/BeforeRecover.d.ts +4 -0
- package/browser/decorator/listeners/BeforeRecover.js +16 -0
- package/browser/decorator/listeners/BeforeRecover.js.map +1 -0
- package/browser/decorator/listeners/BeforeSoftRemove.d.ts +4 -0
- package/browser/decorator/listeners/BeforeSoftRemove.js +16 -0
- package/browser/decorator/listeners/BeforeSoftRemove.js.map +1 -0
- package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +1 -1
- package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/MongoConnectionOptions.d.ts +1 -1
- package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +37 -13
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/entity-manager/EntityManager.js +1 -11
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/entity-manager/MongoEntityManager.d.ts +2 -0
- package/browser/entity-manager/MongoEntityManager.js +35 -4
- package/browser/entity-manager/MongoEntityManager.js.map +1 -1
- package/browser/entity-schema/EntitySchemaRelationOptions.d.ts +6 -0
- package/browser/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaTransformer.js +1 -0
- package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/browser/find-options/operator/Not.d.ts +1 -1
- package/browser/find-options/operator/Not.js +1 -1
- package/browser/find-options/operator/Not.js.map +1 -1
- package/browser/index.d.ts +4 -0
- package/browser/index.js +4 -0
- package/browser/index.js.map +1 -1
- package/browser/metadata/EntityMetadata.d.ts +16 -0
- package/browser/metadata/EntityMetadata.js +16 -0
- package/browser/metadata/EntityMetadata.js.map +1 -1
- package/browser/metadata/types/EventListenerTypes.d.ts +5 -1
- package/browser/metadata/types/EventListenerTypes.js +4 -0
- package/browser/metadata/types/EventListenerTypes.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataBuilder.js +4 -0
- package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/browser/persistence/SubjectExecutor.d.ts +2 -2
- package/browser/persistence/SubjectExecutor.js +6 -6
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/platform/PlatformTools.d.ts +1 -0
- package/browser/platform/PlatformTools.js +5 -0
- package/browser/platform/PlatformTools.js.map +1 -1
- package/browser/query-builder/InsertQueryBuilder.js +2 -2
- package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.d.ts +9 -0
- package/browser/query-builder/SelectQueryBuilder.js +27 -20
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/SoftDeleteQueryBuilder.js +44 -30
- package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/browser/subscriber/Broadcaster.d.ts +40 -0
- package/browser/subscriber/Broadcaster.js +156 -0
- package/browser/subscriber/Broadcaster.js.map +1 -1
- package/browser/subscriber/EntitySubscriberInterface.d.ts +18 -0
- package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
- package/browser/subscriber/event/RecoverEvent.d.ts +6 -0
- package/browser/subscriber/event/RecoverEvent.js +3 -0
- package/browser/subscriber/event/RecoverEvent.js.map +1 -0
- package/browser/subscriber/event/SoftRemoveEvent.d.ts +6 -0
- package/browser/subscriber/event/SoftRemoveEvent.js +3 -0
- package/browser/subscriber/event/SoftRemoveEvent.js.map +1 -0
- package/browser/util/RandomGenerator.d.ts +0 -4
- package/browser/util/RandomGenerator.js +0 -9
- package/browser/util/RandomGenerator.js.map +1 -1
- package/commands/CacheClearCommand.js +3 -3
- package/commands/CacheClearCommand.js.map +1 -1
- package/commands/EntityCreateCommand.js +2 -2
- package/commands/EntityCreateCommand.js.map +1 -1
- package/commands/InitCommand.js +2 -2
- package/commands/InitCommand.js.map +1 -1
- package/commands/MigrationCreateCommand.js +2 -2
- package/commands/MigrationCreateCommand.js.map +1 -1
- package/commands/MigrationGenerateCommand.js +2 -2
- package/commands/MigrationGenerateCommand.js.map +1 -1
- package/commands/MigrationRevertCommand.js +2 -3
- package/commands/MigrationRevertCommand.js.map +1 -1
- package/commands/MigrationRunCommand.js +2 -3
- package/commands/MigrationRunCommand.js.map +1 -1
- package/commands/MigrationShowCommand.js +2 -3
- package/commands/MigrationShowCommand.js.map +1 -1
- package/commands/QueryCommand.js +1 -2
- package/commands/QueryCommand.js.map +1 -1
- package/commands/SchemaDropCommand.js +2 -2
- package/commands/SchemaDropCommand.js.map +1 -1
- package/commands/SchemaLogCommand.js +2 -2
- package/commands/SchemaLogCommand.js.map +1 -1
- package/commands/SchemaSyncCommand.js +2 -2
- package/commands/SchemaSyncCommand.js.map +1 -1
- package/commands/SubscriberCreateCommand.js +3 -3
- package/commands/SubscriberCreateCommand.js.map +1 -1
- package/decorator/listeners/AfterRecover.d.ts +4 -0
- package/decorator/listeners/AfterRecover.js +20 -0
- package/decorator/listeners/AfterRecover.js.map +1 -0
- package/decorator/listeners/AfterSoftRemove.d.ts +4 -0
- package/decorator/listeners/AfterSoftRemove.js +20 -0
- package/decorator/listeners/AfterSoftRemove.js.map +1 -0
- package/decorator/listeners/BeforeRecover.d.ts +4 -0
- package/decorator/listeners/BeforeRecover.js +20 -0
- package/decorator/listeners/BeforeRecover.js.map +1 -0
- package/decorator/listeners/BeforeSoftRemove.d.ts +4 -0
- package/decorator/listeners/BeforeSoftRemove.js +20 -0
- package/decorator/listeners/BeforeSoftRemove.js.map +1 -0
- package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +1 -1
- package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
- package/driver/mongodb/MongoConnectionOptions.d.ts +1 -1
- package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.js +37 -13
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/entity-manager/EntityManager.js +1 -11
- package/entity-manager/EntityManager.js.map +1 -1
- package/entity-manager/MongoEntityManager.d.ts +2 -0
- package/entity-manager/MongoEntityManager.js +35 -4
- package/entity-manager/MongoEntityManager.js.map +1 -1
- package/entity-schema/EntitySchemaRelationOptions.d.ts +6 -0
- package/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
- package/entity-schema/EntitySchemaTransformer.js +1 -0
- package/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/find-options/operator/Not.d.ts +1 -1
- package/find-options/operator/Not.js +1 -1
- package/find-options/operator/Not.js.map +1 -1
- package/index.d.ts +4 -0
- package/index.js +4 -0
- package/index.js.map +1 -1
- package/index.mjs +8 -0
- package/metadata/EntityMetadata.d.ts +16 -0
- package/metadata/EntityMetadata.js +16 -0
- package/metadata/EntityMetadata.js.map +1 -1
- package/metadata/types/EventListenerTypes.d.ts +5 -1
- package/metadata/types/EventListenerTypes.js +4 -0
- package/metadata/types/EventListenerTypes.js.map +1 -1
- package/metadata-builder/EntityMetadataBuilder.js +4 -0
- package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/package.json +1 -1
- package/persistence/SubjectExecutor.d.ts +2 -2
- package/persistence/SubjectExecutor.js +6 -6
- package/persistence/SubjectExecutor.js.map +1 -1
- package/platform/PlatformTools.d.ts +1 -0
- package/platform/PlatformTools.js +5 -0
- package/platform/PlatformTools.js.map +1 -1
- package/query-builder/InsertQueryBuilder.js +2 -2
- package/query-builder/InsertQueryBuilder.js.map +1 -1
- package/query-builder/SelectQueryBuilder.d.ts +9 -0
- package/query-builder/SelectQueryBuilder.js +27 -20
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/SoftDeleteQueryBuilder.js +44 -30
- package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/subscriber/Broadcaster.d.ts +40 -0
- package/subscriber/Broadcaster.js +156 -0
- package/subscriber/Broadcaster.js.map +1 -1
- package/subscriber/EntitySubscriberInterface.d.ts +18 -0
- package/subscriber/EntitySubscriberInterface.js.map +1 -1
- package/subscriber/event/RecoverEvent.d.ts +6 -0
- package/subscriber/event/RecoverEvent.js +4 -0
- package/subscriber/event/RecoverEvent.js.map +1 -0
- package/subscriber/event/SoftRemoveEvent.d.ts +6 -0
- package/subscriber/event/SoftRemoveEvent.js +4 -0
- package/subscriber/event/SoftRemoveEvent.js.map +1 -0
- package/typeorm-class-transformer-shim.js +20 -0
- package/typeorm-model-shim.js +20 -0
- package/util/RandomGenerator.d.ts +0 -4
- package/util/RandomGenerator.js +0 -9
- package/util/RandomGenerator.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/query-builder/InsertQueryBuilder.ts"],"names":[],"mappings":"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","file":"InsertQueryBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {SapDriver} from \"../driver/sap/SapDriver\";\nimport {QueryBuilder} from \"./QueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {EntityTarget} from \"../common/EntityTarget\";\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 {BroadcasterResult} from \"../subscriber/BroadcasterResult\";\nimport {EntitySchema} from \"../entity-schema/EntitySchema\";\nimport {OracleDriver} from \"../driver/oracle/OracleDriver\";\nimport {AuroraDataApiDriver} from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport { TypeORMError } from \"../error\";\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.createComment();\n 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(\".value sets\");\n const valueSets: ObjectLiteral[] = this.getValueSets();\n // console.timeEnd(\".value sets\");\n\n // If user passed empty array of entities then we don't need to do\n // anything.\n //\n // Fixes GitHub issues #3111 and #5734. If we were to let this through\n // we would run into problems downstream, like subscribers getting\n // invoked with the empty array where they expect an entity, and SQL\n // queries with an empty VALUES clause.\n if (valueSets.length === 0)\n return new InsertResult();\n\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\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 await broadcastResult.wait();\n }\n\n let declareSql: string | null = null;\n let selectOutputSql: string | null = null;\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\n const returningColumns: ColumnMetadata[] = [];\n\n if (Array.isArray(this.expressionMap.returning) && this.expressionMap.mainAlias!.hasMetadata) {\n for (const columnPath of this.expressionMap.returning) {\n returningColumns.push(\n ...this.expressionMap.mainAlias!.metadata.findColumnsWithPropertyPath(columnPath)\n );\n }\n }\n\n if (this.expressionMap.updateEntity === true && this.expressionMap.mainAlias!.hasMetadata) {\n if (!(valueSets.length > 1 && this.connection.driver instanceof OracleDriver)) {\n this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getInsertionReturningColumns();\n }\n\n returningColumns.push(...this.expressionMap.extraReturningColumns.filter(\n c => !returningColumns.includes(c)\n ));\n }\n\n if (returningColumns.length > 0 && this.connection.driver instanceof SqlServerDriver) {\n declareSql = this.connection.driver.buildTableVariableDeclaration(\"@OutputTable\", returningColumns);\n selectOutputSql = `SELECT * FROM @OutputTable`;\n }\n // console.timeEnd(\".prepare returning statement\");\n\n // execute query\n // console.time(\".getting query and parameters\");\n const [insertSql, parameters] = this.getQueryAndParameters();\n // console.timeEnd(\".getting query and parameters\");\n\n // console.time(\".query execution by database\");\n const statements = [declareSql, insertSql, selectOutputSql];\n const sql = statements.filter(s => s != null).join(\";\\n\\n\");\n\n const queryResult = await queryRunner.query(sql, parameters, true);\n\n const insertResult = InsertResult.from(queryResult);\n\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 await broadcastResult.wait();\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 // 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: EntityTarget<T>, 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 and cockroach.\n *\n * @deprecated Use `orIgnore` or `orUpdate`\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 * @deprecated\n */\n orUpdate(statement?: { columns?: string[], overwrite?: string[], conflict_target?: string | string[] }): this;\n\n orUpdate(overwrite: string[], conflictTarget?: string | string[]): this;\n\n /**\n * Adds additional update statement supported in databases.\n */\n orUpdate(statementOrOverwrite?: { columns?: string[], overwrite?: string[], conflict_target?: string | string[] } | string[], conflictTarget?: string | string[]): this {\n if (!Array.isArray(statementOrOverwrite)) {\n this.expressionMap.onUpdate = {\n conflict: statementOrOverwrite?.conflict_target,\n columns: statementOrOverwrite?.columns,\n overwrite: statementOrOverwrite?.overwrite,\n };\n return this;\n }\n\n this.expressionMap.onUpdate = {\n overwrite: statementOrOverwrite,\n conflict: conflictTarget,\n };\n return this;\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.connection.driver instanceof OracleDriver && this.getValueSets().length > 1) ? null : this.createReturningExpression(); // oracle doesnt support returning with multi-row insert\n const columnsExpression = this.createColumnNamesExpression();\n let query = \"INSERT \";\n\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) {\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 || this.connection.driver instanceof AuroraDataApiDriver)) // 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 if (this.connection.driver instanceof OracleDriver && this.getValueSets().length > 1) {\n query += ` ${valuesExpression}`;\n } else {\n query += ` VALUES ${valuesExpression}`;\n }\n } else {\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) { // special syntax for mysql DEFAULT VALUES insertion\n query += \" VALUES ()\";\n } else {\n query += ` DEFAULT VALUES`;\n }\n }\n if (this.connection.driver.supportedUpsertType === \"on-conflict-do-update\") {\n if (this.expressionMap.onIgnore) {\n query += \" ON CONFLICT DO NOTHING \";\n } else if (this.expressionMap.onConflict) {\n query += ` ON CONFLICT ${this.expressionMap.onConflict} `;\n } else if (this.expressionMap.onUpdate) {\n const { overwrite, columns, conflict } = this.expressionMap.onUpdate;\n\n let conflictTarget = \"ON CONFLICT\";\n\n if (Array.isArray(conflict)) {\n conflictTarget += ` ( ${conflict.map((column) => this.escape(column)).join(\", \")} )`;\n } else if (conflict) {\n conflictTarget += ` ON CONSTRAINT ${this.escape(conflict)}`;\n }\n\n if (Array.isArray(overwrite)) {\n query += ` ${conflictTarget} DO UPDATE SET `;\n query += overwrite?.map(column => `${this.escape(column)} = EXCLUDED.${this.escape(column)}`).join(\", \");\n query += \" \";\n } else if (columns) {\n query += ` ${conflictTarget} DO UPDATE SET `;\n query += columns.map(column => `${this.escape(column)} = :${column}`).join(\", \");\n query += \" \";\n }\n }\n } else if (this.connection.driver.supportedUpsertType === \"on-duplicate-key-update\") {\n if (this.expressionMap.onUpdate) {\n const { overwrite, columns } = this.expressionMap.onUpdate;\n\n if (Array.isArray(overwrite)) {\n query += \" ON DUPLICATE KEY UPDATE \";\n query += overwrite.map(column => `${this.escape(column)} = VALUES(${this.escape(column)})`).join(\", \");\n query += \" \";\n } else if (Array.isArray(columns)) {\n query += \" ON DUPLICATE KEY UPDATE \";\n query += columns.map(column => `${this.escape(column)} = :${column}`).join(\", \");\n query += \" \";\n }\n }\n } else {\n if (this.expressionMap.onUpdate) {\n throw new TypeORMError(`onUpdate is not supported by the current database driver`);\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\n // Inserting a specific value for an auto-increment primary key in mssql requires enabling IDENTITY_INSERT\n // IDENTITY_INSERT can only be enabled for tables where there is an IDENTITY column and only if there is a value to be inserted (i.e. supplying DEFAULT is prohibited if IDENTITY_INSERT is enabled)\n if (this.connection.driver instanceof SqlServerDriver\n && this.expressionMap.mainAlias!.hasMetadata\n && this.expressionMap.mainAlias!.metadata.columns\n .filter((column) => this.expressionMap.insertColumns.length > 0 ? this.expressionMap.insertColumns.indexOf(column.propertyPath) !== -1 : column.isInsert)\n .some((column) => this.isOverridingAutoIncrementBehavior(column))\n ) {\n query = `SET IDENTITY_INSERT ${tableName} ON; ${query}; SET IDENTITY_INSERT ${tableName} OFF`;\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 // skip columns the user doesn't want included by default\n if (!column.isInsert) { return false; }\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 && !(this.connection.driver instanceof AuroraDataApiDriver)\n && !(this.connection.driver instanceof SqlServerDriver && this.isOverridingAutoIncrementBehavior(column)))\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 valueSets.forEach((valueSet, valueSetIndex) => {\n columns.forEach((column, columnIndex) => {\n if (columnIndex === 0) {\n if (this.connection.driver instanceof OracleDriver && valueSets.length > 1) {\n expression += \" SELECT \";\n } else {\n expression += \"(\";\n }\n }\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\n if (!(value instanceof Function)) {\n // make sure our value is normalized by a driver\n value = this.connection.driver.preparePersistentValue(value, column);\n }\n\n // newly inserted entities always have a version equal to 1 (first version)\n // also, user-specified version must be empty\n if (column.isVersion && value === undefined) {\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 expression += this.createParameter(this.expressionMap.mainAlias!.metadata.discriminatorValue);\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 value = RandomGenerator.uuid4();\n expression += this.createParameter(value);\n\n if (!(valueSetIndex in this.expressionMap.locallyGenerated)) {\n this.expressionMap.locallyGenerated[valueSetIndex] = {};\n }\n column.setEntityValue(this.expressionMap.locallyGenerated[valueSetIndex], 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 OracleDriver && valueSets.length > 1) || this.connection.driver instanceof AbstractSqliteDriver || this.connection.driver instanceof SapDriver) { // unfortunately sqlite does not support DEFAULT expression in INSERT queries\n if (column.default !== undefined && column.default !== null) { // 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\n const paramName = this.createParameter(value);\n\n if ((this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n const useLegacy = this.connection.driver.options.legacySpatialSupport;\n const geomFromText = useLegacy ? \"GeomFromText\" : \"ST_GeomFromText\";\n if (column.srid != null) {\n expression += `${geomFromText}(${paramName}, ${column.srid})`;\n } else {\n expression += `${geomFromText}(${paramName})`;\n }\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(${paramName}), ${column.srid})::${column.type}`;\n } else {\n expression += `ST_GeomFromGeoJSON(${paramName})::${column.type}`;\n }\n } else if (this.connection.driver instanceof SqlServerDriver && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n expression += column.type + \"::STGeomFromText(\" + paramName + \", \" + (column.srid || \"0\") + \")\";\n } else {\n expression += paramName;\n }\n }\n\n if (columnIndex === columns.length - 1) {\n if (valueSetIndex === valueSets.length - 1) {\n if (this.connection.driver instanceof OracleDriver && valueSets.length > 1) {\n expression += \" FROM DUAL \";\n } else {\n expression += \")\";\n }\n } else {\n if (this.connection.driver instanceof OracleDriver && valueSets.length > 1) {\n expression += \" FROM DUAL UNION ALL \";\n } else {\n expression += \"), \";\n }\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\n valueSets.forEach((valueSet, insertionIndex) => {\n const columns = Object.keys(valueSet);\n columns.forEach((columnName, columnIndex) => {\n if (columnIndex === 0) {\n expression += \"(\";\n }\n\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 || this.connection.driver instanceof SapDriver) {\n expression += \"NULL\";\n\n } else {\n expression += \"DEFAULT\";\n }\n\n // just any other regular value\n } else {\n expression += this.createParameter(value);\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 (Array.isArray(this.expressionMap.valuesSet))\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 * Checks if column is an auto-generated primary key, but the current insertion specifies a value for it.\n *\n * @param column\n */\n protected isOverridingAutoIncrementBehavior(column: ColumnMetadata): boolean {\n return column.isPrimary\n && column.isGenerated\n && column.generationStrategy === \"increment\"\n && this.getValueSets().some((valueSet) =>\n column.getEntityValue(valueSet) !== undefined\n && column.getEntityValue(valueSet) !== null\n );\n }\n\n}\n"],"sourceRoot":".."}
|
|
1
|
+
{"version":3,"sources":["../../src/query-builder/InsertQueryBuilder.ts"],"names":[],"mappings":"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","file":"InsertQueryBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {SapDriver} from \"../driver/sap/SapDriver\";\nimport {QueryBuilder} from \"./QueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {EntityTarget} from \"../common/EntityTarget\";\nimport {QueryDeepPartialEntity} from \"./QueryPartialEntity\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\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 {BroadcasterResult} from \"../subscriber/BroadcasterResult\";\nimport {EntitySchema} from \"../entity-schema/EntitySchema\";\nimport {OracleDriver} from \"../driver/oracle/OracleDriver\";\nimport {AuroraDataApiDriver} from \"../driver/aurora-data-api/AuroraDataApiDriver\";\nimport { TypeORMError } from \"../error\";\nimport { v4 as uuidv4 } from \"uuid\";\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.createComment();\n 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(\".value sets\");\n const valueSets: ObjectLiteral[] = this.getValueSets();\n // console.timeEnd(\".value sets\");\n\n // If user passed empty array of entities then we don't need to do\n // anything.\n //\n // Fixes GitHub issues #3111 and #5734. If we were to let this through\n // we would run into problems downstream, like subscribers getting\n // invoked with the empty array where they expect an entity, and SQL\n // queries with an empty VALUES clause.\n if (valueSets.length === 0)\n return new InsertResult();\n\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\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 await broadcastResult.wait();\n }\n\n let declareSql: string | null = null;\n let selectOutputSql: string | null = null;\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\n const returningColumns: ColumnMetadata[] = [];\n\n if (Array.isArray(this.expressionMap.returning) && this.expressionMap.mainAlias!.hasMetadata) {\n for (const columnPath of this.expressionMap.returning) {\n returningColumns.push(\n ...this.expressionMap.mainAlias!.metadata.findColumnsWithPropertyPath(columnPath)\n );\n }\n }\n\n if (this.expressionMap.updateEntity === true && this.expressionMap.mainAlias!.hasMetadata) {\n if (!(valueSets.length > 1 && this.connection.driver instanceof OracleDriver)) {\n this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getInsertionReturningColumns();\n }\n\n returningColumns.push(...this.expressionMap.extraReturningColumns.filter(\n c => !returningColumns.includes(c)\n ));\n }\n\n if (returningColumns.length > 0 && this.connection.driver instanceof SqlServerDriver) {\n declareSql = this.connection.driver.buildTableVariableDeclaration(\"@OutputTable\", returningColumns);\n selectOutputSql = `SELECT * FROM @OutputTable`;\n }\n // console.timeEnd(\".prepare returning statement\");\n\n // execute query\n // console.time(\".getting query and parameters\");\n const [insertSql, parameters] = this.getQueryAndParameters();\n // console.timeEnd(\".getting query and parameters\");\n\n // console.time(\".query execution by database\");\n const statements = [declareSql, insertSql, selectOutputSql];\n const sql = statements.filter(s => s != null).join(\";\\n\\n\");\n\n const queryResult = await queryRunner.query(sql, parameters, true);\n\n const insertResult = InsertResult.from(queryResult);\n\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 await broadcastResult.wait();\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 // 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: EntityTarget<T>, 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 and cockroach.\n *\n * @deprecated Use `orIgnore` or `orUpdate`\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 * @deprecated\n */\n orUpdate(statement?: { columns?: string[], overwrite?: string[], conflict_target?: string | string[] }): this;\n\n orUpdate(overwrite: string[], conflictTarget?: string | string[]): this;\n\n /**\n * Adds additional update statement supported in databases.\n */\n orUpdate(statementOrOverwrite?: { columns?: string[], overwrite?: string[], conflict_target?: string | string[] } | string[], conflictTarget?: string | string[]): this {\n if (!Array.isArray(statementOrOverwrite)) {\n this.expressionMap.onUpdate = {\n conflict: statementOrOverwrite?.conflict_target,\n columns: statementOrOverwrite?.columns,\n overwrite: statementOrOverwrite?.overwrite,\n };\n return this;\n }\n\n this.expressionMap.onUpdate = {\n overwrite: statementOrOverwrite,\n conflict: conflictTarget,\n };\n return this;\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.connection.driver instanceof OracleDriver && this.getValueSets().length > 1) ? null : this.createReturningExpression(); // oracle doesnt support returning with multi-row insert\n const columnsExpression = this.createColumnNamesExpression();\n let query = \"INSERT \";\n\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) {\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 || this.connection.driver instanceof AuroraDataApiDriver)) // 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 if (this.connection.driver instanceof OracleDriver && this.getValueSets().length > 1) {\n query += ` ${valuesExpression}`;\n } else {\n query += ` VALUES ${valuesExpression}`;\n }\n } else {\n if (this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) { // special syntax for mysql DEFAULT VALUES insertion\n query += \" VALUES ()\";\n } else {\n query += ` DEFAULT VALUES`;\n }\n }\n if (this.connection.driver.supportedUpsertType === \"on-conflict-do-update\") {\n if (this.expressionMap.onIgnore) {\n query += \" ON CONFLICT DO NOTHING \";\n } else if (this.expressionMap.onConflict) {\n query += ` ON CONFLICT ${this.expressionMap.onConflict} `;\n } else if (this.expressionMap.onUpdate) {\n const { overwrite, columns, conflict } = this.expressionMap.onUpdate;\n\n let conflictTarget = \"ON CONFLICT\";\n\n if (Array.isArray(conflict)) {\n conflictTarget += ` ( ${conflict.map((column) => this.escape(column)).join(\", \")} )`;\n } else if (conflict) {\n conflictTarget += ` ON CONSTRAINT ${this.escape(conflict)}`;\n }\n\n if (Array.isArray(overwrite)) {\n query += ` ${conflictTarget} DO UPDATE SET `;\n query += overwrite?.map(column => `${this.escape(column)} = EXCLUDED.${this.escape(column)}`).join(\", \");\n query += \" \";\n } else if (columns) {\n query += ` ${conflictTarget} DO UPDATE SET `;\n query += columns.map(column => `${this.escape(column)} = :${column}`).join(\", \");\n query += \" \";\n }\n }\n } else if (this.connection.driver.supportedUpsertType === \"on-duplicate-key-update\") {\n if (this.expressionMap.onUpdate) {\n const { overwrite, columns } = this.expressionMap.onUpdate;\n\n if (Array.isArray(overwrite)) {\n query += \" ON DUPLICATE KEY UPDATE \";\n query += overwrite.map(column => `${this.escape(column)} = VALUES(${this.escape(column)})`).join(\", \");\n query += \" \";\n } else if (Array.isArray(columns)) {\n query += \" ON DUPLICATE KEY UPDATE \";\n query += columns.map(column => `${this.escape(column)} = :${column}`).join(\", \");\n query += \" \";\n }\n }\n } else {\n if (this.expressionMap.onUpdate) {\n throw new TypeORMError(`onUpdate is not supported by the current database driver`);\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\n // Inserting a specific value for an auto-increment primary key in mssql requires enabling IDENTITY_INSERT\n // IDENTITY_INSERT can only be enabled for tables where there is an IDENTITY column and only if there is a value to be inserted (i.e. supplying DEFAULT is prohibited if IDENTITY_INSERT is enabled)\n if (this.connection.driver instanceof SqlServerDriver\n && this.expressionMap.mainAlias!.hasMetadata\n && this.expressionMap.mainAlias!.metadata.columns\n .filter((column) => this.expressionMap.insertColumns.length > 0 ? this.expressionMap.insertColumns.indexOf(column.propertyPath) !== -1 : column.isInsert)\n .some((column) => this.isOverridingAutoIncrementBehavior(column))\n ) {\n query = `SET IDENTITY_INSERT ${tableName} ON; ${query}; SET IDENTITY_INSERT ${tableName} OFF`;\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 // skip columns the user doesn't want included by default\n if (!column.isInsert) { return false; }\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 && !(this.connection.driver instanceof AuroraDataApiDriver)\n && !(this.connection.driver instanceof SqlServerDriver && this.isOverridingAutoIncrementBehavior(column)))\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 valueSets.forEach((valueSet, valueSetIndex) => {\n columns.forEach((column, columnIndex) => {\n if (columnIndex === 0) {\n if (this.connection.driver instanceof OracleDriver && valueSets.length > 1) {\n expression += \" SELECT \";\n } else {\n expression += \"(\";\n }\n }\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\n if (!(value instanceof Function)) {\n // make sure our value is normalized by a driver\n value = this.connection.driver.preparePersistentValue(value, column);\n }\n\n // newly inserted entities always have a version equal to 1 (first version)\n // also, user-specified version must be empty\n if (column.isVersion && value === undefined) {\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 expression += this.createParameter(this.expressionMap.mainAlias!.metadata.discriminatorValue);\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 value = uuidv4();\n expression += this.createParameter(value);\n\n if (!(valueSetIndex in this.expressionMap.locallyGenerated)) {\n this.expressionMap.locallyGenerated[valueSetIndex] = {};\n }\n column.setEntityValue(this.expressionMap.locallyGenerated[valueSetIndex], 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 OracleDriver && valueSets.length > 1) || this.connection.driver instanceof AbstractSqliteDriver || this.connection.driver instanceof SapDriver) { // unfortunately sqlite does not support DEFAULT expression in INSERT queries\n if (column.default !== undefined && column.default !== null) { // 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\n const paramName = this.createParameter(value);\n\n if ((this.connection.driver instanceof MysqlDriver || this.connection.driver instanceof AuroraDataApiDriver) && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n const useLegacy = this.connection.driver.options.legacySpatialSupport;\n const geomFromText = useLegacy ? \"GeomFromText\" : \"ST_GeomFromText\";\n if (column.srid != null) {\n expression += `${geomFromText}(${paramName}, ${column.srid})`;\n } else {\n expression += `${geomFromText}(${paramName})`;\n }\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(${paramName}), ${column.srid})::${column.type}`;\n } else {\n expression += `ST_GeomFromGeoJSON(${paramName})::${column.type}`;\n }\n } else if (this.connection.driver instanceof SqlServerDriver && this.connection.driver.spatialTypes.indexOf(column.type) !== -1) {\n expression += column.type + \"::STGeomFromText(\" + paramName + \", \" + (column.srid || \"0\") + \")\";\n } else {\n expression += paramName;\n }\n }\n\n if (columnIndex === columns.length - 1) {\n if (valueSetIndex === valueSets.length - 1) {\n if (this.connection.driver instanceof OracleDriver && valueSets.length > 1) {\n expression += \" FROM DUAL \";\n } else {\n expression += \")\";\n }\n } else {\n if (this.connection.driver instanceof OracleDriver && valueSets.length > 1) {\n expression += \" FROM DUAL UNION ALL \";\n } else {\n expression += \"), \";\n }\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\n valueSets.forEach((valueSet, insertionIndex) => {\n const columns = Object.keys(valueSet);\n columns.forEach((columnName, columnIndex) => {\n if (columnIndex === 0) {\n expression += \"(\";\n }\n\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 || this.connection.driver instanceof SapDriver) {\n expression += \"NULL\";\n\n } else {\n expression += \"DEFAULT\";\n }\n\n // just any other regular value\n } else {\n expression += this.createParameter(value);\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 (Array.isArray(this.expressionMap.valuesSet))\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 * Checks if column is an auto-generated primary key, but the current insertion specifies a value for it.\n *\n * @param column\n */\n protected isOverridingAutoIncrementBehavior(column: ColumnMetadata): boolean {\n return column.isPrimary\n && column.isGenerated\n && column.generationStrategy === \"increment\"\n && this.getValueSets().some((valueSet) =>\n column.getEntityValue(valueSet) !== undefined\n && column.getEntityValue(valueSet) !== null\n );\n }\n\n}\n"],"sourceRoot":".."}
|
|
@@ -584,6 +584,15 @@ export declare class SelectQueryBuilder<Entity> extends QueryBuilder<Entity> imp
|
|
|
584
584
|
* Creates "LIMIT" and "OFFSET" parts of SQL query.
|
|
585
585
|
*/
|
|
586
586
|
protected createLimitOffsetExpression(): string;
|
|
587
|
+
/**
|
|
588
|
+
* Creates "LOCK" part of SELECT Query after table Clause
|
|
589
|
+
* ex.
|
|
590
|
+
* SELECT 1
|
|
591
|
+
* FROM USER U WITH (NOLOCK)
|
|
592
|
+
* JOIN ORDER O WITH (NOLOCK)
|
|
593
|
+
* ON U.ID=O.OrderID
|
|
594
|
+
*/
|
|
595
|
+
private createTableLockExpression;
|
|
587
596
|
/**
|
|
588
597
|
* Creates "LOCK" part of SQL query.
|
|
589
598
|
*/
|
|
@@ -1029,20 +1029,6 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
1029
1029
|
// if still selection is empty, then simply set it to all (*)
|
|
1030
1030
|
if (allSelects.length === 0)
|
|
1031
1031
|
allSelects.push({ selection: "*" });
|
|
1032
|
-
var lock = "";
|
|
1033
|
-
if (this.connection.driver instanceof SqlServerDriver_1.SqlServerDriver) {
|
|
1034
|
-
switch (this.expressionMap.lockMode) {
|
|
1035
|
-
case "pessimistic_read":
|
|
1036
|
-
lock = " WITH (HOLDLOCK, ROWLOCK)";
|
|
1037
|
-
break;
|
|
1038
|
-
case "pessimistic_write":
|
|
1039
|
-
lock = " WITH (UPDLOCK, ROWLOCK)";
|
|
1040
|
-
break;
|
|
1041
|
-
case "dirty_read":
|
|
1042
|
-
lock = " WITH (NOLOCK)";
|
|
1043
|
-
break;
|
|
1044
|
-
}
|
|
1045
|
-
}
|
|
1046
1032
|
// Use certain index
|
|
1047
1033
|
var useIndex = "";
|
|
1048
1034
|
if (this.expressionMap.useIndex) {
|
|
@@ -1060,7 +1046,7 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
1060
1046
|
});
|
|
1061
1047
|
var select = this.createSelectDistinctExpression();
|
|
1062
1048
|
var selection = allSelects.map(function (select) { return select.selection + (select.aliasName ? " AS " + _this.escape(select.aliasName) : ""); }).join(", ");
|
|
1063
|
-
return select + selection + " FROM " + froms.join(", ") +
|
|
1049
|
+
return select + selection + " FROM " + froms.join(", ") + this.createTableLockExpression() + useIndex;
|
|
1064
1050
|
};
|
|
1065
1051
|
/**
|
|
1066
1052
|
* Creates select | select distinct part of SQL query.
|
|
@@ -1106,7 +1092,7 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
1106
1092
|
// table to join, without junction table involved. This means we simply join direct table.
|
|
1107
1093
|
if (!parentAlias || !relation) {
|
|
1108
1094
|
var destinationJoin = joinAttr.alias.subQuery ? joinAttr.alias.subQuery : _this.getTableName(destinationTableName);
|
|
1109
|
-
return " " + joinAttr.direction + " JOIN " + destinationJoin + " " + _this.escape(destinationTableAlias) +
|
|
1095
|
+
return " " + joinAttr.direction + " JOIN " + destinationJoin + " " + _this.escape(destinationTableAlias) + _this.createTableLockExpression() +
|
|
1110
1096
|
(joinAttr.condition ? " ON " + _this.replacePropertyNames(joinAttr.condition) : "");
|
|
1111
1097
|
}
|
|
1112
1098
|
// if real entity relation is involved
|
|
@@ -1116,7 +1102,7 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
1116
1102
|
return destinationTableAlias + "." + joinColumn.referencedColumn.propertyPath + "=" +
|
|
1117
1103
|
parentAlias + "." + relation.propertyPath + "." + joinColumn.referencedColumn.propertyPath;
|
|
1118
1104
|
}).join(" AND ");
|
|
1119
|
-
return " " + joinAttr.direction + " JOIN " + _this.getTableName(destinationTableName) + " " + _this.escape(destinationTableAlias) + " ON " + _this.replacePropertyNames(condition + appendedCondition);
|
|
1105
|
+
return " " + joinAttr.direction + " JOIN " + _this.getTableName(destinationTableName) + " " + _this.escape(destinationTableAlias) + _this.createTableLockExpression() + " ON " + _this.replacePropertyNames(condition + appendedCondition);
|
|
1120
1106
|
}
|
|
1121
1107
|
else if (relation.isOneToMany || relation.isOneToOneNotOwner) {
|
|
1122
1108
|
// JOIN `post` `post` ON `post`.`categoryId` = `category`.`id`
|
|
@@ -1127,7 +1113,7 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
1127
1113
|
return destinationTableAlias + "." + relation.inverseRelation.propertyPath + "." + joinColumn.referencedColumn.propertyPath + "=" +
|
|
1128
1114
|
parentAlias + "." + joinColumn.referencedColumn.propertyPath;
|
|
1129
1115
|
}).join(" AND ");
|
|
1130
|
-
return " " + joinAttr.direction + " JOIN " + _this.getTableName(destinationTableName) + " " + _this.escape(destinationTableAlias) + " ON " + _this.replacePropertyNames(condition + appendedCondition);
|
|
1116
|
+
return " " + joinAttr.direction + " JOIN " + _this.getTableName(destinationTableName) + " " + _this.escape(destinationTableAlias) + _this.createTableLockExpression() + " ON " + _this.replacePropertyNames(condition + appendedCondition);
|
|
1131
1117
|
}
|
|
1132
1118
|
else { // means many-to-many
|
|
1133
1119
|
var junctionTableName = relation.junctionEntityMetadata.tablePath;
|
|
@@ -1153,8 +1139,8 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
1153
1139
|
return destinationTableAlias + "." + joinColumn.referencedColumn.propertyPath + "=" + junctionAlias_1 + "." + joinColumn.propertyPath;
|
|
1154
1140
|
}).join(" AND ");
|
|
1155
1141
|
}
|
|
1156
|
-
return " " + joinAttr.direction + " JOIN " + _this.getTableName(junctionTableName) + " " + _this.escape(junctionAlias_1) + " ON " + _this.replacePropertyNames(junctionCondition) +
|
|
1157
|
-
" " + joinAttr.direction + " JOIN " + _this.getTableName(destinationTableName) + " " + _this.escape(destinationTableAlias) + " ON " + _this.replacePropertyNames(destinationCondition + appendedCondition);
|
|
1142
|
+
return " " + joinAttr.direction + " JOIN " + _this.getTableName(junctionTableName) + " " + _this.escape(junctionAlias_1) + _this.createTableLockExpression() + " ON " + _this.replacePropertyNames(junctionCondition) +
|
|
1143
|
+
" " + joinAttr.direction + " JOIN " + _this.getTableName(destinationTableName) + " " + _this.escape(destinationTableAlias) + _this.createTableLockExpression() + " ON " + _this.replacePropertyNames(destinationCondition + appendedCondition);
|
|
1158
1144
|
}
|
|
1159
1145
|
});
|
|
1160
1146
|
return joins.join(" ");
|
|
@@ -1248,6 +1234,27 @@ var SelectQueryBuilder = /** @class */ (function (_super) {
|
|
|
1248
1234
|
}
|
|
1249
1235
|
return "";
|
|
1250
1236
|
};
|
|
1237
|
+
/**
|
|
1238
|
+
* Creates "LOCK" part of SELECT Query after table Clause
|
|
1239
|
+
* ex.
|
|
1240
|
+
* SELECT 1
|
|
1241
|
+
* FROM USER U WITH (NOLOCK)
|
|
1242
|
+
* JOIN ORDER O WITH (NOLOCK)
|
|
1243
|
+
* ON U.ID=O.OrderID
|
|
1244
|
+
*/
|
|
1245
|
+
SelectQueryBuilder.prototype.createTableLockExpression = function () {
|
|
1246
|
+
if (this.connection.driver instanceof SqlServerDriver_1.SqlServerDriver) {
|
|
1247
|
+
switch (this.expressionMap.lockMode) {
|
|
1248
|
+
case "pessimistic_read":
|
|
1249
|
+
return " WITH (HOLDLOCK, ROWLOCK)";
|
|
1250
|
+
case "pessimistic_write":
|
|
1251
|
+
return " WITH (UPDLOCK, ROWLOCK)";
|
|
1252
|
+
case "dirty_read":
|
|
1253
|
+
return " WITH (NOLOCK)";
|
|
1254
|
+
}
|
|
1255
|
+
}
|
|
1256
|
+
return "";
|
|
1257
|
+
};
|
|
1251
1258
|
/**
|
|
1252
1259
|
* Creates "LOCK" part of SQL query.
|
|
1253
1260
|
*/
|