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
|
@@ -54,7 +54,7 @@ var SoftDeleteQueryBuilder = /** @class */ (function (_super) {
|
|
|
54
54
|
transactionStartedByUs = false;
|
|
55
55
|
_b.label = 1;
|
|
56
56
|
case 1:
|
|
57
|
-
_b.trys.push([1,
|
|
57
|
+
_b.trys.push([1, 17, 22, 25]);
|
|
58
58
|
if (!(this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false)) return [3 /*break*/, 3];
|
|
59
59
|
return [4 /*yield*/, queryRunner.startTransaction()];
|
|
60
60
|
case 2:
|
|
@@ -62,12 +62,19 @@ var SoftDeleteQueryBuilder = /** @class */ (function (_super) {
|
|
|
62
62
|
transactionStartedByUs = true;
|
|
63
63
|
_b.label = 3;
|
|
64
64
|
case 3:
|
|
65
|
-
if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/,
|
|
66
|
-
return [
|
|
65
|
+
if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 7];
|
|
66
|
+
if (!(this.expressionMap.queryType === "soft-delete")) return [3 /*break*/, 5];
|
|
67
|
+
return [4 /*yield*/, queryRunner.broadcaster.broadcast("BeforeSoftRemove", this.expressionMap.mainAlias.metadata)];
|
|
67
68
|
case 4:
|
|
68
69
|
_b.sent();
|
|
69
|
-
|
|
70
|
+
return [3 /*break*/, 7];
|
|
70
71
|
case 5:
|
|
72
|
+
if (!(this.expressionMap.queryType === "restore")) return [3 /*break*/, 7];
|
|
73
|
+
return [4 /*yield*/, queryRunner.broadcaster.broadcast("BeforeRecover", this.expressionMap.mainAlias.metadata)];
|
|
74
|
+
case 6:
|
|
75
|
+
_b.sent();
|
|
76
|
+
_b.label = 7;
|
|
77
|
+
case 7:
|
|
71
78
|
returningResultsEntityUpdator = new ReturningResultsEntityUpdator_1.ReturningResultsEntityUpdator(queryRunner, this.expressionMap);
|
|
72
79
|
if (this.expressionMap.updateEntity === true &&
|
|
73
80
|
this.expressionMap.mainAlias.hasMetadata &&
|
|
@@ -76,51 +83,58 @@ var SoftDeleteQueryBuilder = /** @class */ (function (_super) {
|
|
|
76
83
|
}
|
|
77
84
|
_a = (0, tslib_1.__read)(this.getQueryAndParameters(), 2), sql = _a[0], parameters = _a[1];
|
|
78
85
|
return [4 /*yield*/, queryRunner.query(sql, parameters, true)];
|
|
79
|
-
case
|
|
86
|
+
case 8:
|
|
80
87
|
queryResult = _b.sent();
|
|
81
88
|
updateResult = UpdateResult_1.UpdateResult.from(queryResult);
|
|
82
89
|
if (!(this.expressionMap.updateEntity === true &&
|
|
83
90
|
this.expressionMap.mainAlias.hasMetadata &&
|
|
84
|
-
this.expressionMap.whereEntities.length > 0)) return [3 /*break*/,
|
|
91
|
+
this.expressionMap.whereEntities.length > 0)) return [3 /*break*/, 10];
|
|
85
92
|
return [4 /*yield*/, returningResultsEntityUpdator.update(updateResult, this.expressionMap.whereEntities)];
|
|
86
|
-
case 7:
|
|
87
|
-
_b.sent();
|
|
88
|
-
_b.label = 8;
|
|
89
|
-
case 8:
|
|
90
|
-
if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 10];
|
|
91
|
-
return [4 /*yield*/, queryRunner.broadcaster.broadcast("AfterUpdate", this.expressionMap.mainAlias.metadata)];
|
|
92
93
|
case 9:
|
|
93
94
|
_b.sent();
|
|
94
95
|
_b.label = 10;
|
|
95
96
|
case 10:
|
|
96
|
-
if (!
|
|
97
|
-
return [
|
|
97
|
+
if (!(this.expressionMap.callListeners === true && this.expressionMap.mainAlias.hasMetadata)) return [3 /*break*/, 14];
|
|
98
|
+
if (!(this.expressionMap.queryType === "soft-delete")) return [3 /*break*/, 12];
|
|
99
|
+
return [4 /*yield*/, queryRunner.broadcaster.broadcast("AfterSoftRemove", this.expressionMap.mainAlias.metadata)];
|
|
98
100
|
case 11:
|
|
99
101
|
_b.sent();
|
|
100
|
-
|
|
101
|
-
case 12:
|
|
102
|
+
return [3 /*break*/, 14];
|
|
103
|
+
case 12:
|
|
104
|
+
if (!(this.expressionMap.queryType === "restore")) return [3 /*break*/, 14];
|
|
105
|
+
return [4 /*yield*/, queryRunner.broadcaster.broadcast("AfterRecover", this.expressionMap.mainAlias.metadata)];
|
|
102
106
|
case 13:
|
|
103
|
-
|
|
104
|
-
if (!transactionStartedByUs) return [3 /*break*/, 17];
|
|
107
|
+
_b.sent();
|
|
105
108
|
_b.label = 14;
|
|
106
109
|
case 14:
|
|
107
|
-
|
|
108
|
-
return [4 /*yield*/, queryRunner.
|
|
110
|
+
if (!transactionStartedByUs) return [3 /*break*/, 16];
|
|
111
|
+
return [4 /*yield*/, queryRunner.commitTransaction()];
|
|
109
112
|
case 15:
|
|
110
113
|
_b.sent();
|
|
111
|
-
|
|
112
|
-
case 16:
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
114
|
+
_b.label = 16;
|
|
115
|
+
case 16: return [2 /*return*/, updateResult];
|
|
116
|
+
case 17:
|
|
117
|
+
error_2 = _b.sent();
|
|
118
|
+
if (!transactionStartedByUs) return [3 /*break*/, 21];
|
|
119
|
+
_b.label = 18;
|
|
116
120
|
case 18:
|
|
117
|
-
|
|
118
|
-
return [4 /*yield*/, queryRunner.
|
|
121
|
+
_b.trys.push([18, 20, , 21]);
|
|
122
|
+
return [4 /*yield*/, queryRunner.rollbackTransaction()];
|
|
119
123
|
case 19:
|
|
120
124
|
_b.sent();
|
|
121
|
-
|
|
122
|
-
case 20:
|
|
123
|
-
|
|
125
|
+
return [3 /*break*/, 21];
|
|
126
|
+
case 20:
|
|
127
|
+
rollbackError_1 = _b.sent();
|
|
128
|
+
return [3 /*break*/, 21];
|
|
129
|
+
case 21: throw error_2;
|
|
130
|
+
case 22:
|
|
131
|
+
if (!(queryRunner !== this.queryRunner)) return [3 /*break*/, 24];
|
|
132
|
+
return [4 /*yield*/, queryRunner.release()];
|
|
133
|
+
case 23:
|
|
134
|
+
_b.sent();
|
|
135
|
+
_b.label = 24;
|
|
136
|
+
case 24: return [7 /*endfinally*/];
|
|
137
|
+
case 25: return [2 /*return*/];
|
|
124
138
|
}
|
|
125
139
|
});
|
|
126
140
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/query-builder/SoftDeleteQueryBuilder.ts"],"names":[],"mappings":"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","file":"SoftDeleteQueryBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {QueryBuilder} from \"./QueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {EntityTarget} from \"../common/EntityTarget\";\nimport {Connection} from \"../connection/Connection\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {WhereExpressionBuilder} from \"./WhereExpressionBuilder\";\nimport {Brackets} from \"./Brackets\";\nimport {UpdateResult} from \"./result/UpdateResult\";\nimport {ReturningStatementNotSupportedError} from \"../error/ReturningStatementNotSupportedError\";\nimport {ReturningResultsEntityUpdator} from \"./ReturningResultsEntityUpdator\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {OrderByCondition} from \"../find-options/OrderByCondition\";\nimport {LimitOnUpdateNotSupportedError} from \"../error/LimitOnUpdateNotSupportedError\";\nimport {MissingDeleteDateColumnError} from \"../error/MissingDeleteDateColumnError\";\nimport {OracleDriver} from \"../driver/oracle/OracleDriver\";\nimport {UpdateValuesMissingError} from \"../error/UpdateValuesMissingError\";\nimport {EntitySchema} from \"../entity-schema/EntitySchema\";\nimport { TypeORMError } from \"../error\";\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nexport class SoftDeleteQueryBuilder<Entity> extends QueryBuilder<Entity> implements WhereExpressionBuilder {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connectionOrQueryBuilder: Connection|QueryBuilder<any>, queryRunner?: QueryRunner) {\n super(connectionOrQueryBuilder as any, queryRunner);\n this.expressionMap.aliasNamePrefixingEnabled = false;\n }\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated SQL query without parameters being replaced.\n */\n getQuery(): string {\n let sql = this.createUpdateExpression();\n sql += this.createOrderByExpression();\n sql += this.createLimitExpression();\n return sql.trim();\n }\n\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n async execute(): Promise<UpdateResult> {\n const queryRunner = this.obtainQueryRunner();\n let transactionStartedByUs: boolean = false;\n\n try {\n\n // start transaction if it was enabled\n if (this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false) {\n await queryRunner.startTransaction();\n transactionStartedByUs = true;\n }\n\n // call before updation methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n await queryRunner.broadcaster.broadcast(\"BeforeUpdate\", this.expressionMap.mainAlias!.metadata);\n }\n\n // if update entity mode is enabled we may need extra columns for the returning statement\n const returningResultsEntityUpdator = new ReturningResultsEntityUpdator(queryRunner, this.expressionMap);\n if (this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap.whereEntities.length > 0) {\n this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getSoftDeletionReturningColumns();\n }\n\n // execute update query\n const [sql, parameters] = this.getQueryAndParameters();\n\n const queryResult = await queryRunner.query(sql, parameters, true);\n const updateResult = UpdateResult.from(queryResult);\n\n // if we are updating entities and entity updation is enabled we must update some of entity columns (like version, update date, etc.)\n if (this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap.whereEntities.length > 0) {\n await returningResultsEntityUpdator.update(updateResult, this.expressionMap.whereEntities);\n }\n\n // call after updation methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n await queryRunner.broadcaster.broadcast(\"AfterUpdate\", this.expressionMap.mainAlias!.metadata);\n }\n\n // close transaction if we started it\n if (transactionStartedByUs)\n await queryRunner.commitTransaction();\n\n return updateResult;\n\n } catch (error) {\n\n // rollback transaction if we started it\n if (transactionStartedByUs) {\n try {\n await queryRunner.rollbackTransaction();\n } catch (rollbackError) { }\n }\n throw error;\n\n } finally {\n if (queryRunner !== this.queryRunner) { // means we created our own query runner\n await queryRunner.release();\n }\n }\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Specifies FROM which entity's table select/update/delete/soft-delete will be executed.\n * Also sets a main string alias of the selection data.\n */\n from<T>(entityTarget: EntityTarget<T>, aliasName?: string): SoftDeleteQueryBuilder<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 SoftDeleteQueryBuilder<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: string|((qb: this) => string)|Brackets|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n const condition = this.getWhereCondition(where);\n if (condition)\n this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n if (parameters)\n this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n andWhere(where: string|((qb: this) => string)|Brackets|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"and\", condition: this.getWhereCondition(where) });\n if (parameters) this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n orWhere(where: string|((qb: this) => string)|Brackets|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"or\", condition: this.getWhereCondition(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.getWhereInIdsCondition(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.getWhereInIdsCondition(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.getWhereInIdsCondition(ids));\n }\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n output(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n output(output: string): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this {\n return this.returning(output);\n }\n\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n returning(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n returning(returning: string): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this {\n\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported())\n throw new ReturningStatementNotSupportedError();\n\n this.expressionMap.returning = returning;\n return this;\n }\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n *\n * Calling order by without order set will remove all previously set order bys.\n */\n orderBy(): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(sort: string, order?: \"ASC\"|\"DESC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(order: OrderByCondition): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(sort?: string|OrderByCondition, order: \"ASC\"|\"DESC\" = \"ASC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this {\n if (sort) {\n if (sort instanceof Object) {\n this.expressionMap.orderBys = sort as OrderByCondition;\n } else {\n if (nulls) {\n this.expressionMap.orderBys = { [sort as string]: { order, nulls } };\n } else {\n this.expressionMap.orderBys = { [sort as string]: order };\n }\n }\n } else {\n this.expressionMap.orderBys = {};\n }\n return this;\n }\n\n /**\n * Adds ORDER BY condition in the query builder.\n */\n addOrderBy(sort: string, order: \"ASC\"|\"DESC\" = \"ASC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this {\n if (nulls) {\n this.expressionMap.orderBys[sort] = { order, nulls };\n } else {\n this.expressionMap.orderBys[sort] = order;\n }\n return this;\n }\n\n /**\n * Sets LIMIT - maximum number of rows to be selected.\n */\n limit(limit?: number): this {\n this.expressionMap.limit = limit;\n return this;\n }\n\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n whereEntity(entity: Entity|Entity[]): this {\n if (!this.expressionMap.mainAlias!.hasMetadata)\n throw new TypeORMError(`.whereEntity method can only be used on queries which update real entity table.`);\n\n this.expressionMap.wheres = [];\n const entities: Entity[] = Array.isArray(entity) ? entity : [entity];\n entities.forEach(entity => {\n\n const entityIdMap = this.expressionMap.mainAlias!.metadata.getEntityIdMap(entity);\n if (!entityIdMap)\n throw new TypeORMError(`Provided entity does not have ids set, cannot perform operation.`);\n\n this.orWhereInIds(entityIdMap);\n });\n\n this.expressionMap.whereEntities = entities;\n return this;\n }\n\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n updateEntity(enabled: boolean): this {\n this.expressionMap.updateEntity = enabled;\n return this;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates UPDATE express used to perform insert query.\n */\n protected createUpdateExpression() {\n const metadata = this.expressionMap.mainAlias!.hasMetadata ? this.expressionMap.mainAlias!.metadata : undefined;\n if (!metadata)\n throw new TypeORMError(`Cannot get entity metadata for the given alias \"${this.expressionMap.mainAlias}\"`);\n if (!metadata.deleteDateColumn) {\n throw new MissingDeleteDateColumnError(metadata);\n }\n\n // prepare columns and values to be updated\n const updateColumnAndValues: string[] = [];\n\n switch (this.expressionMap.queryType) {\n case \"soft-delete\":\n updateColumnAndValues.push(this.escape(metadata.deleteDateColumn.databaseName) + \" = CURRENT_TIMESTAMP\");\n break;\n case \"restore\":\n updateColumnAndValues.push(this.escape(metadata.deleteDateColumn.databaseName) + \" = NULL\");\n break;\n default:\n throw new TypeORMError(`The queryType must be \"soft-delete\" or \"restore\"`);\n }\n if (metadata.versionColumn)\n updateColumnAndValues.push(this.escape(metadata.versionColumn.databaseName) + \" = \" + this.escape(metadata.versionColumn.databaseName) + \" + 1\");\n if (metadata.updateDateColumn)\n updateColumnAndValues.push(this.escape(metadata.updateDateColumn.databaseName) + \" = CURRENT_TIMESTAMP\"); // todo: fix issue with CURRENT_TIMESTAMP(6) being used, can \"DEFAULT\" be used?!\n\n if (updateColumnAndValues.length <= 0) {\n throw new UpdateValuesMissingError();\n }\n\n // get a table name and all column database names\n const whereExpression = this.createWhereExpression();\n const returningExpression = this.createReturningExpression();\n\n // generate and return sql update query\n if (returningExpression && (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof OracleDriver || this.connection.driver instanceof CockroachDriver)) {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")}${whereExpression} RETURNING ${returningExpression}`;\n\n } else if (returningExpression && this.connection.driver instanceof SqlServerDriver) {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")} OUTPUT ${returningExpression}${whereExpression}`;\n\n } else {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")}${whereExpression}`; // todo: how do we replace aliases in where to nothing?\n }\n }\n\n /**\n * Creates \"ORDER BY\" part of SQL query.\n */\n protected createOrderByExpression() {\n const orderBys = this.expressionMap.orderBys;\n if (Object.keys(orderBys).length > 0)\n return \" ORDER BY \" + Object.keys(orderBys)\n .map(columnName => {\n if (typeof orderBys[columnName] === \"string\") {\n return this.replacePropertyNames(columnName) + \" \" + orderBys[columnName];\n } else {\n return this.replacePropertyNames(columnName) + \" \" + (orderBys[columnName] as any).order + \" \" + (orderBys[columnName] as any).nulls;\n }\n })\n .join(\", \");\n\n return \"\";\n }\n\n /**\n * Creates \"LIMIT\" parts of SQL query.\n */\n protected createLimitExpression(): string {\n let limit: number|undefined = this.expressionMap.limit;\n\n if (limit) {\n if (this.connection.driver instanceof MysqlDriver) {\n return \" LIMIT \" + limit;\n } else {\n throw new LimitOnUpdateNotSupportedError();\n }\n }\n\n return \"\";\n }\n\n}\n"],"sourceRoot":".."}
|
|
1
|
+
{"version":3,"sources":["../../src/query-builder/SoftDeleteQueryBuilder.ts"],"names":[],"mappings":"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","file":"SoftDeleteQueryBuilder.js","sourcesContent":["import {CockroachDriver} from \"../driver/cockroachdb/CockroachDriver\";\nimport {QueryBuilder} from \"./QueryBuilder\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {EntityTarget} from \"../common/EntityTarget\";\nimport {Connection} from \"../connection/Connection\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {PostgresDriver} from \"../driver/postgres/PostgresDriver\";\nimport {WhereExpressionBuilder} from \"./WhereExpressionBuilder\";\nimport {Brackets} from \"./Brackets\";\nimport {UpdateResult} from \"./result/UpdateResult\";\nimport {ReturningStatementNotSupportedError} from \"../error/ReturningStatementNotSupportedError\";\nimport {ReturningResultsEntityUpdator} from \"./ReturningResultsEntityUpdator\";\nimport {MysqlDriver} from \"../driver/mysql/MysqlDriver\";\nimport {OrderByCondition} from \"../find-options/OrderByCondition\";\nimport {LimitOnUpdateNotSupportedError} from \"../error/LimitOnUpdateNotSupportedError\";\nimport {MissingDeleteDateColumnError} from \"../error/MissingDeleteDateColumnError\";\nimport {OracleDriver} from \"../driver/oracle/OracleDriver\";\nimport {UpdateValuesMissingError} from \"../error/UpdateValuesMissingError\";\nimport {EntitySchema} from \"../entity-schema/EntitySchema\";\nimport { TypeORMError } from \"../error\";\n\n/**\n * Allows to build complex sql queries in a fashion way and execute those queries.\n */\nexport class SoftDeleteQueryBuilder<Entity> extends QueryBuilder<Entity> implements WhereExpressionBuilder {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(connectionOrQueryBuilder: Connection|QueryBuilder<any>, queryRunner?: QueryRunner) {\n super(connectionOrQueryBuilder as any, queryRunner);\n this.expressionMap.aliasNamePrefixingEnabled = false;\n }\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated SQL query without parameters being replaced.\n */\n getQuery(): string {\n let sql = this.createUpdateExpression();\n sql += this.createOrderByExpression();\n sql += this.createLimitExpression();\n return sql.trim();\n }\n\n /**\n * Executes sql generated by query builder and returns raw database results.\n */\n async execute(): Promise<UpdateResult> {\n const queryRunner = this.obtainQueryRunner();\n let transactionStartedByUs: boolean = false;\n\n try {\n\n // start transaction if it was enabled\n if (this.expressionMap.useTransaction === true && queryRunner.isTransactionActive === false) {\n await queryRunner.startTransaction();\n transactionStartedByUs = true;\n }\n\n // call before soft remove and recover methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n if (this.expressionMap.queryType === \"soft-delete\")\n await queryRunner.broadcaster.broadcast(\"BeforeSoftRemove\", this.expressionMap.mainAlias!.metadata);\n else if (this.expressionMap.queryType === \"restore\")\n await queryRunner.broadcaster.broadcast(\"BeforeRecover\", this.expressionMap.mainAlias!.metadata);\n }\n\n // if update entity mode is enabled we may need extra columns for the returning statement\n const returningResultsEntityUpdator = new ReturningResultsEntityUpdator(queryRunner, this.expressionMap);\n if (this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap.whereEntities.length > 0) {\n this.expressionMap.extraReturningColumns = returningResultsEntityUpdator.getSoftDeletionReturningColumns();\n }\n\n // execute update query\n const [sql, parameters] = this.getQueryAndParameters();\n\n const queryResult = await queryRunner.query(sql, parameters, true);\n const updateResult = UpdateResult.from(queryResult);\n\n // if we are updating entities and entity updation is enabled we must update some of entity columns (like version, update date, etc.)\n if (this.expressionMap.updateEntity === true &&\n this.expressionMap.mainAlias!.hasMetadata &&\n this.expressionMap.whereEntities.length > 0) {\n await returningResultsEntityUpdator.update(updateResult, this.expressionMap.whereEntities);\n }\n\n // call after soft remove and recover methods in listeners and subscribers\n if (this.expressionMap.callListeners === true && this.expressionMap.mainAlias!.hasMetadata) {\n if (this.expressionMap.queryType === \"soft-delete\")\n await queryRunner.broadcaster.broadcast(\"AfterSoftRemove\", this.expressionMap.mainAlias!.metadata);\n else if (this.expressionMap.queryType === \"restore\")\n await queryRunner.broadcaster.broadcast(\"AfterRecover\", this.expressionMap.mainAlias!.metadata);\n }\n\n // close transaction if we started it\n if (transactionStartedByUs)\n await queryRunner.commitTransaction();\n\n return updateResult;\n\n } catch (error) {\n\n // rollback transaction if we started it\n if (transactionStartedByUs) {\n try {\n await queryRunner.rollbackTransaction();\n } catch (rollbackError) { }\n }\n throw error;\n\n } finally {\n if (queryRunner !== this.queryRunner) { // means we created our own query runner\n await queryRunner.release();\n }\n }\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Specifies FROM which entity's table select/update/delete/soft-delete will be executed.\n * Also sets a main string alias of the selection data.\n */\n from<T>(entityTarget: EntityTarget<T>, aliasName?: string): SoftDeleteQueryBuilder<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 SoftDeleteQueryBuilder<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: string|((qb: this) => string)|Brackets|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n this.expressionMap.wheres = []; // don't move this block below since computeWhereParameter can add where expressions\n const condition = this.getWhereCondition(where);\n if (condition)\n this.expressionMap.wheres = [{ type: \"simple\", condition: condition }];\n if (parameters)\n this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new AND WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n andWhere(where: string|((qb: this) => string)|Brackets|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"and\", condition: this.getWhereCondition(where) });\n if (parameters) this.setParameters(parameters);\n return this;\n }\n\n /**\n * Adds new OR WHERE condition in the query builder.\n * Additionally you can add parameters used in where expression.\n */\n orWhere(where: string|((qb: this) => string)|Brackets|ObjectLiteral|ObjectLiteral[], parameters?: ObjectLiteral): this {\n this.expressionMap.wheres.push({ type: \"or\", condition: this.getWhereCondition(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.getWhereInIdsCondition(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.getWhereInIdsCondition(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.getWhereInIdsCondition(ids));\n }\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n output(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n output(output: string): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n output(output: string|string[]): this {\n return this.returning(output);\n }\n\n /**\n * Optional returning/output clause.\n * This will return given column values.\n */\n returning(columns: string[]): this;\n\n /**\n * Optional returning/output clause.\n * Returning is a SQL string containing returning statement.\n */\n returning(returning: string): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this;\n\n /**\n * Optional returning/output clause.\n */\n returning(returning: string|string[]): this {\n\n // not all databases support returning/output cause\n if (!this.connection.driver.isReturningSqlSupported())\n throw new ReturningStatementNotSupportedError();\n\n this.expressionMap.returning = returning;\n return this;\n }\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n *\n * Calling order by without order set will remove all previously set order bys.\n */\n orderBy(): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(sort: string, order?: \"ASC\"|\"DESC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(order: OrderByCondition): this;\n\n /**\n * Sets ORDER BY condition in the query builder.\n * If you had previously ORDER BY expression defined,\n * calling this function will override previously set ORDER BY conditions.\n */\n orderBy(sort?: string|OrderByCondition, order: \"ASC\"|\"DESC\" = \"ASC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this {\n if (sort) {\n if (sort instanceof Object) {\n this.expressionMap.orderBys = sort as OrderByCondition;\n } else {\n if (nulls) {\n this.expressionMap.orderBys = { [sort as string]: { order, nulls } };\n } else {\n this.expressionMap.orderBys = { [sort as string]: order };\n }\n }\n } else {\n this.expressionMap.orderBys = {};\n }\n return this;\n }\n\n /**\n * Adds ORDER BY condition in the query builder.\n */\n addOrderBy(sort: string, order: \"ASC\"|\"DESC\" = \"ASC\", nulls?: \"NULLS FIRST\"|\"NULLS LAST\"): this {\n if (nulls) {\n this.expressionMap.orderBys[sort] = { order, nulls };\n } else {\n this.expressionMap.orderBys[sort] = order;\n }\n return this;\n }\n\n /**\n * Sets LIMIT - maximum number of rows to be selected.\n */\n limit(limit?: number): this {\n this.expressionMap.limit = limit;\n return this;\n }\n\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n whereEntity(entity: Entity|Entity[]): this {\n if (!this.expressionMap.mainAlias!.hasMetadata)\n throw new TypeORMError(`.whereEntity method can only be used on queries which update real entity table.`);\n\n this.expressionMap.wheres = [];\n const entities: Entity[] = Array.isArray(entity) ? entity : [entity];\n entities.forEach(entity => {\n\n const entityIdMap = this.expressionMap.mainAlias!.metadata.getEntityIdMap(entity);\n if (!entityIdMap)\n throw new TypeORMError(`Provided entity does not have ids set, cannot perform operation.`);\n\n this.orWhereInIds(entityIdMap);\n });\n\n this.expressionMap.whereEntities = entities;\n return this;\n }\n\n /**\n * Indicates if entity must be updated after update operation.\n * This may produce extra query or use RETURNING / OUTPUT statement (depend on database).\n * Enabled by default.\n */\n updateEntity(enabled: boolean): this {\n this.expressionMap.updateEntity = enabled;\n return this;\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates UPDATE express used to perform insert query.\n */\n protected createUpdateExpression() {\n const metadata = this.expressionMap.mainAlias!.hasMetadata ? this.expressionMap.mainAlias!.metadata : undefined;\n if (!metadata)\n throw new TypeORMError(`Cannot get entity metadata for the given alias \"${this.expressionMap.mainAlias}\"`);\n if (!metadata.deleteDateColumn) {\n throw new MissingDeleteDateColumnError(metadata);\n }\n\n // prepare columns and values to be updated\n const updateColumnAndValues: string[] = [];\n\n switch (this.expressionMap.queryType) {\n case \"soft-delete\":\n updateColumnAndValues.push(this.escape(metadata.deleteDateColumn.databaseName) + \" = CURRENT_TIMESTAMP\");\n break;\n case \"restore\":\n updateColumnAndValues.push(this.escape(metadata.deleteDateColumn.databaseName) + \" = NULL\");\n break;\n default:\n throw new TypeORMError(`The queryType must be \"soft-delete\" or \"restore\"`);\n }\n if (metadata.versionColumn)\n updateColumnAndValues.push(this.escape(metadata.versionColumn.databaseName) + \" = \" + this.escape(metadata.versionColumn.databaseName) + \" + 1\");\n if (metadata.updateDateColumn)\n updateColumnAndValues.push(this.escape(metadata.updateDateColumn.databaseName) + \" = CURRENT_TIMESTAMP\"); // todo: fix issue with CURRENT_TIMESTAMP(6) being used, can \"DEFAULT\" be used?!\n\n if (updateColumnAndValues.length <= 0) {\n throw new UpdateValuesMissingError();\n }\n\n // get a table name and all column database names\n const whereExpression = this.createWhereExpression();\n const returningExpression = this.createReturningExpression();\n\n // generate and return sql update query\n if (returningExpression && (this.connection.driver instanceof PostgresDriver || this.connection.driver instanceof OracleDriver || this.connection.driver instanceof CockroachDriver)) {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")}${whereExpression} RETURNING ${returningExpression}`;\n\n } else if (returningExpression && this.connection.driver instanceof SqlServerDriver) {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")} OUTPUT ${returningExpression}${whereExpression}`;\n\n } else {\n return `UPDATE ${this.getTableName(this.getMainTableName())} SET ${updateColumnAndValues.join(\", \")}${whereExpression}`; // todo: how do we replace aliases in where to nothing?\n }\n }\n\n /**\n * Creates \"ORDER BY\" part of SQL query.\n */\n protected createOrderByExpression() {\n const orderBys = this.expressionMap.orderBys;\n if (Object.keys(orderBys).length > 0)\n return \" ORDER BY \" + Object.keys(orderBys)\n .map(columnName => {\n if (typeof orderBys[columnName] === \"string\") {\n return this.replacePropertyNames(columnName) + \" \" + orderBys[columnName];\n } else {\n return this.replacePropertyNames(columnName) + \" \" + (orderBys[columnName] as any).order + \" \" + (orderBys[columnName] as any).nulls;\n }\n })\n .join(\", \");\n\n return \"\";\n }\n\n /**\n * Creates \"LIMIT\" parts of SQL query.\n */\n protected createLimitExpression(): string {\n let limit: number|undefined = this.expressionMap.limit;\n\n if (limit) {\n if (this.connection.driver instanceof MysqlDriver) {\n return \" LIMIT \" + limit;\n } else {\n throw new LimitOnUpdateNotSupportedError();\n }\n }\n\n return \"\";\n }\n\n}\n"],"sourceRoot":".."}
|
|
@@ -18,6 +18,10 @@ interface BroadcasterEvents {
|
|
|
18
18
|
"AfterInsert": (metadata: EntityMetadata, entity: ObjectLiteral | undefined) => void;
|
|
19
19
|
"BeforeRemove": (metadata: EntityMetadata, entity?: ObjectLiteral, databaseEntity?: ObjectLiteral) => void;
|
|
20
20
|
"AfterRemove": (metadata: EntityMetadata, entity?: ObjectLiteral, databaseEntity?: ObjectLiteral) => void;
|
|
21
|
+
"BeforeSoftRemove": (metadata: EntityMetadata, entity?: ObjectLiteral, databaseEntity?: ObjectLiteral) => void;
|
|
22
|
+
"AfterSoftRemove": (metadata: EntityMetadata, entity?: ObjectLiteral, databaseEntity?: ObjectLiteral) => void;
|
|
23
|
+
"BeforeRecover": (metadata: EntityMetadata, entity?: ObjectLiteral, databaseEntity?: ObjectLiteral) => void;
|
|
24
|
+
"AfterRecover": (metadata: EntityMetadata, entity?: ObjectLiteral, databaseEntity?: ObjectLiteral) => void;
|
|
21
25
|
"Load": (metadata: EntityMetadata, entities: ObjectLiteral[]) => void;
|
|
22
26
|
}
|
|
23
27
|
/**
|
|
@@ -54,6 +58,24 @@ export declare class Broadcaster {
|
|
|
54
58
|
* Note: this method has a performance-optimized code organization, do not change code structure.
|
|
55
59
|
*/
|
|
56
60
|
broadcastBeforeRemoveEvent(result: BroadcasterResult, metadata: EntityMetadata, entity?: ObjectLiteral, databaseEntity?: ObjectLiteral): void;
|
|
61
|
+
/**
|
|
62
|
+
* Broadcasts "BEFORE_SOFT_REMOVE" event.
|
|
63
|
+
* Before soft remove event is executed before entity is being soft removed from the database.
|
|
64
|
+
* All subscribers and entity listeners who listened to this event will be executed at this point.
|
|
65
|
+
* Subscribers and entity listeners can return promises, it will wait until they are resolved.
|
|
66
|
+
*
|
|
67
|
+
* Note: this method has a performance-optimized code organization, do not change code structure.
|
|
68
|
+
*/
|
|
69
|
+
broadcastBeforeSoftRemoveEvent(result: BroadcasterResult, metadata: EntityMetadata, entity?: ObjectLiteral, databaseEntity?: ObjectLiteral): void;
|
|
70
|
+
/**
|
|
71
|
+
* Broadcasts "BEFORE_RECOVER" event.
|
|
72
|
+
* Before recover event is executed before entity is being recovered in the database.
|
|
73
|
+
* All subscribers and entity listeners who listened to this event will be executed at this point.
|
|
74
|
+
* Subscribers and entity listeners can return promises, it will wait until they are resolved.
|
|
75
|
+
*
|
|
76
|
+
* Note: this method has a performance-optimized code organization, do not change code structure.
|
|
77
|
+
*/
|
|
78
|
+
broadcastBeforeRecoverEvent(result: BroadcasterResult, metadata: EntityMetadata, entity?: ObjectLiteral, databaseEntity?: ObjectLiteral): void;
|
|
57
79
|
/**
|
|
58
80
|
* Broadcasts "AFTER_INSERT" event.
|
|
59
81
|
* After insert event is executed after entity is being persisted to the database for the first time.
|
|
@@ -105,6 +127,24 @@ export declare class Broadcaster {
|
|
|
105
127
|
* Note: this method has a performance-optimized code organization, do not change code structure.
|
|
106
128
|
*/
|
|
107
129
|
broadcastAfterRemoveEvent(result: BroadcasterResult, metadata: EntityMetadata, entity?: ObjectLiteral, databaseEntity?: ObjectLiteral): void;
|
|
130
|
+
/**
|
|
131
|
+
* Broadcasts "AFTER_SOFT_REMOVE" event.
|
|
132
|
+
* After soft remove event is executed after entity is being soft removed from the database.
|
|
133
|
+
* All subscribers and entity listeners who listened to this event will be executed at this point.
|
|
134
|
+
* Subscribers and entity listeners can return promises, it will wait until they are resolved.
|
|
135
|
+
*
|
|
136
|
+
* Note: this method has a performance-optimized code organization, do not change code structure.
|
|
137
|
+
*/
|
|
138
|
+
broadcastAfterSoftRemoveEvent(result: BroadcasterResult, metadata: EntityMetadata, entity?: ObjectLiteral, databaseEntity?: ObjectLiteral): void;
|
|
139
|
+
/**
|
|
140
|
+
* Broadcasts "AFTER_RECOVER" event.
|
|
141
|
+
* After recover event is executed after entity is being recovered in the database.
|
|
142
|
+
* All subscribers and entity listeners who listened to this event will be executed at this point.
|
|
143
|
+
* Subscribers and entity listeners can return promises, it will wait until they are resolved.
|
|
144
|
+
*
|
|
145
|
+
* Note: this method has a performance-optimized code organization, do not change code structure.
|
|
146
|
+
*/
|
|
147
|
+
broadcastAfterRecoverEvent(result: BroadcasterResult, metadata: EntityMetadata, entity?: ObjectLiteral, databaseEntity?: ObjectLiteral): void;
|
|
108
148
|
/**
|
|
109
149
|
* @deprecated Use `broadcastLoadForAllEvent`
|
|
110
150
|
*/
|
|
@@ -157,6 +157,84 @@ var Broadcaster = /** @class */ (function () {
|
|
|
157
157
|
});
|
|
158
158
|
}
|
|
159
159
|
};
|
|
160
|
+
/**
|
|
161
|
+
* Broadcasts "BEFORE_SOFT_REMOVE" event.
|
|
162
|
+
* Before soft remove event is executed before entity is being soft removed from the database.
|
|
163
|
+
* All subscribers and entity listeners who listened to this event will be executed at this point.
|
|
164
|
+
* Subscribers and entity listeners can return promises, it will wait until they are resolved.
|
|
165
|
+
*
|
|
166
|
+
* Note: this method has a performance-optimized code organization, do not change code structure.
|
|
167
|
+
*/
|
|
168
|
+
Broadcaster.prototype.broadcastBeforeSoftRemoveEvent = function (result, metadata, entity, databaseEntity) {
|
|
169
|
+
var _this = this;
|
|
170
|
+
if (entity && metadata.beforeSoftRemoveListeners.length) {
|
|
171
|
+
metadata.beforeSoftRemoveListeners.forEach(function (listener) {
|
|
172
|
+
if (listener.isAllowed(entity)) {
|
|
173
|
+
var executionResult = listener.execute(entity);
|
|
174
|
+
if (executionResult instanceof Promise)
|
|
175
|
+
result.promises.push(executionResult);
|
|
176
|
+
result.count++;
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
if (this.queryRunner.connection.subscribers.length) {
|
|
181
|
+
this.queryRunner.connection.subscribers.forEach(function (subscriber) {
|
|
182
|
+
if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.beforeSoftRemove) {
|
|
183
|
+
var executionResult = subscriber.beforeSoftRemove({
|
|
184
|
+
connection: _this.queryRunner.connection,
|
|
185
|
+
queryRunner: _this.queryRunner,
|
|
186
|
+
manager: _this.queryRunner.manager,
|
|
187
|
+
entity: entity,
|
|
188
|
+
metadata: metadata,
|
|
189
|
+
databaseEntity: databaseEntity,
|
|
190
|
+
entityId: metadata.getEntityIdMixedMap(databaseEntity)
|
|
191
|
+
});
|
|
192
|
+
if (executionResult instanceof Promise)
|
|
193
|
+
result.promises.push(executionResult);
|
|
194
|
+
result.count++;
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
/**
|
|
200
|
+
* Broadcasts "BEFORE_RECOVER" event.
|
|
201
|
+
* Before recover event is executed before entity is being recovered in the database.
|
|
202
|
+
* All subscribers and entity listeners who listened to this event will be executed at this point.
|
|
203
|
+
* Subscribers and entity listeners can return promises, it will wait until they are resolved.
|
|
204
|
+
*
|
|
205
|
+
* Note: this method has a performance-optimized code organization, do not change code structure.
|
|
206
|
+
*/
|
|
207
|
+
Broadcaster.prototype.broadcastBeforeRecoverEvent = function (result, metadata, entity, databaseEntity) {
|
|
208
|
+
var _this = this;
|
|
209
|
+
if (entity && metadata.beforeRecoverListeners.length) {
|
|
210
|
+
metadata.beforeRecoverListeners.forEach(function (listener) {
|
|
211
|
+
if (listener.isAllowed(entity)) {
|
|
212
|
+
var executionResult = listener.execute(entity);
|
|
213
|
+
if (executionResult instanceof Promise)
|
|
214
|
+
result.promises.push(executionResult);
|
|
215
|
+
result.count++;
|
|
216
|
+
}
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
if (this.queryRunner.connection.subscribers.length) {
|
|
220
|
+
this.queryRunner.connection.subscribers.forEach(function (subscriber) {
|
|
221
|
+
if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.beforeRecover) {
|
|
222
|
+
var executionResult = subscriber.beforeRecover({
|
|
223
|
+
connection: _this.queryRunner.connection,
|
|
224
|
+
queryRunner: _this.queryRunner,
|
|
225
|
+
manager: _this.queryRunner.manager,
|
|
226
|
+
entity: entity,
|
|
227
|
+
metadata: metadata,
|
|
228
|
+
databaseEntity: databaseEntity,
|
|
229
|
+
entityId: metadata.getEntityIdMixedMap(databaseEntity)
|
|
230
|
+
});
|
|
231
|
+
if (executionResult instanceof Promise)
|
|
232
|
+
result.promises.push(executionResult);
|
|
233
|
+
result.count++;
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
};
|
|
160
238
|
/**
|
|
161
239
|
* Broadcasts "AFTER_INSERT" event.
|
|
162
240
|
* After insert event is executed after entity is being persisted to the database for the first time.
|
|
@@ -393,6 +471,84 @@ var Broadcaster = /** @class */ (function () {
|
|
|
393
471
|
});
|
|
394
472
|
}
|
|
395
473
|
};
|
|
474
|
+
/**
|
|
475
|
+
* Broadcasts "AFTER_SOFT_REMOVE" event.
|
|
476
|
+
* After soft remove event is executed after entity is being soft removed from the database.
|
|
477
|
+
* All subscribers and entity listeners who listened to this event will be executed at this point.
|
|
478
|
+
* Subscribers and entity listeners can return promises, it will wait until they are resolved.
|
|
479
|
+
*
|
|
480
|
+
* Note: this method has a performance-optimized code organization, do not change code structure.
|
|
481
|
+
*/
|
|
482
|
+
Broadcaster.prototype.broadcastAfterSoftRemoveEvent = function (result, metadata, entity, databaseEntity) {
|
|
483
|
+
var _this = this;
|
|
484
|
+
if (entity && metadata.afterSoftRemoveListeners.length) {
|
|
485
|
+
metadata.afterSoftRemoveListeners.forEach(function (listener) {
|
|
486
|
+
if (listener.isAllowed(entity)) {
|
|
487
|
+
var executionResult = listener.execute(entity);
|
|
488
|
+
if (executionResult instanceof Promise)
|
|
489
|
+
result.promises.push(executionResult);
|
|
490
|
+
result.count++;
|
|
491
|
+
}
|
|
492
|
+
});
|
|
493
|
+
}
|
|
494
|
+
if (this.queryRunner.connection.subscribers.length) {
|
|
495
|
+
this.queryRunner.connection.subscribers.forEach(function (subscriber) {
|
|
496
|
+
if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.afterSoftRemove) {
|
|
497
|
+
var executionResult = subscriber.afterSoftRemove({
|
|
498
|
+
connection: _this.queryRunner.connection,
|
|
499
|
+
queryRunner: _this.queryRunner,
|
|
500
|
+
manager: _this.queryRunner.manager,
|
|
501
|
+
entity: entity,
|
|
502
|
+
metadata: metadata,
|
|
503
|
+
databaseEntity: databaseEntity,
|
|
504
|
+
entityId: metadata.getEntityIdMixedMap(databaseEntity)
|
|
505
|
+
});
|
|
506
|
+
if (executionResult instanceof Promise)
|
|
507
|
+
result.promises.push(executionResult);
|
|
508
|
+
result.count++;
|
|
509
|
+
}
|
|
510
|
+
});
|
|
511
|
+
}
|
|
512
|
+
};
|
|
513
|
+
/**
|
|
514
|
+
* Broadcasts "AFTER_RECOVER" event.
|
|
515
|
+
* After recover event is executed after entity is being recovered in the database.
|
|
516
|
+
* All subscribers and entity listeners who listened to this event will be executed at this point.
|
|
517
|
+
* Subscribers and entity listeners can return promises, it will wait until they are resolved.
|
|
518
|
+
*
|
|
519
|
+
* Note: this method has a performance-optimized code organization, do not change code structure.
|
|
520
|
+
*/
|
|
521
|
+
Broadcaster.prototype.broadcastAfterRecoverEvent = function (result, metadata, entity, databaseEntity) {
|
|
522
|
+
var _this = this;
|
|
523
|
+
if (entity && metadata.afterRecoverListeners.length) {
|
|
524
|
+
metadata.afterRecoverListeners.forEach(function (listener) {
|
|
525
|
+
if (listener.isAllowed(entity)) {
|
|
526
|
+
var executionResult = listener.execute(entity);
|
|
527
|
+
if (executionResult instanceof Promise)
|
|
528
|
+
result.promises.push(executionResult);
|
|
529
|
+
result.count++;
|
|
530
|
+
}
|
|
531
|
+
});
|
|
532
|
+
}
|
|
533
|
+
if (this.queryRunner.connection.subscribers.length) {
|
|
534
|
+
this.queryRunner.connection.subscribers.forEach(function (subscriber) {
|
|
535
|
+
if (_this.isAllowedSubscriber(subscriber, metadata.target) && subscriber.afterRecover) {
|
|
536
|
+
var executionResult = subscriber.afterRecover({
|
|
537
|
+
connection: _this.queryRunner.connection,
|
|
538
|
+
queryRunner: _this.queryRunner,
|
|
539
|
+
manager: _this.queryRunner.manager,
|
|
540
|
+
entity: entity,
|
|
541
|
+
metadata: metadata,
|
|
542
|
+
databaseEntity: databaseEntity,
|
|
543
|
+
entityId: metadata.getEntityIdMixedMap(databaseEntity)
|
|
544
|
+
});
|
|
545
|
+
if (executionResult instanceof Promise)
|
|
546
|
+
result.promises.push(executionResult);
|
|
547
|
+
result.count++;
|
|
548
|
+
}
|
|
549
|
+
});
|
|
550
|
+
}
|
|
551
|
+
};
|
|
396
552
|
/**
|
|
397
553
|
* @deprecated Use `broadcastLoadForAllEvent`
|
|
398
554
|
*/
|