@nextage/nx-frame-be 1.0.1
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/README.md +1 -0
- package/README.md.old +45 -0
- package/build/app.d.ts +0 -0
- package/build/app.js +1 -0
- package/build/aws/aws-cluster-manager.d.ts +28 -0
- package/build/aws/aws-cluster-manager.js +105 -0
- package/build/aws/aws-email-manager.d.ts +24 -0
- package/build/aws/aws-email-manager.js +57 -0
- package/build/aws/aws-queue-manager.d.ts +37 -0
- package/build/aws/aws-queue-manager.js +100 -0
- package/build/aws/aws.interfaces.d.ts +39 -0
- package/build/aws/aws.interfaces.js +2 -0
- package/build/aws/index.d.ts +4 -0
- package/build/aws/index.js +20 -0
- package/build/common/base/__test__/base.model.test.d.ts +1 -0
- package/build/common/base/__test__/base.model.test.js +283 -0
- package/build/common/base/base.controller.d.ts +124 -0
- package/build/common/base/base.controller.js +134 -0
- package/build/common/base/base.interfaces.d.ts +81 -0
- package/build/common/base/base.interfaces.js +2 -0
- package/build/common/base/base.model.d.ts +384 -0
- package/build/common/base/base.model.js +730 -0
- package/build/common/base/folded.model.d.ts +41 -0
- package/build/common/base/folded.model.js +215 -0
- package/build/common/base/mongo-utils.d.ts +122 -0
- package/build/common/base/mongo-utils.js +242 -0
- package/build/common/base/mongo.types.d.ts +20 -0
- package/build/common/base/mongo.types.js +2 -0
- package/build/common/base/sql-utils.d.ts +20 -0
- package/build/common/base/sql-utils.js +69 -0
- package/build/common/constants.d.ts +27 -0
- package/build/common/constants.js +70 -0
- package/build/common/crypto/crypto.classes.d.ts +100 -0
- package/build/common/crypto/crypto.classes.js +146 -0
- package/build/common/crypto/crypto.constants.d.ts +68 -0
- package/build/common/crypto/crypto.constants.js +57 -0
- package/build/common/crypto/crypto.error.d.ts +4 -0
- package/build/common/crypto/crypto.error.js +10 -0
- package/build/common/crypto/crypto.interfaces.d.ts +46 -0
- package/build/common/crypto/crypto.interfaces.js +2 -0
- package/build/common/crypto/crypto.utils.d.ts +139 -0
- package/build/common/crypto/crypto.utils.js +380 -0
- package/build/common/crypto/index.d.ts +3 -0
- package/build/common/crypto/index.js +19 -0
- package/build/common/enums.d.ts +61 -0
- package/build/common/enums.js +75 -0
- package/build/common/errors.d.ts +13 -0
- package/build/common/errors.js +24 -0
- package/build/common/express/express.interfaces.d.ts +20 -0
- package/build/common/express/express.interfaces.js +2 -0
- package/build/common/express/express.utils.d.ts +31 -0
- package/build/common/express/express.utils.js +85 -0
- package/build/common/express/index.d.ts +2 -0
- package/build/common/express/index.js +18 -0
- package/build/common/graphql/__test__/generator.schema.test.d.ts +1 -0
- package/build/common/graphql/__test__/generator.schema.test.js +391 -0
- package/build/common/graphql/directives.d.ts +18 -0
- package/build/common/graphql/directives.js +56 -0
- package/build/common/graphql/generator copy.d.ts +41 -0
- package/build/common/graphql/generator copy.js +385 -0
- package/build/common/graphql/generator.d.ts +42 -0
- package/build/common/graphql/generator.js +385 -0
- package/build/common/graphql/index.d.ts +4 -0
- package/build/common/graphql/index.js +21 -0
- package/build/common/graphql/interfaces.d.ts +67 -0
- package/build/common/graphql/interfaces.js +2 -0
- package/build/common/graphql/loader.d.ts +22 -0
- package/build/common/graphql/loader.js +186 -0
- package/build/common/graphql/scalars/index.d.ts +10 -0
- package/build/common/graphql/scalars/index.js +6 -0
- package/build/common/graphql/scalars/resolvers.d.ts +8 -0
- package/build/common/graphql/scalars/resolvers.js +71 -0
- package/build/common/graphql/scalars/schema.d.ts +1 -0
- package/build/common/graphql/scalars/schema.js +12 -0
- package/build/common/graphql/types/index.d.ts +3 -0
- package/build/common/graphql/types/index.js +6 -0
- package/build/common/graphql/types/schema.d.ts +1 -0
- package/build/common/graphql/types/schema.js +98 -0
- package/build/common/graphql/utils.d.ts +18 -0
- package/build/common/graphql/utils.js +40 -0
- package/build/common/grid-fs/gridfs-base.model.d.ts +53 -0
- package/build/common/grid-fs/gridfs-base.model.js +95 -0
- package/build/common/grid-fs/gridfs.interfaces.d.ts +41 -0
- package/build/common/grid-fs/gridfs.interfaces.js +2 -0
- package/build/common/index.d.ts +10 -0
- package/build/common/index.js +32 -0
- package/build/common/interfaces.d.ts +26 -0
- package/build/common/interfaces.js +10 -0
- package/build/common/manager/bulk-manager.d.ts +59 -0
- package/build/common/manager/bulk-manager.js +103 -0
- package/build/common/manager/crypto-manager.d.ts +88 -0
- package/build/common/manager/crypto-manager.js +200 -0
- package/build/common/manager/index.d.ts +5 -0
- package/build/common/manager/index.js +21 -0
- package/build/common/manager/pubsub-manager.d.ts +20 -0
- package/build/common/manager/pubsub-manager.js +38 -0
- package/build/common/manager/shutdown-manager.d.ts +27 -0
- package/build/common/manager/shutdown-manager.js +118 -0
- package/build/common/manager/socket-io-cli-manager.d.ts +53 -0
- package/build/common/manager/socket-io-cli-manager.js +91 -0
- package/build/common/manager/tunnel-manager.d.ts +28 -0
- package/build/common/manager/tunnel-manager.js +49 -0
- package/build/common/models/coded-entity.controller.d.ts +5 -0
- package/build/common/models/coded-entity.controller.js +9 -0
- package/build/common/models/coded-entity.model.d.ts +25 -0
- package/build/common/models/coded-entity.model.js +51 -0
- package/build/common/models/user.model.d.ts +56 -0
- package/build/common/models/user.model.js +72 -0
- package/build/common/types.d.ts +136 -0
- package/build/common/types.js +16 -0
- package/build/common/utils.d.ts +552 -0
- package/build/common/utils.js +1100 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +18 -0
- package/build/test/env.d.ts +0 -0
- package/build/test/env.js +5 -0
- package/build/test/setup.d.ts +6 -0
- package/build/test/setup.js +59 -0
- package/package.json +90 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const utils_1 = require("../../utils");
|
|
13
|
+
const coded_entity_model_1 = require("../../models/coded-entity.model");
|
|
14
|
+
// interface CodedEntityAttrs {
|
|
15
|
+
// id? : string;
|
|
16
|
+
// code? : string;
|
|
17
|
+
// name? : string;
|
|
18
|
+
// data? : { items: NxObject[] };
|
|
19
|
+
// version?: number;
|
|
20
|
+
// }
|
|
21
|
+
// interface CodedEntityDoc extends BaseMongoDoc {
|
|
22
|
+
// code : string;
|
|
23
|
+
// name : string;
|
|
24
|
+
// data : { items: NxObject[] };
|
|
25
|
+
// version: number;
|
|
26
|
+
// }
|
|
27
|
+
// interface CodedEntityModel extends BaseMongoModel<CodedEntityAttrs, CodedEntityDoc> {}
|
|
28
|
+
// class CodedEntity extends BaseModel<CodedEntityAttrs, CodedEntityDoc, CodedEntityModel> {}
|
|
29
|
+
// mock spy function
|
|
30
|
+
jest.spyOn(coded_entity_model_1.CodedEntity.prototype, 'beforeCreate').mockImplementation((item, {}) => Promise.resolve(item));
|
|
31
|
+
jest.spyOn(coded_entity_model_1.CodedEntity.prototype, 'afterCreate').mockImplementation((ceItem, {}) => Promise.resolve(ceItem));
|
|
32
|
+
jest.spyOn(coded_entity_model_1.CodedEntity.prototype, 'beforeUpdate').mockImplementation((item, {}) => Promise.resolve(item));
|
|
33
|
+
jest.spyOn(coded_entity_model_1.CodedEntity.prototype, 'afterUpdate').mockImplementation((ceItem, {}) => Promise.resolve(ceItem));
|
|
34
|
+
jest.spyOn(coded_entity_model_1.CodedEntity.prototype, 'beforeCopy').mockImplementation((item, {}) => Promise.resolve(item));
|
|
35
|
+
jest.spyOn(coded_entity_model_1.CodedEntity.prototype, 'afterCopy').mockImplementation((item, {}) => Promise.resolve(item));
|
|
36
|
+
jest.spyOn(coded_entity_model_1.CodedEntity.prototype, 'beforeRemove').mockImplementation((id, {}) => Promise.resolve(id));
|
|
37
|
+
jest.spyOn(coded_entity_model_1.CodedEntity.prototype, 'afterRemove').mockImplementation((id, {}) => Promise.resolve(id));
|
|
38
|
+
jest.spyOn(coded_entity_model_1.CodedEntity.prototype, 'publishCRUDEvent').mockImplementation((evt) => { });
|
|
39
|
+
// let ceModel: CodedEntity | null;
|
|
40
|
+
// beforeAll(async () => {
|
|
41
|
+
// const schema = {
|
|
42
|
+
// code: {
|
|
43
|
+
// type: String,
|
|
44
|
+
// required: true,
|
|
45
|
+
// },
|
|
46
|
+
// name: {
|
|
47
|
+
// type: String,
|
|
48
|
+
// required: true,
|
|
49
|
+
// },
|
|
50
|
+
// data: {
|
|
51
|
+
// type: mongoose.SchemaTypes.Mixed,
|
|
52
|
+
// required: true,
|
|
53
|
+
// }
|
|
54
|
+
// };
|
|
55
|
+
// const params = {
|
|
56
|
+
// name : 'CodedEntity',
|
|
57
|
+
// modelName : 'CodedEntity',
|
|
58
|
+
// collection: 'codedEntity',
|
|
59
|
+
// classDef : CodedEntity,
|
|
60
|
+
// mergeSchema: false,
|
|
61
|
+
// modelParams: { sort: { name: 1 }, CRUDEvents: true },
|
|
62
|
+
// schema
|
|
63
|
+
// };
|
|
64
|
+
// ceModel = createModel<CodedEntityAttrs, CodedEntityDoc, CodedEntityModel, CodedEntity>(params, false);
|
|
65
|
+
// });
|
|
66
|
+
const createItem = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
67
|
+
const item = {
|
|
68
|
+
code: (0, utils_1.uuid)(),
|
|
69
|
+
name: 'Test',
|
|
70
|
+
data: {
|
|
71
|
+
items: [
|
|
72
|
+
{ id: (0, utils_1.uuid)(), value: Math.random() },
|
|
73
|
+
{ id: (0, utils_1.uuid)(), value: Math.random() },
|
|
74
|
+
{ id: (0, utils_1.uuid)(), value: Math.random() }
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
const ceItem = yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.create(item, {}));
|
|
79
|
+
return { ceItem, item };
|
|
80
|
+
});
|
|
81
|
+
it('list collection Items', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
82
|
+
const { ceItem: ce1 } = yield createItem();
|
|
83
|
+
const { ceItem: ce2 } = yield createItem();
|
|
84
|
+
const { ceItem: ce3 } = yield createItem();
|
|
85
|
+
const items = (yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.list())) || [];
|
|
86
|
+
expect(items.length).toEqual(3);
|
|
87
|
+
expect(items[0].code).toEqual(ce1 === null || ce1 === void 0 ? void 0 : ce1.code);
|
|
88
|
+
expect(items[1].code).toEqual(ce2 === null || ce2 === void 0 ? void 0 : ce2.code);
|
|
89
|
+
expect(items[2].code).toEqual(ce3 === null || ce3 === void 0 ? void 0 : ce3.code);
|
|
90
|
+
}));
|
|
91
|
+
it('counts collection Items', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
92
|
+
yield createItem();
|
|
93
|
+
yield createItem();
|
|
94
|
+
yield createItem();
|
|
95
|
+
yield createItem();
|
|
96
|
+
const count = yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.count());
|
|
97
|
+
expect(count).toEqual(4);
|
|
98
|
+
}));
|
|
99
|
+
it('gets collection item by id', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
100
|
+
const { ceItem: ce1 } = yield createItem();
|
|
101
|
+
const { ceItem: ce2 } = yield createItem();
|
|
102
|
+
const { ceItem: ce3 } = yield createItem();
|
|
103
|
+
const foundItem = yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.get(ce2 === null || ce2 === void 0 ? void 0 : ce2.id));
|
|
104
|
+
expect(foundItem.code).toEqual(ce2 === null || ce2 === void 0 ? void 0 : ce2.code);
|
|
105
|
+
}));
|
|
106
|
+
it('finds collection item by code', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
107
|
+
const { ceItem: ce1 } = yield createItem();
|
|
108
|
+
const { ceItem: ce2 } = yield createItem();
|
|
109
|
+
const { ceItem: ce3 } = yield createItem();
|
|
110
|
+
const foundItem = yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.findOne({ code: ce2 === null || ce2 === void 0 ? void 0 : ce2.code }));
|
|
111
|
+
expect(foundItem.code).toEqual(ce2 === null || ce2 === void 0 ? void 0 : ce2.code);
|
|
112
|
+
}));
|
|
113
|
+
it('creates a new item', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
114
|
+
const { ceItem, item } = yield createItem();
|
|
115
|
+
expect(coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.beforeCreate).toHaveBeenCalled();
|
|
116
|
+
expect(coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.afterCreate).toHaveBeenCalled();
|
|
117
|
+
expect(coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.publishCRUDEvent).toHaveBeenCalled();
|
|
118
|
+
expect(ceItem.code).toEqual(item.code);
|
|
119
|
+
expect(ceItem.name).toEqual(item.name);
|
|
120
|
+
}));
|
|
121
|
+
it('updates item attribute', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
122
|
+
const { ceItem } = yield createItem();
|
|
123
|
+
const newAttrs = { name: 'UPDATED' };
|
|
124
|
+
const savedItem = yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.update(ceItem.id, newAttrs, {}));
|
|
125
|
+
expect(coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.beforeUpdate).toHaveBeenCalled();
|
|
126
|
+
expect(coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.afterUpdate).toHaveBeenCalled();
|
|
127
|
+
expect(coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.publishCRUDEvent).toHaveBeenCalled();
|
|
128
|
+
expect(savedItem.code).toEqual(ceItem.code);
|
|
129
|
+
expect(savedItem.version).toEqual(ceItem.version + 1);
|
|
130
|
+
expect(savedItem.name).toEqual(newAttrs.name);
|
|
131
|
+
}));
|
|
132
|
+
it('copies an item', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
133
|
+
const { ceItem } = yield createItem();
|
|
134
|
+
const newAttrs = { name: `${ceItem.name}_updated` };
|
|
135
|
+
const savedItem = yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.copy(ceItem.id, newAttrs, {}));
|
|
136
|
+
expect(coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.beforeCopy).toHaveBeenCalled();
|
|
137
|
+
expect(coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.afterCopy).toHaveBeenCalled();
|
|
138
|
+
expect(coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.publishCRUDEvent).toHaveBeenCalled();
|
|
139
|
+
expect(savedItem.id).not.toEqual(ceItem.id);
|
|
140
|
+
expect(savedItem.code).toEqual(ceItem.code);
|
|
141
|
+
expect(savedItem.name).not.toEqual(ceItem.name);
|
|
142
|
+
expect(savedItem.name).toEqual(newAttrs.name);
|
|
143
|
+
expect(savedItem.version).toEqual(ceItem.version);
|
|
144
|
+
const ceList = yield coded_entity_model_1.ceModel.list();
|
|
145
|
+
expect(ceList.length).toEqual(2);
|
|
146
|
+
expect(ceList[0].id).toEqual(ceItem.id);
|
|
147
|
+
expect(ceList[1].id).toContain(savedItem === null || savedItem === void 0 ? void 0 : savedItem.id);
|
|
148
|
+
}));
|
|
149
|
+
it('removes item', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
150
|
+
const { ceItem: ce1 } = yield createItem();
|
|
151
|
+
const { ceItem: ce2 } = yield createItem();
|
|
152
|
+
const { ceItem: ce3 } = yield createItem();
|
|
153
|
+
let foundItem = yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.get(ce2 === null || ce2 === void 0 ? void 0 : ce2.id));
|
|
154
|
+
expect(foundItem.code).toEqual(ce2 === null || ce2 === void 0 ? void 0 : ce2.code);
|
|
155
|
+
yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.remove(ce2 === null || ce2 === void 0 ? void 0 : ce2.id, {}));
|
|
156
|
+
expect(coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.beforeRemove).toHaveBeenCalled();
|
|
157
|
+
expect(coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.afterRemove).toHaveBeenCalled();
|
|
158
|
+
expect(coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.publishCRUDEvent).toHaveBeenCalled();
|
|
159
|
+
foundItem = yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.get(ce2 === null || ce2 === void 0 ? void 0 : ce2.id));
|
|
160
|
+
const items = (yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.list())) || [];
|
|
161
|
+
expect(foundItem).toBeNull();
|
|
162
|
+
expect(items.length).toEqual(2);
|
|
163
|
+
expect(items.map(i => i.code)).not.toContainEqual(ce2.code);
|
|
164
|
+
}));
|
|
165
|
+
it('inserts bulk items', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
166
|
+
var _a, _b, _c, _d, _e, _f;
|
|
167
|
+
const items = [
|
|
168
|
+
{ code: (0, utils_1.uuid)(), name: 'Test 1', data: { items: [] } },
|
|
169
|
+
{ code: (0, utils_1.uuid)(), name: 'Test 2', data: { items: [] } },
|
|
170
|
+
{ code: (0, utils_1.uuid)(), name: 'Test 3', data: { items: [] } }
|
|
171
|
+
];
|
|
172
|
+
const createdItems = (yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.bulkCreate(items, {}))) || [];
|
|
173
|
+
const foundtems = (yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.list())) || [];
|
|
174
|
+
expect(createdItems.length).toEqual(3);
|
|
175
|
+
expect(foundtems.length).toEqual(3);
|
|
176
|
+
expect((_a = items[0]) === null || _a === void 0 ? void 0 : _a.code).toEqual(foundtems[0].code);
|
|
177
|
+
expect((_b = items[1]) === null || _b === void 0 ? void 0 : _b.code).toEqual(foundtems[1].code);
|
|
178
|
+
expect((_c = items[2]) === null || _c === void 0 ? void 0 : _c.code).toEqual(foundtems[2].code);
|
|
179
|
+
expect((_d = createdItems[0]) === null || _d === void 0 ? void 0 : _d.id).toEqual(foundtems[0].id);
|
|
180
|
+
expect((_e = createdItems[1]) === null || _e === void 0 ? void 0 : _e.id).toEqual(foundtems[1].id);
|
|
181
|
+
expect((_f = createdItems[2]) === null || _f === void 0 ? void 0 : _f.id).toEqual(foundtems[2].id);
|
|
182
|
+
}));
|
|
183
|
+
it('updates bulk items', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
184
|
+
const { ceItem: ce1 } = yield createItem();
|
|
185
|
+
const { ceItem: ce2 } = yield createItem();
|
|
186
|
+
const { ceItem: ce3 } = yield createItem();
|
|
187
|
+
const updatedName1 = `${ce1 === null || ce1 === void 0 ? void 0 : ce1.name} updated`;
|
|
188
|
+
const updatedName2 = `${ce2 === null || ce2 === void 0 ? void 0 : ce2.name} updated`;
|
|
189
|
+
const updatedName3 = `${ce3 === null || ce3 === void 0 ? void 0 : ce3.name} updated`;
|
|
190
|
+
const updatedItems = (yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.bulkUpdate([ce1 === null || ce1 === void 0 ? void 0 : ce1.id, ce3 === null || ce3 === void 0 ? void 0 : ce3.id], [{ name: updatedName1 }, { name: updatedName3 }], {}))) || [];
|
|
191
|
+
const foundtems = (yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.list({}, {}, { sort: { _id: 1 } }))) || [];
|
|
192
|
+
expect(updatedItems.length).toEqual(2);
|
|
193
|
+
expect(foundtems.length).toEqual(3);
|
|
194
|
+
expect(ce1 === null || ce1 === void 0 ? void 0 : ce1.code).toEqual(foundtems[0].code);
|
|
195
|
+
expect(ce2 === null || ce2 === void 0 ? void 0 : ce2.code).toEqual(foundtems[1].code);
|
|
196
|
+
expect(ce3 === null || ce3 === void 0 ? void 0 : ce3.code).toEqual(foundtems[2].code);
|
|
197
|
+
expect(foundtems[0].name).toEqual(updatedName1);
|
|
198
|
+
expect(foundtems[1].name).toEqual(ce2 === null || ce2 === void 0 ? void 0 : ce2.name);
|
|
199
|
+
expect(foundtems[2].name).toEqual(updatedName3);
|
|
200
|
+
expect(foundtems[0].version).toEqual(ce1.version + 1);
|
|
201
|
+
expect(foundtems[1].version).toEqual(ce2.version);
|
|
202
|
+
expect(foundtems[2].version).toEqual(ce3.version + 1);
|
|
203
|
+
}));
|
|
204
|
+
it('adds an array item', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
205
|
+
var _g, _h, _j, _k;
|
|
206
|
+
const { ceItem: ce1 } = yield createItem();
|
|
207
|
+
const updateData = {
|
|
208
|
+
arrayPath: 'data.items',
|
|
209
|
+
item: { id: (0, utils_1.uuid)(), value: 100 }
|
|
210
|
+
};
|
|
211
|
+
const updatedItem = yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.addArrayItem(ce1 === null || ce1 === void 0 ? void 0 : ce1.id, updateData, {}, {}));
|
|
212
|
+
const itemsLength = ((_h = (_g = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _g === void 0 ? void 0 : _g.items) === null || _h === void 0 ? void 0 : _h.length) || 0;
|
|
213
|
+
expect(itemsLength).toEqual(((ce1 === null || ce1 === void 0 ? void 0 : ce1.data.items) || []).length + 1);
|
|
214
|
+
expect((_j = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _j === void 0 ? void 0 : _j.items[itemsLength - 1].id).toEqual(updateData.item.id);
|
|
215
|
+
expect((_k = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _k === void 0 ? void 0 : _k.items[itemsLength - 1].value).toEqual(updateData.item.value);
|
|
216
|
+
}));
|
|
217
|
+
it('updates an array item', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
218
|
+
var _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1;
|
|
219
|
+
const { ceItem: ce1 } = yield createItem();
|
|
220
|
+
const updateData = {
|
|
221
|
+
arrayPath: 'data.items',
|
|
222
|
+
arrayFilter: { id: ce1 === null || ce1 === void 0 ? void 0 : ce1.data.items[1].id },
|
|
223
|
+
item: { id: ce1 === null || ce1 === void 0 ? void 0 : ce1.data.items[1].id, value: 50, newattr: 'AAA' }
|
|
224
|
+
};
|
|
225
|
+
let updatedItem = yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.updateArrayItem(ce1 === null || ce1 === void 0 ? void 0 : ce1.id, updateData, {}, {}));
|
|
226
|
+
let itemsLength = ((_m = (_l = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _l === void 0 ? void 0 : _l.items) === null || _m === void 0 ? void 0 : _m.length) || 0;
|
|
227
|
+
expect(itemsLength).toEqual(((ce1 === null || ce1 === void 0 ? void 0 : ce1.data.items) || []).length);
|
|
228
|
+
expect((_o = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _o === void 0 ? void 0 : _o.items[1].id).toEqual(ce1 === null || ce1 === void 0 ? void 0 : ce1.data.items[1].id);
|
|
229
|
+
expect((_p = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _p === void 0 ? void 0 : _p.items[1].id).toEqual(updateData.item.id);
|
|
230
|
+
expect((_q = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _q === void 0 ? void 0 : _q.items[1].value).toEqual(updateData.item.value);
|
|
231
|
+
expect((_r = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _r === void 0 ? void 0 : _r.items[1].newattr).toEqual(updateData.item.newattr);
|
|
232
|
+
const updateData2 = {
|
|
233
|
+
arrayPath: 'data.items',
|
|
234
|
+
partial: true,
|
|
235
|
+
arrayFilter: { id: ce1 === null || ce1 === void 0 ? void 0 : ce1.data.items[1].id },
|
|
236
|
+
item: { value: 51, newattr: 'AAA' }
|
|
237
|
+
};
|
|
238
|
+
updatedItem = yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.updateArrayItem(ce1 === null || ce1 === void 0 ? void 0 : ce1.id, updateData2, {}, {}));
|
|
239
|
+
itemsLength = ((_t = (_s = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _s === void 0 ? void 0 : _s.items) === null || _t === void 0 ? void 0 : _t.length) || 0;
|
|
240
|
+
expect(itemsLength).toEqual(((ce1 === null || ce1 === void 0 ? void 0 : ce1.data.items) || []).length);
|
|
241
|
+
expect((_u = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _u === void 0 ? void 0 : _u.items[1].id).toEqual(ce1 === null || ce1 === void 0 ? void 0 : ce1.data.items[1].id);
|
|
242
|
+
expect((_v = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _v === void 0 ? void 0 : _v.items[1].value).toEqual(updateData2.item.value);
|
|
243
|
+
expect((_w = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _w === void 0 ? void 0 : _w.items[1].newattr).toEqual(updateData2.item.newattr);
|
|
244
|
+
const updateData3 = {
|
|
245
|
+
arrayPath: 'data.items',
|
|
246
|
+
updateAttr: 'newattr',
|
|
247
|
+
arrayFilter: { id: ce1 === null || ce1 === void 0 ? void 0 : ce1.data.items[1].id },
|
|
248
|
+
item: { value: 55, newattr: 'BBB' }
|
|
249
|
+
};
|
|
250
|
+
updatedItem = yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.updateArrayItem(ce1 === null || ce1 === void 0 ? void 0 : ce1.id, updateData3, {}, {}));
|
|
251
|
+
itemsLength = ((_y = (_x = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _x === void 0 ? void 0 : _x.items) === null || _y === void 0 ? void 0 : _y.length) || 0;
|
|
252
|
+
expect(itemsLength).toEqual(((ce1 === null || ce1 === void 0 ? void 0 : ce1.data.items) || []).length);
|
|
253
|
+
expect((_z = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _z === void 0 ? void 0 : _z.items[1].id).toEqual(ce1 === null || ce1 === void 0 ? void 0 : ce1.data.items[1].id);
|
|
254
|
+
expect((_0 = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _0 === void 0 ? void 0 : _0.items[1].value).toEqual(updateData2.item.value);
|
|
255
|
+
expect((_1 = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _1 === void 0 ? void 0 : _1.items[1].newattr).toEqual(updateData3.item.newattr);
|
|
256
|
+
}));
|
|
257
|
+
it('removes an array item', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
258
|
+
var _2, _3, _4, _5, _6;
|
|
259
|
+
const { ceItem: ce1 } = yield createItem();
|
|
260
|
+
const updateData = {
|
|
261
|
+
arrayPath: 'data.items',
|
|
262
|
+
item: (0, utils_1.clone)(ce1 === null || ce1 === void 0 ? void 0 : ce1.data.items[1])
|
|
263
|
+
};
|
|
264
|
+
let updatedItem = yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.removeArrayItem(ce1 === null || ce1 === void 0 ? void 0 : ce1.id, updateData, {}, {}));
|
|
265
|
+
let itemsLength = ((_3 = (_2 = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _2 === void 0 ? void 0 : _2.items) === null || _3 === void 0 ? void 0 : _3.length) || 0;
|
|
266
|
+
expect(itemsLength).toEqual(((ce1 === null || ce1 === void 0 ? void 0 : ce1.data.items) || []).length - 1);
|
|
267
|
+
expect((_4 = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _4 === void 0 ? void 0 : _4.items[1].id).not.toEqual(ce1 === null || ce1 === void 0 ? void 0 : ce1.data.items[1].id);
|
|
268
|
+
expect((_5 = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _5 === void 0 ? void 0 : _5.items[1].id).toEqual(ce1 === null || ce1 === void 0 ? void 0 : ce1.data.items[2].id);
|
|
269
|
+
(_6 = updatedItem === null || updatedItem === void 0 ? void 0 : updatedItem.data) === null || _6 === void 0 ? void 0 : _6.items.forEach(di => {
|
|
270
|
+
expect(di.id).not.toEqual(ce1 === null || ce1 === void 0 ? void 0 : ce1.data.items[1].id);
|
|
271
|
+
});
|
|
272
|
+
}));
|
|
273
|
+
it('runs aggregation', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
274
|
+
const count = 4;
|
|
275
|
+
for (let i = 0; i < count; i++)
|
|
276
|
+
yield createItem();
|
|
277
|
+
const pipeline = [
|
|
278
|
+
{ $group: { _id: null, count: { $sum: 1 } } }
|
|
279
|
+
];
|
|
280
|
+
const data = (yield (coded_entity_model_1.ceModel === null || coded_entity_model_1.ceModel === void 0 ? void 0 : coded_entity_model_1.ceModel.aggregate(pipeline))) || [];
|
|
281
|
+
expect(data.length).toEqual(1);
|
|
282
|
+
expect(data[0].count).toEqual(count);
|
|
283
|
+
}));
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/// <reference types="mongoose/types/aggregate" />
|
|
2
|
+
/// <reference types="mongoose/types/callback" />
|
|
3
|
+
/// <reference types="mongoose/types/collection" />
|
|
4
|
+
/// <reference types="mongoose/types/connection" />
|
|
5
|
+
/// <reference types="mongoose/types/cursor" />
|
|
6
|
+
/// <reference types="mongoose/types/document" />
|
|
7
|
+
/// <reference types="mongoose/types/error" />
|
|
8
|
+
/// <reference types="mongoose/types/expressions" />
|
|
9
|
+
/// <reference types="mongoose/types/helpers" />
|
|
10
|
+
/// <reference types="mongoose/types/middlewares" />
|
|
11
|
+
/// <reference types="mongoose/types/indexes" />
|
|
12
|
+
/// <reference types="mongoose/types/models" />
|
|
13
|
+
/// <reference types="mongoose/types/mongooseoptions" />
|
|
14
|
+
/// <reference types="mongoose/types/pipelinestage" />
|
|
15
|
+
/// <reference types="mongoose/types/populate" />
|
|
16
|
+
/// <reference types="mongoose/types/query" />
|
|
17
|
+
/// <reference types="mongoose/types/schemaoptions" />
|
|
18
|
+
/// <reference types="mongoose/types/schematypes" />
|
|
19
|
+
/// <reference types="mongoose/types/session" />
|
|
20
|
+
/// <reference types="mongoose/types/types" />
|
|
21
|
+
/// <reference types="mongoose/types/utility" />
|
|
22
|
+
/// <reference types="mongoose/types/validation" />
|
|
23
|
+
/// <reference types="mongoose/types/virtuals" />
|
|
24
|
+
/// <reference types="mongoose/types/inferschematype" />
|
|
25
|
+
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
26
|
+
import mongoose from 'mongoose';
|
|
27
|
+
import { NxContext, NxObject } from '../interfaces';
|
|
28
|
+
import { BaseModel } from './base.model';
|
|
29
|
+
import { ArrayItemParams, BaseMongoDoc } from './base.interfaces';
|
|
30
|
+
import { FilterParams, QueryPagination } from './base.interfaces';
|
|
31
|
+
export declare abstract class BaseController<TAttrs, TDoc extends BaseMongoDoc, T extends BaseModel<TAttrs, TDoc, any>> {
|
|
32
|
+
model: T;
|
|
33
|
+
constructor({ model }: {
|
|
34
|
+
model: T;
|
|
35
|
+
});
|
|
36
|
+
get collectionName(): string | null;
|
|
37
|
+
/**
|
|
38
|
+
*
|
|
39
|
+
* @param params
|
|
40
|
+
* @param context
|
|
41
|
+
* @returns
|
|
42
|
+
*/
|
|
43
|
+
count(params: FilterParams, context?: NxContext): Promise<number>;
|
|
44
|
+
/**
|
|
45
|
+
*
|
|
46
|
+
* @param params
|
|
47
|
+
* @param fields
|
|
48
|
+
* @param pagination
|
|
49
|
+
* @param context
|
|
50
|
+
* @returns
|
|
51
|
+
*/
|
|
52
|
+
list(params?: FilterParams, fields?: NxObject, pagination?: QueryPagination, context?: NxContext): Promise<TDoc[]>;
|
|
53
|
+
/**
|
|
54
|
+
*
|
|
55
|
+
* @param id
|
|
56
|
+
* @param context
|
|
57
|
+
* @returns
|
|
58
|
+
*/
|
|
59
|
+
get(id: string, context?: NxContext): Promise<TDoc | null>;
|
|
60
|
+
/**
|
|
61
|
+
*
|
|
62
|
+
* @param params
|
|
63
|
+
* @param context
|
|
64
|
+
* @returns
|
|
65
|
+
*/
|
|
66
|
+
findOne(params: FilterParams, context?: NxContext): Promise<TDoc | null>;
|
|
67
|
+
/**
|
|
68
|
+
*
|
|
69
|
+
* @param item
|
|
70
|
+
* @param context
|
|
71
|
+
* @returns
|
|
72
|
+
*/
|
|
73
|
+
create(item: TAttrs, context: NxContext): Promise<TDoc>;
|
|
74
|
+
/**
|
|
75
|
+
*
|
|
76
|
+
* @param id
|
|
77
|
+
* @param item
|
|
78
|
+
* @param context
|
|
79
|
+
* @returns
|
|
80
|
+
*/
|
|
81
|
+
update(id: string, item: TAttrs, context: NxContext): Promise<TDoc>;
|
|
82
|
+
/**
|
|
83
|
+
*
|
|
84
|
+
* @param id
|
|
85
|
+
* @param context
|
|
86
|
+
* @returns
|
|
87
|
+
*/
|
|
88
|
+
remove(id: string, context: NxContext): Promise<TDoc>;
|
|
89
|
+
/**
|
|
90
|
+
*
|
|
91
|
+
* @param id
|
|
92
|
+
* @param item
|
|
93
|
+
* @param context
|
|
94
|
+
* @returns
|
|
95
|
+
*/
|
|
96
|
+
copy(id: string, item: TAttrs, context: NxContext): Promise<TDoc | null>;
|
|
97
|
+
/**
|
|
98
|
+
*
|
|
99
|
+
* @param id
|
|
100
|
+
* @param params
|
|
101
|
+
* @param options
|
|
102
|
+
* @param context
|
|
103
|
+
* @returns
|
|
104
|
+
*/
|
|
105
|
+
addArrayItem(id: string, params: ArrayItemParams, options: mongoose.QueryOptions<Document> | undefined, context: NxContext): Promise<TDoc | null>;
|
|
106
|
+
/**
|
|
107
|
+
*
|
|
108
|
+
* @param id
|
|
109
|
+
* @param params
|
|
110
|
+
* @param options
|
|
111
|
+
* @param context
|
|
112
|
+
* @returns
|
|
113
|
+
*/
|
|
114
|
+
updateArrayItem(id: string, params: ArrayItemParams, options: mongoose.QueryOptions<Document>, context: NxContext): Promise<TDoc | null>;
|
|
115
|
+
/**
|
|
116
|
+
*
|
|
117
|
+
* @param id
|
|
118
|
+
* @param params
|
|
119
|
+
* @param options
|
|
120
|
+
* @param context
|
|
121
|
+
* @returns
|
|
122
|
+
*/
|
|
123
|
+
removeArrayItem(id: string, params: ArrayItemParams, options: mongoose.QueryOptions<Document> | undefined, context: NxContext): Promise<TDoc | null>;
|
|
124
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.BaseController = void 0;
|
|
13
|
+
class BaseController {
|
|
14
|
+
constructor({ model }) {
|
|
15
|
+
this.model = model;
|
|
16
|
+
}
|
|
17
|
+
get collectionName() {
|
|
18
|
+
return this.model.collectionName;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
*
|
|
22
|
+
* @param params
|
|
23
|
+
* @param context
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
26
|
+
count(params, context) {
|
|
27
|
+
return this.model.count(params, context);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
*
|
|
31
|
+
* @param params
|
|
32
|
+
* @param fields
|
|
33
|
+
* @param pagination
|
|
34
|
+
* @param context
|
|
35
|
+
* @returns
|
|
36
|
+
*/
|
|
37
|
+
list(params, fields, pagination, context) {
|
|
38
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
39
|
+
return (yield this.model.list(params, fields, pagination, context));
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
*
|
|
44
|
+
* @param id
|
|
45
|
+
* @param context
|
|
46
|
+
* @returns
|
|
47
|
+
*/
|
|
48
|
+
get(id, context) {
|
|
49
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
50
|
+
return this.model.get(id, context);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
*
|
|
55
|
+
* @param params
|
|
56
|
+
* @param context
|
|
57
|
+
* @returns
|
|
58
|
+
*/
|
|
59
|
+
findOne(params, context) {
|
|
60
|
+
return this.model.findOne(params, context);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
*
|
|
64
|
+
* @param item
|
|
65
|
+
* @param context
|
|
66
|
+
* @returns
|
|
67
|
+
*/
|
|
68
|
+
create(item, context) {
|
|
69
|
+
return this.model.create(item, context);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
*
|
|
73
|
+
* @param id
|
|
74
|
+
* @param item
|
|
75
|
+
* @param context
|
|
76
|
+
* @returns
|
|
77
|
+
*/
|
|
78
|
+
update(id, item, context) {
|
|
79
|
+
return this.model.update(id, item, context);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
*
|
|
83
|
+
* @param id
|
|
84
|
+
* @param context
|
|
85
|
+
* @returns
|
|
86
|
+
*/
|
|
87
|
+
remove(id, context) {
|
|
88
|
+
return this.model.remove(id, context);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
*
|
|
92
|
+
* @param id
|
|
93
|
+
* @param item
|
|
94
|
+
* @param context
|
|
95
|
+
* @returns
|
|
96
|
+
*/
|
|
97
|
+
copy(id, item, context) {
|
|
98
|
+
return this.model.copy(id, item, context);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
*
|
|
102
|
+
* @param id
|
|
103
|
+
* @param params
|
|
104
|
+
* @param options
|
|
105
|
+
* @param context
|
|
106
|
+
* @returns
|
|
107
|
+
*/
|
|
108
|
+
addArrayItem(id, params, options = { new: true }, context) {
|
|
109
|
+
return this.model.addArrayItem(id, params, options, context);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
*
|
|
113
|
+
* @param id
|
|
114
|
+
* @param params
|
|
115
|
+
* @param options
|
|
116
|
+
* @param context
|
|
117
|
+
* @returns
|
|
118
|
+
*/
|
|
119
|
+
updateArrayItem(id, params, options, context) {
|
|
120
|
+
return this.model.updateArrayItem(id, params, options, context);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
*
|
|
124
|
+
* @param id
|
|
125
|
+
* @param params
|
|
126
|
+
* @param options
|
|
127
|
+
* @param context
|
|
128
|
+
* @returns
|
|
129
|
+
*/
|
|
130
|
+
removeArrayItem(id, params, options = { new: true }, context) {
|
|
131
|
+
return this.model.removeArrayItem(id, params, options, context);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
exports.BaseController = BaseController;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/// <reference types="mongoose/types/aggregate" />
|
|
2
|
+
/// <reference types="mongoose/types/callback" />
|
|
3
|
+
/// <reference types="mongoose/types/collection" />
|
|
4
|
+
/// <reference types="mongoose/types/connection" />
|
|
5
|
+
/// <reference types="mongoose/types/cursor" />
|
|
6
|
+
/// <reference types="mongoose/types/document" />
|
|
7
|
+
/// <reference types="mongoose/types/error" />
|
|
8
|
+
/// <reference types="mongoose/types/expressions" />
|
|
9
|
+
/// <reference types="mongoose/types/helpers" />
|
|
10
|
+
/// <reference types="mongoose/types/middlewares" />
|
|
11
|
+
/// <reference types="mongoose/types/indexes" />
|
|
12
|
+
/// <reference types="mongoose/types/models" />
|
|
13
|
+
/// <reference types="mongoose/types/mongooseoptions" />
|
|
14
|
+
/// <reference types="mongoose/types/pipelinestage" />
|
|
15
|
+
/// <reference types="mongoose/types/populate" />
|
|
16
|
+
/// <reference types="mongoose/types/query" />
|
|
17
|
+
/// <reference types="mongoose/types/schemaoptions" />
|
|
18
|
+
/// <reference types="mongoose/types/schematypes" />
|
|
19
|
+
/// <reference types="mongoose/types/session" />
|
|
20
|
+
/// <reference types="mongoose/types/types" />
|
|
21
|
+
/// <reference types="mongoose/types/utility" />
|
|
22
|
+
/// <reference types="mongoose/types/validation" />
|
|
23
|
+
/// <reference types="mongoose/types/virtuals" />
|
|
24
|
+
/// <reference types="mongoose/types/inferschematype" />
|
|
25
|
+
/// <reference types="mongoose/types/inferrawdoctype" />
|
|
26
|
+
import mongoose from 'mongoose';
|
|
27
|
+
import { ModelCrudEventType } from '../enums';
|
|
28
|
+
import { NxObject } from '../interfaces';
|
|
29
|
+
import { NxDateRage } from '../types';
|
|
30
|
+
export interface BaseMongoDoc extends mongoose.Document {
|
|
31
|
+
id?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface BaseMongoModel<T, TDoc extends BaseMongoDoc> extends mongoose.Model<BaseMongoDoc> {
|
|
34
|
+
build(attrs: T): TDoc;
|
|
35
|
+
findByEvent(event: {
|
|
36
|
+
id: string;
|
|
37
|
+
version: number;
|
|
38
|
+
}): Promise<TDoc | null>;
|
|
39
|
+
}
|
|
40
|
+
export interface FoldedModelAttrs {
|
|
41
|
+
createdAt: Date;
|
|
42
|
+
updatedAt: Date;
|
|
43
|
+
ownerId?: string;
|
|
44
|
+
folderId?: string;
|
|
45
|
+
folder?: boolean;
|
|
46
|
+
users?: NxObject[];
|
|
47
|
+
groups?: NxObject[];
|
|
48
|
+
organizations?: NxObject[];
|
|
49
|
+
}
|
|
50
|
+
export interface FoldedMongoDoc extends BaseMongoDoc, FoldedModelAttrs {
|
|
51
|
+
}
|
|
52
|
+
export interface FilterParams extends NxObject {
|
|
53
|
+
text?: string;
|
|
54
|
+
rangeDate?: NxDateRage;
|
|
55
|
+
}
|
|
56
|
+
export interface QueryPagination {
|
|
57
|
+
offset?: number;
|
|
58
|
+
limit?: number;
|
|
59
|
+
sort?: NxObject;
|
|
60
|
+
}
|
|
61
|
+
export interface ArrayItemParams {
|
|
62
|
+
arrayPath: string;
|
|
63
|
+
item: NxObject;
|
|
64
|
+
arrayFilter?: NxObject;
|
|
65
|
+
updateAttr?: string;
|
|
66
|
+
partial?: boolean;
|
|
67
|
+
}
|
|
68
|
+
export interface ChangeStreamData {
|
|
69
|
+
name: string;
|
|
70
|
+
stream: mongoose.mongo.ChangeStream<any, any>;
|
|
71
|
+
duration?: number;
|
|
72
|
+
}
|
|
73
|
+
export type CrudItemEvent = {
|
|
74
|
+
id?: string;
|
|
75
|
+
type: ModelCrudEventType;
|
|
76
|
+
data: {
|
|
77
|
+
uid: string;
|
|
78
|
+
model: string;
|
|
79
|
+
path?: string;
|
|
80
|
+
};
|
|
81
|
+
};
|