UNPKG

16.6 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/query-builder/DeleteQueryBuilder.ts"],"names":[],"mappings":"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","file":"DeleteQueryBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {OracleDriver} from \"../driver/oracle/OracleDriver\";\nimport {QueryBuilder} from \"./QueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {ObjectType} from \"../common/ObjectType\";\nimport {Connection} from \"../connection/Connection\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {WhereExpression} from \"./WhereExpression\";\nimport {Brackets} from \"./Brackets\";\nimport {DeleteResult} from \"./result/DeleteResult\";\nimport {ReturningStatementNotSupportedError} from \"../error/ReturningStatementNotSupportedError\";\nimport {SqljsDriver} from \"../driver/sqljs/SqljsDriver\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {BroadcasterResult} from \"../subscriber/BroadcasterResult\";\nimport {EntitySchema} from \"../index\";\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nexport class DeleteQueryBuilder<Entity> extends QueryBuilder<Entity> implements WhereExpression {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connectionOrQueryBuilder: Connection|QueryBuilder<any>, queryRunner?: QueryRunner) {\n super(connectionOrQueryBuilder as any, queryRunner);\n this.expressionMap.aliasNamePrefixingEnabled = false;\n }\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated sql query without parameters being replaced.\n */\n getQuery(): string {\n let sql = this.createDeleteExpression();\n return sql.trim();\n }\n\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n async execute(): Promise<DeleteResult> {\n const [sql, parameters] = this.getQueryAndParameters();\n const queryRunner = this.obtainQueryRunner();\n let transactionStartedByUs: boolean = false;\n\n try {\n\n // start transaction if it was enabled\n if (this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false) {\n await queryRunner.startTransaction();\n transactionStartedByUs = true;\n }\n\n // call before deletion methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n const broadcastResult = new BroadcasterResult();\n queryRunner.broadcaster.broadcastBeforeRemoveEvent(broadcastResult, this.expressionMap.mainAlias!.metadata);\n if (broadcastResult.promises.length > 0) await Promise.all(broadcastResult.promises);\n }\n\n // execute query\n const deleteResult = new DeleteResult();\n const result = await queryRunner.query(sql, parameters);\n\n const driver = queryRunner.connection.driver;\n if (driver instanceof MysqlDriver) {\n deleteResult.raw = result;\n deleteResult.affected = result.affectedRows;\n\n } else if (driver instanceof SqlServerDriver || driver instanceof PostgresDriver || driver instanceof CockroachDriver) {\n deleteResult.raw = result[0] ? result[0] : null;\n // don't return 0 because it could confuse. null means that we did not receive this value\n deleteResult.affected = typeof result[1] === \"number\" ? result[1] : null;\n\n } else if (driver instanceof OracleDriver) {\n deleteResult.affected = result;\n\n } else {\n deleteResult.raw = result;\n }\n\n // call after deletion methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n const broadcastResult = new BroadcasterResult();\n queryRunner.broadcaster.broadcastAfterRemoveEvent(broadcastResult, this.expressionMap.mainAlias!.metadata);\n if (broadcastResult.promises.length > 0) await Promise.all(broadcastResult.promises);\n }\n\n // close transaction if we started it\n if (transactionStartedByUs)\n await queryRunner.commitTransaction();\n\n return deleteResult;\n\n } catch (error) {\n\n // rollback transaction if we started it\n if (transactionStartedByUs) {\n try {\n await queryRunner.rollbackTransaction();\n } catch (rollbackError) { }\n }\n throw error;\n\n } finally {\n if (queryRunner !== this.queryRunner) { // means we created our own query runner\n await queryRunner.release();\n }\n if (this.connection.driver instanceof SqljsDriver && !queryRunner.isTransactionActive) {\n await this.connection.driver.autoSave();\n }\n }\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Specifies FROM which entity's table select/update/delete will be executed.\n * Also sets a main string alias of the selection data.\n */\n from<T>(entityTarget: ObjectType<T>|EntitySchema<T>|string, aliasName?: string): DeleteQueryBuilder<T> {\n entityTarget = entityTarget instanceof EntitySchema ? entityTarget.options.name : entityTarget;\n const mainAlias = this.createFromAlias(entityTarget, aliasName);\n this.expressionMap.setMainAlias(mainAlias);\n return (this as any) as DeleteQueryBuilder<T>;\n }\n\n /**\n * Sets WHERE condition in the query builder.\n * If you had previously WHERE expression defined,\n * calling this function will override previously set WHERE conditions.\n * Additionally you can add parameters used in where expression.\n */\n where(where: Brackets|string|((qb: this) => string)|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n const condition = this.computeWhereParameter(where);\n if (condition)\n this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n if (parameters)\n this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n andWhere(where: Brackets|string|((qb: this) => string), parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"and\", condition: this.computeWhereParameter(where) });\n if (parameters) this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n orWhere(where: Brackets|string|((qb: this) => string), parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"or\", condition: this.computeWhereParameter(where) });\n if (parameters) this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n whereInIds(ids: any|any[]): this {\n return this.where(this.createWhereIdsExpression(ids));\n }\n\n /**\n * Adds new AND WHERE with conditions for the given ids.\n */\n andWhereInIds(ids: any|any[]): this {\n return this.andWhere(this.createWhereIdsExpression(ids));\n }\n\n /**\n * Adds new OR WHERE with conditions for the given ids.\n */\n orWhereInIds(ids: any|any[]): this {\n return this.orWhere(this.createWhereIdsExpression(ids));\n }\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n output(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n output(output: string): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this {\n return this.returning(output);\n }\n\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n returning(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n returning(returning: string): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this {\n\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported())\n throw new ReturningStatementNotSupportedError();\n\n this.expressionMap.returning = returning;\n return this;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates DELETE express used to perform query.\n */\n protected createDeleteExpression() {\n const tableName = this.getTableName(this.getMainTableName());\n const whereExpression = this.createWhereExpression();\n const returningExpression = this.createReturningExpression();\n\n if (returningExpression && (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof CockroachDriver)) {\n return `DELETE FROM ${tableName}${whereExpression} RETURNING ${returningExpression}`;\n\n } else if (returningExpression !== \"\" && this.connection.driver instanceof SqlServerDriver) {\n return `DELETE FROM ${tableName} OUTPUT ${returningExpression}${whereExpression}`;\n\n } else {\n return `DELETE FROM ${tableName}${whereExpression}`;\n }\n }\n\n}\n"],"sourceRoot":".."}
\No newline at end of file