@companix/xeo-server 0.0.3 → 0.0.5
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.
|
@@ -8,13 +8,16 @@ export declare class MongoCollectionDriver<T extends CollectionScheme> implement
|
|
|
8
8
|
private discriminatedModels;
|
|
9
9
|
tables: MongoRelationsTable<T>;
|
|
10
10
|
constructor(dataScheme: DataScheme<T>, connection: Connection);
|
|
11
|
+
findOneBy({ model, filter }: CollectionDriverParams.Filter): Promise<any>;
|
|
12
|
+
findBy({ model, filter }: CollectionDriverParams.Filter): Promise<any[]>;
|
|
11
13
|
getAll({ model }: CollectionDriverParams.Model): Promise<any[]>;
|
|
12
14
|
get({ model, id }: CollectionDriverParams.Record): Promise<any>;
|
|
13
15
|
create({ model, data }: CollectionDriverParams.Create): Promise<void>;
|
|
14
16
|
remove({ model, id }: CollectionDriverParams.Record): Promise<void>;
|
|
17
|
+
exists({ model, id }: CollectionDriverParams.Record): Promise<boolean>;
|
|
18
|
+
existsBy({ model, filter }: CollectionDriverParams.Filter): Promise<boolean>;
|
|
15
19
|
update({ model, id, patches }: CollectionDriverParams.Update): Promise<void>;
|
|
16
20
|
private getCollection;
|
|
17
|
-
exists({ model, id }: CollectionDriverParams.Record): Promise<boolean>;
|
|
18
21
|
private getIdentifierKey;
|
|
19
22
|
private useModel;
|
|
20
23
|
}
|
|
@@ -5,6 +5,7 @@ const table_driver_1 = require("./table.driver");
|
|
|
5
5
|
const mongoose_1 = require("mongoose");
|
|
6
6
|
const definitions_factory_1 = require("../factories/definitions.factory");
|
|
7
7
|
const common_1 = require("@nestjs/common");
|
|
8
|
+
const flatten_1 = require("../utils/flatten");
|
|
8
9
|
class MongoCollectionDriver {
|
|
9
10
|
constructor(dataScheme, connection) {
|
|
10
11
|
this.dataScheme = dataScheme;
|
|
@@ -36,6 +37,12 @@ class MongoCollectionDriver {
|
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
39
|
}
|
|
40
|
+
async findOneBy({ model, filter }) {
|
|
41
|
+
return this.collections[model].findOne((0, flatten_1.buildFlattenMap)(filter)).lean().exec();
|
|
42
|
+
}
|
|
43
|
+
async findBy({ model, filter }) {
|
|
44
|
+
return this.collections[model].find((0, flatten_1.buildFlattenMap)(filter)).lean().exec();
|
|
45
|
+
}
|
|
39
46
|
async getAll({ model }) {
|
|
40
47
|
return this.collections[model].find().lean().exec();
|
|
41
48
|
}
|
|
@@ -48,6 +55,16 @@ class MongoCollectionDriver {
|
|
|
48
55
|
async remove({ model, id }) {
|
|
49
56
|
await this.collections[model].deleteOne({ [this.getIdentifierKey(model)]: id }).exec();
|
|
50
57
|
}
|
|
58
|
+
async exists({ model, id }) {
|
|
59
|
+
const result = await this.collections[model].exists({
|
|
60
|
+
[this.getIdentifierKey(model)]: id
|
|
61
|
+
});
|
|
62
|
+
return result !== null;
|
|
63
|
+
}
|
|
64
|
+
async existsBy({ model, filter }) {
|
|
65
|
+
const result = await this.collections[model].exists((0, flatten_1.buildFlattenMap)(filter));
|
|
66
|
+
return result !== null;
|
|
67
|
+
}
|
|
51
68
|
async update({ model, id, patches }) {
|
|
52
69
|
const identifierKey = this.getIdentifierKey(model);
|
|
53
70
|
const collection = await this.getCollection({ model, id });
|
|
@@ -78,12 +95,6 @@ class MongoCollectionDriver {
|
|
|
78
95
|
}
|
|
79
96
|
return this.collections[model];
|
|
80
97
|
}
|
|
81
|
-
async exists({ model, id }) {
|
|
82
|
-
const result = await this.collections[model].exists({
|
|
83
|
-
[this.getIdentifierKey(model)]: id
|
|
84
|
-
});
|
|
85
|
-
return result !== null;
|
|
86
|
-
}
|
|
87
98
|
getIdentifierKey(model) {
|
|
88
99
|
return this.dataScheme.models[model].scheme.identifier.propertyKey;
|
|
89
100
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection.driver.js","sourceRoot":"","sources":["../../lib/drivers/collection.driver.ts"],"names":[],"mappings":";;;AAMA,iDAAoD;AACpD,uCAAoD;AACpD,0EAAqE;AACrE,2CAAuC;
|
|
1
|
+
{"version":3,"file":"collection.driver.js","sourceRoot":"","sources":["../../lib/drivers/collection.driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const buildFlattenMap: (filter: object) => Record<string, unknown>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildFlattenMap = void 0;
|
|
4
|
+
const utils_js_1 = require("@companix/utils-js");
|
|
5
|
+
const buildFlattenMap = (filter) => {
|
|
6
|
+
const out = {};
|
|
7
|
+
const walk = (node, prefix) => {
|
|
8
|
+
if (node === undefined) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
if (node === null || typeof node !== 'object' || Array.isArray(node) || !(0, utils_js_1.isPlainObject)(node)) {
|
|
12
|
+
if (prefix !== '') {
|
|
13
|
+
out[prefix] = node;
|
|
14
|
+
}
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const keys = Object.keys(node);
|
|
18
|
+
if (keys.length === 0) {
|
|
19
|
+
if (prefix !== '') {
|
|
20
|
+
out[prefix] = node;
|
|
21
|
+
}
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
for (const key of keys) {
|
|
25
|
+
const path = prefix ? `${prefix}.${key}` : key;
|
|
26
|
+
walk(node[key], path);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
walk(filter, '');
|
|
30
|
+
return out;
|
|
31
|
+
};
|
|
32
|
+
exports.buildFlattenMap = buildFlattenMap;
|
|
33
|
+
//# sourceMappingURL=flatten.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flatten.js","sourceRoot":"","sources":["../../lib/utils/flatten.ts"],"names":[],"mappings":";;;AAAA,iDAAkD;AAE3C,MAAM,eAAe,GAAG,CAAC,MAAc,EAA2B,EAAE;IACzE,MAAM,GAAG,GAA4B,EAAE,CAAA;IAEvC,MAAM,IAAI,GAAG,CAAC,IAAa,EAAE,MAAc,EAAE,EAAE;QAC7C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAM;QACR,CAAC;QAED,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAA,wBAAa,EAAC,IAAI,CAAC,EAAE,CAAC;YAC7F,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;gBAClB,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;YACpB,CAAC;YAED,OAAM;QACR,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,MAAM,KAAK,EAAE,EAAE,CAAC;gBAClB,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;YACpB,CAAC;YAED,OAAM;QACR,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;YAE9C,IAAI,CAAE,IAAgC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAA;QACpD,CAAC;IACH,CAAC,CAAA;IAED,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;IAEhB,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AApCY,QAAA,eAAe,mBAoC3B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@companix/xeo-server",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"files": [
|
|
@@ -9,7 +9,8 @@
|
|
|
9
9
|
"scripts": {
|
|
10
10
|
"echo": "echo \"@companix/xeo-server\"",
|
|
11
11
|
"build": "rm -rf dist && tsc -p tsconfig.build.json",
|
|
12
|
-
"test:unit": "tsc --noEmit && tsx ./tests/unit/definitions.ts",
|
|
12
|
+
"test:unit": "tsc --noEmit && tsx ./tests/unit/definitions.test.ts",
|
|
13
|
+
"test:unit:map": "tsc --noEmit && tsx ./tests/unit/flatten.test.ts",
|
|
13
14
|
"test:app": "nest start --watch --builder tsc --path tsconfig.test-app.json --sourceRoot tests/app --entryFile main",
|
|
14
15
|
"test:custom": "nest start --watch --builder tsc --path tsconfig.test-app.json --sourceRoot tests --entryFile integrations/custom.test",
|
|
15
16
|
"test:cases": "jest --config ./jest.cases.config.cjs --runInBand"
|