@rapidrest/service-core 1.0.0-beta.5 → 1.0.0-rc.0
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/dist/lib/Server.js +20 -14
- package/dist/lib/Server.js.map +1 -1
- package/dist/lib/database/MongoRepository.js +22 -24
- package/dist/lib/database/MongoRepository.js.map +1 -1
- package/dist/lib/database/MongoSchemaSync.js +65 -20
- package/dist/lib/database/MongoSchemaSync.js.map +1 -1
- package/dist/lib/database/NamingUtils.js +4 -4
- package/dist/lib/database/NamingUtils.js.map +1 -1
- package/dist/lib/decorators/PersistenceDecorators.js +17 -17
- package/dist/lib/decorators/PersistenceDecorators.js.map +1 -1
- package/dist/lib/models/BaseEntity.js +1 -1
- package/dist/lib/models/BaseEntity.js.map +1 -1
- package/dist/lib/models/BaseMongoEntity.js +10 -3
- package/dist/lib/models/BaseMongoEntity.js.map +1 -1
- package/dist/lib/models/ModelUtils.js +31 -34
- package/dist/lib/models/ModelUtils.js.map +1 -1
- package/dist/lib/models/RecoverableBaseMongoEntity.js +11 -3
- package/dist/lib/models/RecoverableBaseMongoEntity.js.map +1 -1
- package/dist/lib/models/RepoUtils.js +54 -60
- package/dist/lib/models/RepoUtils.js.map +1 -1
- package/dist/lib/models/SimpleEntity.js +1 -1
- package/dist/lib/models/SimpleEntity.js.map +1 -1
- package/dist/lib/routes/ModelRoute.js +6 -15
- package/dist/lib/routes/ModelRoute.js.map +1 -1
- package/dist/lib/routes/RouteUtils.js +14 -6
- package/dist/lib/routes/RouteUtils.js.map +1 -1
- package/dist/lib/security/ACLUtils.js +43 -15
- package/dist/lib/security/ACLUtils.js.map +1 -1
- package/dist/types/database/MongoRepository.d.ts +17 -11
- package/dist/types/database/MongoSchemaSync.d.ts +22 -3
- package/dist/types/database/NamingUtils.d.ts +1 -1
- package/dist/types/decorators/PersistenceDecorators.d.ts +29 -3
- package/dist/types/models/ModelUtils.d.ts +3 -6
- package/dist/types/models/RepoUtils.d.ts +1 -7
- package/dist/types/routes/ModelRoute.d.ts +0 -4
- package/dist/types/security/ACLUtils.d.ts +3 -0
- package/docs/reference/@rapidrest/namespaces/DatabaseDecorators/functions/MongoRepository.md +1 -1
- package/docs/reference/@rapidrest/namespaces/DatabaseDecorators/functions/RedisConnection.md +1 -1
- package/docs/reference/@rapidrest/namespaces/DatabaseDecorators/functions/Repository.md +1 -1
- package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Default.md +1 -1
- package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Description.md +1 -1
- package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Document.md +1 -1
- package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Example.md +1 -1
- package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Format.md +1 -1
- package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Returns.md +1 -1
- package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Summary.md +1 -1
- package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/Tags.md +1 -1
- package/docs/reference/@rapidrest/namespaces/DocDecorators/functions/TypeInfo.md +1 -1
- package/docs/reference/@rapidrest/namespaces/DocDecorators/interfaces/DocumentsData.md +7 -7
- package/docs/reference/@rapidrest/namespaces/EventDecorators/functions/EventListener.md +1 -1
- package/docs/reference/@rapidrest/namespaces/EventDecorators/functions/OnEvent.md +1 -1
- package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/Cache.md +1 -1
- package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/ChildEntity.md +2 -2
- package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/DataStore.md +1 -1
- package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/Identifier.md +1 -1
- package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/Protect.md +5 -5
- package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/Reference.md +1 -1
- package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/Shard.md +1 -1
- package/docs/reference/@rapidrest/namespaces/ModelDecorators/functions/TrackChanges.md +2 -2
- package/docs/reference/@rapidrest/namespaces/ModelDecorators/interfaces/PendingTypeOrmColumn.md +7 -7
- package/docs/reference/@rapidrest/namespaces/ModelDecorators/variables/pendingTypeOrmColumns.md +2 -2
- package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/README.md +2 -0
- package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/Column.md +1 -1
- package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/Entity.md +5 -6
- package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/Index.md +3 -3
- package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/PrimaryColumn.md +1 -1
- package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/Unique.md +3 -3
- package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/getColumnMetadata.md +1 -1
- package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/getEntityName.md +1 -1
- package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/functions/getIndexMetadata.md +1 -1
- package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/interfaces/CollationOptions.md +79 -0
- package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/interfaces/ColumnInfo.md +4 -4
- package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/interfaces/ColumnOptions.md +5 -5
- package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/interfaces/EntityOptions.md +32 -0
- package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/interfaces/IndexInfo.md +4 -4
- package/docs/reference/@rapidrest/namespaces/PersistenceDecorators/interfaces/IndexOptions.md +15 -5
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/After.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Auth.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/AuthResult.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Before.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/ContentType.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Delete.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Get.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Head.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Header.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Method.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Model.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Options.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Param.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Patch.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Post.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Protect.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Put.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Query.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Request.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/RequiresRole.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Response.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Route.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Socket.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/User.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/Validate.md +1 -1
- package/docs/reference/@rapidrest/namespaces/RouteDecorators/functions/WebSocket.md +1 -1
- package/docs/reference/classes/ACLUtils.md +17 -9
- package/docs/reference/classes/AdminRoute.md +3 -3
- package/docs/reference/classes/AuthMiddleware.md +8 -8
- package/docs/reference/classes/BackgroundService.md +8 -8
- package/docs/reference/classes/BackgroundServiceManager.md +7 -7
- package/docs/reference/classes/BaseEntity.md +6 -6
- package/docs/reference/classes/BaseMongoEntity.md +7 -7
- package/docs/reference/classes/BasicStrategy.md +5 -5
- package/docs/reference/classes/BasicStrategyOptions.md +7 -7
- package/docs/reference/classes/BulkError.md +3 -3
- package/docs/reference/classes/ConnectionManager.md +4 -4
- package/docs/reference/classes/EventListenerManager.md +5 -5
- package/docs/reference/classes/HttpRouter.md +16 -16
- package/docs/reference/classes/JWTStrategy.md +5 -5
- package/docs/reference/classes/JWTStrategyOptions.md +8 -8
- package/docs/reference/classes/MetricsRoute.md +2 -2
- package/docs/reference/classes/ModelRoute.md +46 -46
- package/docs/reference/classes/ModelUtils.md +13 -31
- package/docs/reference/classes/MongoConnection.md +12 -12
- package/docs/reference/classes/MongoRepository.md +73 -37
- package/docs/reference/classes/MongoSchemaSync.md +33 -3
- package/docs/reference/classes/NetUtils.md +3 -3
- package/docs/reference/classes/NotificationUtils.md +3 -3
- package/docs/reference/classes/ObjectFactory.md +3 -3
- package/docs/reference/classes/OpenAPIRoute.md +5 -5
- package/docs/reference/classes/OpenApiSpec.md +45 -45
- package/docs/reference/classes/RecoverableBaseEntity.md +7 -7
- package/docs/reference/classes/RecoverableBaseMongoEntity.md +8 -8
- package/docs/reference/classes/RedisTransport.md +4 -4
- package/docs/reference/classes/RepoUtils.md +29 -33
- package/docs/reference/classes/RouteUtils.md +7 -7
- package/docs/reference/classes/Server.md +26 -26
- package/docs/reference/classes/SimpleEntity.md +3 -3
- package/docs/reference/classes/SimpleMongoEntity.md +4 -4
- package/docs/reference/classes/StatusExtraData.md +4 -4
- package/docs/reference/classes/StatusRoute.md +1 -1
- package/docs/reference/classes/UWSRequest.md +16 -16
- package/docs/reference/classes/UWSResponse.md +13 -13
- package/docs/reference/classes/UWSWebSocketShim.md +5 -5
- package/docs/reference/enumerations/ACLAction.md +7 -7
- package/docs/reference/enumerations/ApiErrorMessages.md +15 -15
- package/docs/reference/enumerations/ApiErrors.md +15 -15
- package/docs/reference/functions/createWebSocketStream.md +1 -1
- package/docs/reference/functions/isSqlDataSource.md +1 -1
- package/docs/reference/functions/readBody.md +1 -1
- package/docs/reference/functions/resolveCollectionName.md +2 -2
- package/docs/reference/functions/runChain.md +1 -1
- package/docs/reference/functions/snakeCase.md +1 -1
- package/docs/reference/interfaces/ACLRecord.md +8 -8
- package/docs/reference/interfaces/AccessControlList.md +5 -5
- package/docs/reference/interfaces/AuthResult.md +5 -5
- package/docs/reference/interfaces/AuthStrategy.md +4 -4
- package/docs/reference/interfaces/CreateRequestOptions.md +9 -9
- package/docs/reference/interfaces/DeleteRequestOptions.md +10 -20
- package/docs/reference/interfaces/FindRequestOptions.md +10 -10
- package/docs/reference/interfaces/HttpRequest.md +15 -15
- package/docs/reference/interfaces/HttpResponse.md +11 -11
- package/docs/reference/interfaces/JWTAuthResult.md +6 -6
- package/docs/reference/interfaces/RepoCreateOptions.md +7 -7
- package/docs/reference/interfaces/RepoDeleteOptions.md +8 -18
- package/docs/reference/interfaces/RepoFindOptions.md +10 -20
- package/docs/reference/interfaces/RepoOperationOptions.md +6 -6
- package/docs/reference/interfaces/RepoUpdateOptions.md +7 -17
- package/docs/reference/interfaces/RequestOptions.md +8 -8
- package/docs/reference/interfaces/RequestWS.md +17 -17
- package/docs/reference/interfaces/TruncateRequestOptions.md +12 -26
- package/docs/reference/interfaces/UpdateRequestOptions.md +10 -20
- package/docs/reference/type-aliases/ErrorHandler.md +1 -1
- package/docs/reference/type-aliases/NextFunction.md +1 -1
- package/docs/reference/type-aliases/OneOrMany.md +1 -1
- package/docs/reference/type-aliases/OneOrNull.md +1 -1
- package/docs/reference/type-aliases/PartialBaseEntity.md +1 -1
- package/docs/reference/type-aliases/PartialSimpleEntity.md +1 -1
- package/docs/reference/type-aliases/RequestHandler.md +1 -1
- package/docs/reference/type-aliases/UpdateObject.md +1 -1
- package/docs/reference/type-aliases/WsUpgradeAuth.md +1 -1
- package/docs/reference/type-aliases/WsUpgradeAuthResult.md +5 -5
- package/package.json +1 -1
|
@@ -64,15 +64,14 @@ export class ModelUtils {
|
|
|
64
64
|
* @param modelClass The class definition of the data model to build a search query for.
|
|
65
65
|
* @param id The unique identifier to search for.
|
|
66
66
|
* @param version The version number of the document to search for.
|
|
67
|
-
* @param productUid The optional product uid that is associated with the uid (when a compound key is used).
|
|
68
67
|
* @returns An object that can be passed to a TypeORM `find` function.
|
|
69
68
|
*/
|
|
70
|
-
static buildIdSearchQuery(repo, modelClass, id, version
|
|
69
|
+
static buildIdSearchQuery(repo, modelClass, id, version) {
|
|
71
70
|
if (repo instanceof MongoRepository) {
|
|
72
|
-
return ModelUtils.buildIdSearchQueryMongo(modelClass, id, version
|
|
71
|
+
return ModelUtils.buildIdSearchQueryMongo(modelClass, id, version);
|
|
73
72
|
}
|
|
74
73
|
else {
|
|
75
|
-
return ModelUtils.buildIdSearchQuerySQL(modelClass, id, version
|
|
74
|
+
return ModelUtils.buildIdSearchQuerySQL(modelClass, id, version);
|
|
76
75
|
}
|
|
77
76
|
}
|
|
78
77
|
/**
|
|
@@ -82,22 +81,15 @@ export class ModelUtils {
|
|
|
82
81
|
* @param modelClass The class definition of the data model to build a search query for.
|
|
83
82
|
* @param id The unique identifier to search for.
|
|
84
83
|
* @param version The version number of the document to search for.
|
|
85
|
-
* @param productUid The optional product uid that is associated with the uid (when a compound key is used).
|
|
86
84
|
* @returns An object that can be passed to a TypeORM `find` function.
|
|
87
85
|
*/
|
|
88
|
-
static buildIdSearchQuerySQL(modelClass, id, version
|
|
86
|
+
static buildIdSearchQuerySQL(modelClass, id, version) {
|
|
89
87
|
const props = ModelUtils.getIdPropertyNames(modelClass);
|
|
90
88
|
// Create the where in SQL syntax. We only care about one of the identifier field's matching.
|
|
91
89
|
// e.g. WHERE idField1 = :idField1 OR idField2 = :idField2 ...
|
|
92
90
|
const where = [];
|
|
93
91
|
for (const prop of props) {
|
|
94
|
-
// If productUid is an id, skip it because it's used as a compound key
|
|
95
|
-
if (prop === "productUid")
|
|
96
|
-
continue;
|
|
97
92
|
const q = { [prop]: Array.isArray(id) ? ModelUtils.orm.In(id) : id };
|
|
98
|
-
if (props.includes("productUid")) {
|
|
99
|
-
q.productUid = productUid;
|
|
100
|
-
}
|
|
101
93
|
if (version !== undefined) {
|
|
102
94
|
q.version = version;
|
|
103
95
|
}
|
|
@@ -112,33 +104,28 @@ export class ModelUtils {
|
|
|
112
104
|
* @param modelClass The class definition of the data model to build a search query for.
|
|
113
105
|
* @param id The unique identifier to search for.
|
|
114
106
|
* @param version The version number of the document to search for.
|
|
115
|
-
* @param productUid The optional product uid that is associated with the uid (when a compound key is used).
|
|
116
107
|
* @returns An object that can be passed to a MongoDB `find` function.
|
|
117
108
|
*/
|
|
118
|
-
static buildIdSearchQueryMongo(modelClass, id, version
|
|
109
|
+
static buildIdSearchQueryMongo(modelClass, id, version) {
|
|
119
110
|
const props = ModelUtils.getIdPropertyNames(modelClass);
|
|
120
|
-
// We want to performa case-insensitive search.
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
131
|
-
//
|
|
132
|
-
//
|
|
111
|
+
// We want to performa case-insensitive search. We used to convert strings to RegEx but this is _very_
|
|
112
|
+
// slow. Instead, we use case-insenstive indexes that are configured using the `collation` option. Now
|
|
113
|
+
// we only need to pass in the raw string. So we skip this section but we retain the code for historical
|
|
114
|
+
// reasons.
|
|
115
|
+
// See: https://www.mongodb.com/docs/v7.0/core/index-case-insensitive/
|
|
116
|
+
// if (Array.isArray(id)) {
|
|
117
|
+
// for (let i = 0; i < id.length; i++) {
|
|
118
|
+
// if (typeof id[i] === "string") {
|
|
119
|
+
// id[i] = new RegExp("^" + id[i].replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + "$", "i");
|
|
120
|
+
// }
|
|
121
|
+
// }
|
|
122
|
+
// } else if (typeof id === "string") {
|
|
123
|
+
// id = new RegExp("^" + id.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + "$", "i");
|
|
124
|
+
// }
|
|
125
|
+
// Create the where in Mongo filter syntax. We only care about one of the identifier field's matching.
|
|
133
126
|
const query = [];
|
|
134
127
|
for (const prop of props) {
|
|
135
|
-
// If productUid is an id, skip it because it's used as a compound key
|
|
136
|
-
if (prop === "productUid")
|
|
137
|
-
continue;
|
|
138
128
|
const q = { [prop]: Array.isArray(id) ? { $in: id } : id };
|
|
139
|
-
if (productUid && props.includes("productUid")) {
|
|
140
|
-
q.productUid = productUid;
|
|
141
|
-
}
|
|
142
129
|
if (version !== undefined) {
|
|
143
130
|
q.version = version;
|
|
144
131
|
}
|
|
@@ -573,7 +560,9 @@ export class ModelUtils {
|
|
|
573
560
|
let orResults = [];
|
|
574
561
|
for (const query of queryParams[key]) {
|
|
575
562
|
const subQueryOrResult = this.buildSearchQueryMongo(modelClass, undefined, query, exactMatch, user);
|
|
576
|
-
const validSubQueryResult = subQueryOrResult && subQueryOrResult.length > 0
|
|
563
|
+
const validSubQueryResult = Array.isArray(subQueryOrResult) && subQueryOrResult.length > 0
|
|
564
|
+
? subQueryOrResult[0]["$match"]
|
|
565
|
+
: subQueryOrResult["$match"];
|
|
577
566
|
validSubQueryResult && orResults.push(validSubQueryResult);
|
|
578
567
|
}
|
|
579
568
|
queries[0] = { $or: orResults };
|
|
@@ -614,6 +603,14 @@ export class ModelUtils {
|
|
|
614
603
|
if (sort && !isEmpty(sort)) {
|
|
615
604
|
result.push({ $sort: sort });
|
|
616
605
|
}
|
|
606
|
+
// If this is a simple query (e.g. only $match and $sort) then we want to extract this query so that
|
|
607
|
+
// we don't run it as an aggregate pipeline.
|
|
608
|
+
if (result.length < 3) {
|
|
609
|
+
return {
|
|
610
|
+
...result[0],
|
|
611
|
+
...result[1],
|
|
612
|
+
};
|
|
613
|
+
}
|
|
617
614
|
return result;
|
|
618
615
|
}
|
|
619
616
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ModelUtils.js","sourceRoot":"","sources":["../../../src/models/ModelUtils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ModelUtils.js","sourceRoot":"","sources":["../../../src/models/ModelUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
// Copyright (C) 2020-2026 Jean-Philippe Steinmetz. All rights reserved.
|
|
12
12
|
///////////////////////////////////////////////////////////////////////////////
|
|
13
13
|
import { ObjectId } from "mongodb";
|
|
14
|
-
import { Column } from "../decorators/PersistenceDecorators.js";
|
|
14
|
+
import { Column, Index } from "../decorators/PersistenceDecorators.js";
|
|
15
15
|
import { RecoverableBaseEntity } from "./RecoverableBaseEntity.js";
|
|
16
16
|
/**
|
|
17
17
|
* The `RecoverableBaseMongoEntity` provides an entity base class for those classes wishing to implement
|
|
@@ -21,7 +21,9 @@ import { RecoverableBaseEntity } from "./RecoverableBaseEntity.js";
|
|
|
21
21
|
*
|
|
22
22
|
* @author Jean-Philippe Steinmetz <rapidrests@gmail.com>
|
|
23
23
|
*/
|
|
24
|
-
|
|
24
|
+
// Shadow BaseEntity's unique uid index — versioned entities store multiple documents per uid (one per
|
|
25
|
+
// version), so uniqueness must be enforced on the compound (uid, version) key instead.
|
|
26
|
+
let RecoverableBaseMongoEntity = class RecoverableBaseMongoEntity extends RecoverableBaseEntity {
|
|
25
27
|
constructor(other) {
|
|
26
28
|
super(other);
|
|
27
29
|
if (other) {
|
|
@@ -32,9 +34,15 @@ export class RecoverableBaseMongoEntity extends RecoverableBaseEntity {
|
|
|
32
34
|
: this._id;
|
|
33
35
|
}
|
|
34
36
|
}
|
|
35
|
-
}
|
|
37
|
+
};
|
|
36
38
|
__decorate([
|
|
37
39
|
Column({ isObjectId: true }),
|
|
38
40
|
__metadata("design:type", Object)
|
|
39
41
|
], RecoverableBaseMongoEntity.prototype, "_id", void 0);
|
|
42
|
+
RecoverableBaseMongoEntity = __decorate([
|
|
43
|
+
Index("uid_version", ["uid", "version"], { unique: true, collation: { locale: "en", strength: 2 } }),
|
|
44
|
+
Index("uid", ["uid"], { collation: { locale: "en", strength: 2 } }),
|
|
45
|
+
__metadata("design:paramtypes", [Object])
|
|
46
|
+
], RecoverableBaseMongoEntity);
|
|
47
|
+
export { RecoverableBaseMongoEntity };
|
|
40
48
|
//# sourceMappingURL=RecoverableBaseMongoEntity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RecoverableBaseMongoEntity.js","sourceRoot":"","sources":["../../../src/models/RecoverableBaseMongoEntity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+EAA+E;AAC/E,wEAAwE;AACxE,+EAA+E;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"RecoverableBaseMongoEntity.js","sourceRoot":"","sources":["../../../src/models/RecoverableBaseMongoEntity.ts"],"names":[],"mappings":";;;;;;;;;AAAA,+EAA+E;AAC/E,wEAAwE;AACxE,+EAA+E;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,wCAAwC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE;;;;;;;GAOG;AACH,sGAAsG;AACtG,uFAAuF;AAGhF,IAAe,0BAA0B,GAAzC,MAAe,0BAA2B,SAAQ,qBAAqB;IAO1E,YAAY,KAA2C;QACnD,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,KAAK,EAAE,CAAC;YACR,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG;gBAChB,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;oBAC5D,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACjC,CAAC,CAAC,KAAK,CAAC,GAAG;gBACf,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB,CAAC;IACL,CAAC;CACJ,CAAA;AAbU;IADN,MAAM,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;;uDACZ;AALC,0BAA0B;IAF/C,KAAK,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;IACpG,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;;GAC9C,0BAA0B,CAkB/C"}
|
|
@@ -58,10 +58,12 @@ export class RepoUtils {
|
|
|
58
58
|
if (!this.repo) {
|
|
59
59
|
throw new Error(`Cannot initialize RepoUtils. No repository found for class ${this.modelClass.name}.`);
|
|
60
60
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
if (this.aclUtils?.enabled) {
|
|
62
|
+
let defaultAcl = this.getDefaultACL();
|
|
63
|
+
if (defaultAcl) {
|
|
64
|
+
this.defaultACLUid = defaultAcl.uid;
|
|
65
|
+
await this.aclUtils?.saveDefaultACL(defaultAcl);
|
|
66
|
+
}
|
|
65
67
|
}
|
|
66
68
|
// Does the model specify a MongoDB shard configuration?
|
|
67
69
|
const shardConfig = Reflect.getMetadata("rrst:shardConfig", this.modelClass);
|
|
@@ -102,15 +104,20 @@ export class RepoUtils {
|
|
|
102
104
|
}
|
|
103
105
|
let count = 0;
|
|
104
106
|
// Check user permissions
|
|
105
|
-
if (this.aclUtils && !options?.ignoreACL) {
|
|
107
|
+
if (this.aclUtils?.enabled && !options?.ignoreACL) {
|
|
106
108
|
if (!(await this.aclUtils.hasPermission(options?.user, this.defaultACLUid, ACLAction.READ))) {
|
|
107
109
|
throw new ApiError(ApiErrors.AUTH_PERMISSION_FAILURE, 403, ApiErrorMessages.AUTH_PERMISSION_FAILURE);
|
|
108
110
|
}
|
|
109
111
|
}
|
|
110
|
-
if (this.repo instanceof MongoRepository
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
if (this.repo instanceof MongoRepository) {
|
|
113
|
+
if (Array.isArray(query)) {
|
|
114
|
+
query.push({ $count: "count" });
|
|
115
|
+
const result = await this.repo.aggregate(query).next();
|
|
116
|
+
count = result ? result.count : count;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
count = await this.repo.count(query["$match"] ? query["$match"] : query);
|
|
120
|
+
}
|
|
114
121
|
}
|
|
115
122
|
else {
|
|
116
123
|
count = await this.repo.count(query);
|
|
@@ -129,7 +136,7 @@ export class RepoUtils {
|
|
|
129
136
|
throw new ApiError(ApiErrors.INTERNAL_ERROR, 500, ApiErrorMessages.INTERNAL_ERROR);
|
|
130
137
|
}
|
|
131
138
|
// Verify the user's permission to create objects
|
|
132
|
-
if (this.aclUtils &&
|
|
139
|
+
if (this.aclUtils?.enabled &&
|
|
133
140
|
!options?.ignoreACL &&
|
|
134
141
|
!(await this.aclUtils.hasPermission(options?.user, this.defaultACLUid, ACLAction.CREATE))) {
|
|
135
142
|
throw new ApiError(ApiErrors.AUTH_PERMISSION_FAILURE, 403, ApiErrorMessages.AUTH_PERMISSION_FAILURE);
|
|
@@ -141,15 +148,12 @@ export class RepoUtils {
|
|
|
141
148
|
const ids = [];
|
|
142
149
|
const idProps = ModelUtils.getIdPropertyNames(clazz);
|
|
143
150
|
for (const prop of idProps) {
|
|
144
|
-
// Skip `productUid` as it is considered a compound key
|
|
145
|
-
if (prop === "productUid")
|
|
146
|
-
continue;
|
|
147
151
|
const val = newObj[prop];
|
|
148
152
|
if (val) {
|
|
149
153
|
ids.push(val);
|
|
150
154
|
}
|
|
151
155
|
}
|
|
152
|
-
const query = ModelUtils.buildIdSearchQuery(this.repo, clazz, ids, undefined
|
|
156
|
+
const query = ModelUtils.buildIdSearchQuery(this.repo, clazz, ids, undefined);
|
|
153
157
|
const count = await this.repo.count(query);
|
|
154
158
|
if (!this.modelClass.trackChanges && count > 0) {
|
|
155
159
|
throw new ApiError(ApiErrors.IDENTIFIER_EXISTS, 400, ApiErrorMessages.IDENTIFIER_EXISTS);
|
|
@@ -173,7 +177,7 @@ export class RepoUtils {
|
|
|
173
177
|
const cacheKey = `${this.baseCacheKey}.${this.hashQuery(query)}`;
|
|
174
178
|
void this.cacheClient.setex(cacheKey, this.modelClass.cacheTTL, JSON.stringify(result));
|
|
175
179
|
}
|
|
176
|
-
if (this.aclUtils && this.modelClass.recordACL) {
|
|
180
|
+
if (this.aclUtils?.enabled && this.modelClass.recordACL) {
|
|
177
181
|
// If ACLs are enabled but no ACL was given create one
|
|
178
182
|
const acl = {
|
|
179
183
|
uid: result.uid,
|
|
@@ -194,7 +198,7 @@ export class RepoUtils {
|
|
|
194
198
|
full: false,
|
|
195
199
|
});
|
|
196
200
|
}
|
|
197
|
-
await this.aclUtils
|
|
201
|
+
await this.aclUtils.saveACL(acl);
|
|
198
202
|
}
|
|
199
203
|
if (!options?.skipPush) {
|
|
200
204
|
let channels = [result.uid].concat(options?.pushChannels || []);
|
|
@@ -206,7 +210,7 @@ export class RepoUtils {
|
|
|
206
210
|
if (!this.repo) {
|
|
207
211
|
throw new ApiError(ApiErrors.INTERNAL_ERROR, 500, ApiErrorMessages.INTERNAL_ERROR);
|
|
208
212
|
}
|
|
209
|
-
if (this.aclUtils && !options.ignoreACL) {
|
|
213
|
+
if (this.aclUtils?.enabled && !options.ignoreACL) {
|
|
210
214
|
const acl = await this.aclUtils.findACL(uid);
|
|
211
215
|
if (!(await this.aclUtils.hasPermission(options.user, acl ? acl : this.defaultACLUid, ACLAction.DELETE))) {
|
|
212
216
|
throw new ApiError(ApiErrors.AUTH_PERMISSION_FAILURE, 403, ApiErrorMessages.AUTH_PERMISSION_FAILURE);
|
|
@@ -214,7 +218,7 @@ export class RepoUtils {
|
|
|
214
218
|
}
|
|
215
219
|
const isRecoverable = this.instantiateObject({}) instanceof RecoverableBaseEntity;
|
|
216
220
|
const isPurge = isRecoverable ? options.purge || false : true;
|
|
217
|
-
const query = ModelUtils.buildIdSearchQuery(this.repo, this.modelClass, uid, options.version ? Number(options.version) : undefined
|
|
221
|
+
const query = ModelUtils.buildIdSearchQuery(this.repo, this.modelClass, uid, options.version ? Number(options.version) : undefined);
|
|
218
222
|
// If the object(s) are being permenantly removed from the database do so and then clear the accompanying
|
|
219
223
|
// ACL(s). If the class type is recoverable and purge isn't desired, simply mark the object(s) as deleted.
|
|
220
224
|
if (isPurge) {
|
|
@@ -224,7 +228,7 @@ export class RepoUtils {
|
|
|
224
228
|
else {
|
|
225
229
|
await this.repo.delete(query.where);
|
|
226
230
|
}
|
|
227
|
-
if (this.aclUtils && this.modelClass.recordACL) {
|
|
231
|
+
if (this.aclUtils?.enabled && this.modelClass.recordACL) {
|
|
228
232
|
await this.aclUtils.removeACL(uid);
|
|
229
233
|
}
|
|
230
234
|
}
|
|
@@ -251,7 +255,6 @@ export class RepoUtils {
|
|
|
251
255
|
let channels = [uid].concat(options?.pushChannels || []);
|
|
252
256
|
this.notificationUtils?.sendMessage(channels, this.modelClass.name, "delete", {
|
|
253
257
|
uid,
|
|
254
|
-
productUid: options.productUid,
|
|
255
258
|
version: options.version,
|
|
256
259
|
});
|
|
257
260
|
}
|
|
@@ -269,7 +272,7 @@ export class RepoUtils {
|
|
|
269
272
|
}
|
|
270
273
|
let results = [];
|
|
271
274
|
// Check user permissions
|
|
272
|
-
if (this.aclUtils && !options?.ignoreACL) {
|
|
275
|
+
if (this.aclUtils?.enabled && !options?.ignoreACL) {
|
|
273
276
|
if (!(await this.aclUtils.hasPermission(options?.user, this.defaultACLUid, ACLAction.READ))) {
|
|
274
277
|
throw new ApiError(ApiErrors.AUTH_PERMISSION_FAILURE, 403, ApiErrorMessages.AUTH_PERMISSION_FAILURE);
|
|
275
278
|
}
|
|
@@ -304,9 +307,20 @@ export class RepoUtils {
|
|
|
304
307
|
}
|
|
305
308
|
// If the query wasn't cached retrieve from the database
|
|
306
309
|
if (results.length === 0) {
|
|
307
|
-
if (this.repo instanceof MongoRepository
|
|
310
|
+
if (this.repo instanceof MongoRepository) {
|
|
308
311
|
const skip = page * limit;
|
|
309
|
-
|
|
312
|
+
if (Array.isArray(query)) {
|
|
313
|
+
results = await this.repo.aggregate(query).skip(skip).limit(limit).toArray();
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
results = await this.repo
|
|
317
|
+
.find(query["$match"] ? query["$match"] : query, {
|
|
318
|
+
limit,
|
|
319
|
+
skip,
|
|
320
|
+
sort: query["$sort"],
|
|
321
|
+
})
|
|
322
|
+
.toArray();
|
|
323
|
+
}
|
|
310
324
|
}
|
|
311
325
|
else {
|
|
312
326
|
results = await this.repo.find(query);
|
|
@@ -333,7 +347,7 @@ export class RepoUtils {
|
|
|
333
347
|
if (!this.repo) {
|
|
334
348
|
throw new ApiError(ApiErrors.INTERNAL_ERROR, 500, ApiErrorMessages.INTERNAL_ERROR);
|
|
335
349
|
}
|
|
336
|
-
const query = this.searchIdQuery(id, options?.version
|
|
350
|
+
const query = this.searchIdQuery(id, options?.version);
|
|
337
351
|
if (!options?.skipCache && this.cacheClient && this.modelClass.cacheTTL) {
|
|
338
352
|
// First attempt to retrieve the object from the cache
|
|
339
353
|
const json = await this.cacheClient.get(`${this.baseCacheKey}.${this.hashQuery(query)}`);
|
|
@@ -352,15 +366,9 @@ export class RepoUtils {
|
|
|
352
366
|
let existing = null;
|
|
353
367
|
if (this.repo instanceof MongoRepository) {
|
|
354
368
|
existing = await this.repo
|
|
355
|
-
.
|
|
356
|
-
{
|
|
357
|
-
|
|
358
|
-
},
|
|
359
|
-
{
|
|
360
|
-
$sort: { version: -1 },
|
|
361
|
-
},
|
|
362
|
-
])
|
|
363
|
-
.limit(1)
|
|
369
|
+
.find(query["$match"] ? query["$match"] : query, {
|
|
370
|
+
sort: { version: -1 },
|
|
371
|
+
})
|
|
364
372
|
.next();
|
|
365
373
|
}
|
|
366
374
|
else {
|
|
@@ -421,20 +429,15 @@ export class RepoUtils {
|
|
|
421
429
|
if (!clazz) {
|
|
422
430
|
clazz = this.getClassType(obj);
|
|
423
431
|
}
|
|
424
|
-
|
|
425
|
-
return this.objectFactory.newInstance(clazz, { initialize: false, args: [obj] });
|
|
426
|
-
}
|
|
427
|
-
else {
|
|
428
|
-
return new clazz(obj);
|
|
429
|
-
}
|
|
432
|
+
return new clazz(obj);
|
|
430
433
|
}
|
|
431
434
|
/**
|
|
432
435
|
* Search for existing object based on passed in id and version and product uid.
|
|
433
436
|
*
|
|
434
437
|
* The result of this function is compatible with all `Repository.find()` functions.
|
|
435
438
|
*/
|
|
436
|
-
searchIdQuery(id, version
|
|
437
|
-
return ModelUtils.buildIdSearchQuery(this.repo, this.modelClass, id, typeof version === "string" ? parseInt(version, 10) : version
|
|
439
|
+
searchIdQuery(id, version) {
|
|
440
|
+
return ModelUtils.buildIdSearchQuery(this.repo, this.modelClass, id, typeof version === "string" ? parseInt(version, 10) : version);
|
|
438
441
|
}
|
|
439
442
|
async truncate(query, options) {
|
|
440
443
|
if (!this.repo) {
|
|
@@ -442,7 +445,7 @@ export class RepoUtils {
|
|
|
442
445
|
}
|
|
443
446
|
// Check user permissions. Don't check if record-level ACLs are used as this will be done
|
|
444
447
|
// per record later.
|
|
445
|
-
if (this.aclUtils && !options.ignoreACL && !this.modelClass.recordACL) {
|
|
448
|
+
if (this.aclUtils?.enabled && !options.ignoreACL && !this.modelClass.recordACL) {
|
|
446
449
|
if (!(await this.aclUtils.hasPermission(options.user, this.defaultACLUid, ACLAction.DELETE))) {
|
|
447
450
|
throw new ApiError(ApiErrors.AUTH_PERMISSION_FAILURE, 403, ApiErrorMessages.AUTH_PERMISSION_FAILURE);
|
|
448
451
|
}
|
|
@@ -454,7 +457,7 @@ export class RepoUtils {
|
|
|
454
457
|
uids = await this.repo.distinct("uid", query[0].$match);
|
|
455
458
|
}
|
|
456
459
|
else {
|
|
457
|
-
uids = await this.repo.distinct("uid", query);
|
|
460
|
+
uids = await this.repo.distinct("uid", query["$match"] ? query["$match"] : query);
|
|
458
461
|
}
|
|
459
462
|
}
|
|
460
463
|
else {
|
|
@@ -465,10 +468,10 @@ export class RepoUtils {
|
|
|
465
468
|
// Check if this class uses record level ACLs. If so, we need to check the perms of
|
|
466
469
|
// each one. We will remove any from our list that the user does not have permission to
|
|
467
470
|
// delete.
|
|
468
|
-
if (this.modelClass.recordACL) {
|
|
471
|
+
if (this.aclUtils?.enabled && this.modelClass.recordACL) {
|
|
469
472
|
finalUids = [];
|
|
470
473
|
for (const uid of uids) {
|
|
471
|
-
if (
|
|
474
|
+
if (!options.ignoreACL) {
|
|
472
475
|
if (await this.aclUtils.hasPermission(options.user, uid, ACLAction.DELETE)) {
|
|
473
476
|
finalUids.push(uid);
|
|
474
477
|
}
|
|
@@ -488,7 +491,6 @@ export class RepoUtils {
|
|
|
488
491
|
const finalChannels = channels.concat([uid]);
|
|
489
492
|
this.notificationUtils?.sendMessage(finalChannels, this.modelClass.name, "delete", {
|
|
490
493
|
uid,
|
|
491
|
-
productUid: options.productUid,
|
|
492
494
|
version: options.version,
|
|
493
495
|
});
|
|
494
496
|
}
|
|
@@ -506,7 +508,7 @@ export class RepoUtils {
|
|
|
506
508
|
if (!this.repo) {
|
|
507
509
|
throw new ApiError(ApiErrors.INTERNAL_ERROR, 500, ApiErrorMessages.INTERNAL_ERROR);
|
|
508
510
|
}
|
|
509
|
-
if (this.aclUtils && !options?.ignoreACL) {
|
|
511
|
+
if (this.aclUtils?.enabled && !options?.ignoreACL) {
|
|
510
512
|
const acl = await this.aclUtils.findACL(existing.uid);
|
|
511
513
|
if (!(await this.aclUtils.hasPermission(options?.user, acl ? acl : this.defaultACLUid, ACLAction.UPDATE))) {
|
|
512
514
|
throw new ApiError(ApiErrors.AUTH_PERMISSION_FAILURE, 403, ApiErrorMessages.AUTH_PERMISSION_FAILURE);
|
|
@@ -527,7 +529,7 @@ export class RepoUtils {
|
|
|
527
529
|
obj._id = existing._id;
|
|
528
530
|
}
|
|
529
531
|
const keepPrevious = !!this.modelClass.trackChanges;
|
|
530
|
-
let query = this.searchIdQuery(existing.uid, options?.version || obj.version
|
|
532
|
+
let query = this.searchIdQuery(existing.uid, options?.version || obj.version);
|
|
531
533
|
let result = null;
|
|
532
534
|
if (this.repo instanceof MongoRepository) {
|
|
533
535
|
if (existing instanceof BaseEntity) {
|
|
@@ -603,17 +605,7 @@ export class RepoUtils {
|
|
|
603
605
|
query = this.searchIdQuery(existing.uid, obj instanceof BaseEntity ? obj.version + 1 : undefined);
|
|
604
606
|
if (!result) {
|
|
605
607
|
if (this.repo instanceof MongoRepository) {
|
|
606
|
-
result = await this.repo
|
|
607
|
-
.aggregate([
|
|
608
|
-
{
|
|
609
|
-
$match: query,
|
|
610
|
-
},
|
|
611
|
-
{
|
|
612
|
-
$sort: { version: -1 },
|
|
613
|
-
},
|
|
614
|
-
])
|
|
615
|
-
.limit(1)
|
|
616
|
-
.next();
|
|
608
|
+
result = await this.repo.findOne(query["$match"] ? query["$match"] : query);
|
|
617
609
|
}
|
|
618
610
|
else {
|
|
619
611
|
result = await this.repo.findOne(query);
|
|
@@ -656,7 +648,9 @@ export class RepoUtils {
|
|
|
656
648
|
if (clazz && clazz.datastore && obj[member]) {
|
|
657
649
|
// Attempt to grab the repository for this reference type
|
|
658
650
|
const conn = this.connectionManager?.connections.get(clazz.datastore);
|
|
659
|
-
const repo =
|
|
651
|
+
const repo = conn instanceof MongoConnection || isSqlDataSource(conn)
|
|
652
|
+
? conn.getRepository(clazz)
|
|
653
|
+
: undefined;
|
|
660
654
|
if (repo) {
|
|
661
655
|
// Check to see if there are any objects with this UID in the datastore. If the value is an array
|
|
662
656
|
// let's make sure that every uid is valid.
|