@restorecommerce/resource-base-interface 1.6.4 → 1.7.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/eslint.config.mjs +22 -0
- package/lib/core/GraphResourcesServiceBase.d.ts +9 -5
- package/lib/core/GraphResourcesServiceBase.d.ts.map +1 -0
- package/lib/core/GraphResourcesServiceBase.js +79 -110
- package/lib/core/GraphResourcesServiceBase.js.map +1 -1
- package/lib/core/ResourcesAPI.d.ts +26 -19
- package/lib/core/ResourcesAPI.d.ts.map +1 -0
- package/lib/core/ResourcesAPI.js +275 -398
- package/lib/core/ResourcesAPI.js.map +1 -1
- package/lib/core/ServiceBase.d.ts +29 -10
- package/lib/core/ServiceBase.d.ts.map +1 -0
- package/lib/core/ServiceBase.js +137 -242
- package/lib/core/ServiceBase.js.map +1 -1
- package/lib/core/index.d.ts +5 -0
- package/lib/core/index.d.ts.map +1 -0
- package/lib/core/index.js +21 -0
- package/lib/core/index.js.map +1 -0
- package/lib/core/interfaces.d.ts +6 -72
- package/lib/core/interfaces.d.ts.map +1 -0
- package/lib/core/interfaces.js +18 -31
- package/lib/core/interfaces.js.map +1 -1
- package/lib/core/utils.d.ts +3 -1
- package/lib/core/utils.d.ts.map +1 -0
- package/lib/core/utils.js +28 -32
- package/lib/core/utils.js.map +1 -1
- package/lib/experimental/AccessControlledServiceBase.d.ts +30 -0
- package/lib/experimental/AccessControlledServiceBase.d.ts.map +1 -0
- package/lib/experimental/AccessControlledServiceBase.js +232 -0
- package/lib/experimental/AccessControlledServiceBase.js.map +1 -0
- package/lib/experimental/ClientRegister.d.ts +22 -0
- package/lib/experimental/ClientRegister.d.ts.map +1 -0
- package/lib/experimental/ClientRegister.js +33 -0
- package/lib/experimental/ClientRegister.js.map +1 -0
- package/lib/experimental/Pipe.d.ts +6 -0
- package/lib/experimental/Pipe.d.ts.map +1 -0
- package/lib/experimental/Pipe.js +14 -0
- package/lib/experimental/Pipe.js.map +1 -0
- package/lib/experimental/ResourceAggregator.d.ts +35 -0
- package/lib/experimental/ResourceAggregator.d.ts.map +1 -0
- package/lib/experimental/ResourceAggregator.js +94 -0
- package/lib/experimental/ResourceAggregator.js.map +1 -0
- package/lib/experimental/ResourceAwaitQueue.d.ts +12 -0
- package/lib/experimental/ResourceAwaitQueue.d.ts.map +1 -0
- package/lib/experimental/ResourceAwaitQueue.js +34 -0
- package/lib/experimental/ResourceAwaitQueue.js.map +1 -0
- package/lib/experimental/ResourceMap.d.ts +16 -0
- package/lib/experimental/ResourceMap.d.ts.map +1 -0
- package/lib/experimental/ResourceMap.js +51 -0
- package/lib/experimental/ResourceMap.js.map +1 -0
- package/lib/{core → experimental}/WorkerBase.d.ts +10 -14
- package/lib/experimental/WorkerBase.d.ts.map +1 -0
- package/lib/{core → experimental}/WorkerBase.js +44 -30
- package/lib/experimental/WorkerBase.js.map +1 -0
- package/lib/experimental/index.d.ts +7 -0
- package/lib/experimental/index.d.ts.map +1 -0
- package/lib/experimental/index.js +23 -0
- package/lib/experimental/index.js.map +1 -0
- package/lib/index.d.ts +5 -7
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +84 -144
- package/lib/index.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/package.json +23 -28
- package/tsconfig.json +11 -25
- package/lib/core/WorkerBase.js.map +0 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
|
|
3
|
+
import eslint from '@eslint/js';
|
|
4
|
+
import { RuleTester } from 'eslint';
|
|
5
|
+
import tseslint from 'typescript-eslint';
|
|
6
|
+
|
|
7
|
+
const rules = tseslint.config(
|
|
8
|
+
eslint.configs.recommended,
|
|
9
|
+
...tseslint.configs.recommended,
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
rules.push(
|
|
13
|
+
{
|
|
14
|
+
"rules": {
|
|
15
|
+
"@typescript-eslint/no-explicit-any": "off",
|
|
16
|
+
"@typescript-eslint/no-unused-vars": "off",
|
|
17
|
+
"prefer-rest-params": "off",
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
export default rules;
|
|
@@ -1,21 +1,24 @@
|
|
|
1
|
+
import { type CallContext } from 'nice-grpc-common';
|
|
1
2
|
import { GraphDatabaseProvider } from '@restorecommerce/chassis-srv';
|
|
2
3
|
import { Logger } from '@restorecommerce/logger';
|
|
4
|
+
import { OperationStatus } from '@restorecommerce/rc-grpc-clients/dist/generated-server/io/restorecommerce/status';
|
|
3
5
|
import { DeepPartial, ServerStreamingMethodResult, GraphServiceImplementation, TraversalRequest, TraversalResponse } from '@restorecommerce/rc-grpc-clients/dist/generated-server/io/restorecommerce/graph';
|
|
4
6
|
/**
|
|
5
7
|
* Graph Resource API base provides functions for graph Operations such as
|
|
6
8
|
* creating or modifying Vertices/Edges, graph traversal etc.
|
|
7
9
|
*/
|
|
8
10
|
export declare class GraphResourcesServiceBase implements GraphServiceImplementation {
|
|
9
|
-
private db;
|
|
10
|
-
private bufferFiledCfg?;
|
|
11
|
+
private readonly db;
|
|
12
|
+
private readonly bufferFiledCfg?;
|
|
13
|
+
private readonly logger?;
|
|
14
|
+
private readonly dateTimeFieldcfg?;
|
|
11
15
|
bufferedCollections: any;
|
|
12
|
-
dateTimeFieldcfg: any;
|
|
13
|
-
logger: Logger;
|
|
14
16
|
/**
|
|
15
17
|
* @constructor
|
|
16
18
|
* @param {object} db Chassis arangodb provider.
|
|
17
19
|
*/
|
|
18
20
|
constructor(db: GraphDatabaseProvider, bufferFiledCfg?: any, logger?: Logger, dateTimeFieldcfg?: any);
|
|
21
|
+
protected catchOperationError(msg: string, err: any): OperationStatus;
|
|
19
22
|
/**
|
|
20
23
|
* collection traversal - Performs a traversal starting from the given
|
|
21
24
|
* startVertex and following edges contained in this edge collection.
|
|
@@ -26,7 +29,7 @@ export declare class GraphResourcesServiceBase implements GraphServiceImplementa
|
|
|
26
29
|
* opts contains the options such as opts.direction, opts.filter, opts.visitor,
|
|
27
30
|
* opts.init, opts.expander, opts.sort
|
|
28
31
|
*/
|
|
29
|
-
traversal(request: TraversalRequest, context:
|
|
32
|
+
traversal(request: TraversalRequest, context: CallContext): ServerStreamingMethodResult<DeepPartial<TraversalResponse>>;
|
|
30
33
|
/**
|
|
31
34
|
* marshall the data
|
|
32
35
|
*
|
|
@@ -37,3 +40,4 @@ export declare class GraphResourcesServiceBase implements GraphServiceImplementa
|
|
|
37
40
|
marshallData(document: any, bufferField: any): any;
|
|
38
41
|
private updateJSON;
|
|
39
42
|
}
|
|
43
|
+
//# sourceMappingURL=GraphResourcesServiceBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GraphResourcesServiceBase.d.ts","sourceRoot":"","sources":["../../src/core/GraphResourcesServiceBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,qBAAqB,EAEtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EACL,eAAe,EAChB,MAAM,kFAAkF,CAAC;AAC1F,OAAO,EACL,WAAW,EAAE,2BAA2B,EACxC,0BAA0B,EAC1B,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,iFAAiF,CAAC;AAGzF;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,0BAA0B;IAOxE,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC;IATpC,mBAAmB,EAAE,GAAG,CAAC;IACzB;;;OAGG;gBAEgB,EAAE,EAAE,qBAAqB,EACzB,cAAc,CAAC,EAAE,GAAG,EACpB,MAAM,CAAC,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,GAAG;IAYzC,SAAS,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,eAAe;IAQrE;;;;;;;;;MASE;IACK,SAAS,CACd,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,WAAW,GACnB,2BAA2B,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;IA0H9D;;;;;;OAMG;IACH,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,GAAG,GAAG;IAWlD,OAAO,CAAC,UAAU,CAgChB;CACH"}
|
|
@@ -1,36 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
3
|
exports.GraphResourcesServiceBase = void 0;
|
|
27
|
-
const
|
|
28
|
-
const logger_1 = require("@restorecommerce/logger");
|
|
4
|
+
const interfaces_1 = require("./interfaces");
|
|
29
5
|
/**
|
|
30
6
|
* Graph Resource API base provides functions for graph Operations such as
|
|
31
7
|
* creating or modifying Vertices/Edges, graph traversal etc.
|
|
32
8
|
*/
|
|
33
9
|
class GraphResourcesServiceBase {
|
|
10
|
+
db;
|
|
11
|
+
bufferFiledCfg;
|
|
12
|
+
logger;
|
|
13
|
+
dateTimeFieldcfg;
|
|
14
|
+
bufferedCollections;
|
|
34
15
|
/**
|
|
35
16
|
* @constructor
|
|
36
17
|
* @param {object} db Chassis arangodb provider.
|
|
@@ -38,65 +19,24 @@ class GraphResourcesServiceBase {
|
|
|
38
19
|
constructor(db, bufferFiledCfg, logger, dateTimeFieldcfg) {
|
|
39
20
|
this.db = db;
|
|
40
21
|
this.bufferFiledCfg = bufferFiledCfg;
|
|
41
|
-
this.
|
|
42
|
-
|
|
43
|
-
let result = obj;
|
|
44
|
-
let j = 0;
|
|
45
|
-
for (let i = 0, n = fields.length; i < n && result !== undefined; i++) {
|
|
46
|
-
let field = fields[i];
|
|
47
|
-
if (i === n - 1) {
|
|
48
|
-
// reset value finally after iterating to the position (only if value already exists)
|
|
49
|
-
if (result[field]) {
|
|
50
|
-
result[field] = new Date(result[field]).toISOString();
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
if (_.isArray(result[field])) {
|
|
55
|
-
// till i < n concat new fields
|
|
56
|
-
let newField;
|
|
57
|
-
for (let k = i + 1; k < n; k++) {
|
|
58
|
-
if (newField) {
|
|
59
|
-
newField = newField + '.' + fields[k];
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
newField = fields[k];
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
for (; j < result[field].length; j++) {
|
|
66
|
-
// recurisve call to update each element if its an array
|
|
67
|
-
this.updateJSON(newField, result[field][j]);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
// update object till final path is reached
|
|
72
|
-
result = result[field];
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
};
|
|
22
|
+
this.logger = logger;
|
|
23
|
+
this.dateTimeFieldcfg = dateTimeFieldcfg;
|
|
77
24
|
if (bufferFiledCfg) {
|
|
78
25
|
this.bufferedCollections = [];
|
|
79
|
-
for (
|
|
26
|
+
for (const key in bufferFiledCfg) {
|
|
80
27
|
// mapping of collection name to the property to be marshalled
|
|
81
28
|
this.bufferedCollections.push(key);
|
|
82
29
|
}
|
|
83
30
|
}
|
|
84
|
-
if (logger) {
|
|
85
|
-
this.logger = logger;
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
const defaultLoggerCfg = {
|
|
89
|
-
console: {
|
|
90
|
-
handleExceptions: false,
|
|
91
|
-
level: 'debug',
|
|
92
|
-
colorize: true,
|
|
93
|
-
prettyPrint: true
|
|
94
|
-
}
|
|
95
|
-
};
|
|
96
|
-
this.logger = (0, logger_1.createLogger)(defaultLoggerCfg);
|
|
97
|
-
}
|
|
98
31
|
this.dateTimeFieldcfg = dateTimeFieldcfg;
|
|
99
32
|
}
|
|
33
|
+
catchOperationError(msg, err) {
|
|
34
|
+
this.logger?.error(msg, err);
|
|
35
|
+
return {
|
|
36
|
+
code: Number.isInteger(err.code) ? err.code : 500,
|
|
37
|
+
message: err.message ?? 'Unknown Error!',
|
|
38
|
+
};
|
|
39
|
+
}
|
|
100
40
|
/**
|
|
101
41
|
* collection traversal - Performs a traversal starting from the given
|
|
102
42
|
* startVertex and following edges contained in this edge collection.
|
|
@@ -114,55 +54,49 @@ class GraphResourcesServiceBase {
|
|
|
114
54
|
const options = request?.opts;
|
|
115
55
|
if (!vertices && !collection) {
|
|
116
56
|
const message = 'missing start vertex or collection_name for graph traversal';
|
|
117
|
-
this.logger
|
|
57
|
+
this.logger?.error(message);
|
|
118
58
|
yield {
|
|
119
59
|
operation_status: { code: 400, message }
|
|
120
60
|
};
|
|
121
61
|
return;
|
|
122
62
|
}
|
|
123
63
|
const filters = request?.filters;
|
|
124
|
-
|
|
64
|
+
const path = request?.path ? request.path : false;
|
|
125
65
|
let traversalCursor;
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
sort = {};
|
|
129
|
-
_.forEach(collection.sorts, (s) => {
|
|
66
|
+
if (collection?.sorts?.length) {
|
|
67
|
+
collection.sorts = collection.sorts.reduce((a, s) => {
|
|
130
68
|
switch (s.order) {
|
|
131
|
-
case
|
|
132
|
-
|
|
133
|
-
sort[s.field] = 'ASC';
|
|
69
|
+
case interfaces_1.SortOrder.ASCENDING:
|
|
70
|
+
a[s.field] = 'ASC';
|
|
134
71
|
break;
|
|
135
|
-
case
|
|
136
|
-
|
|
137
|
-
sort[s.field] = 'DESC';
|
|
72
|
+
case interfaces_1.SortOrder.DESCENDING:
|
|
73
|
+
a[s.field] = 'DESC';
|
|
138
74
|
break;
|
|
139
|
-
case
|
|
140
|
-
case 0:
|
|
75
|
+
case interfaces_1.SortOrder.UNSORTED:
|
|
141
76
|
default:
|
|
142
77
|
break;
|
|
143
78
|
}
|
|
144
|
-
|
|
145
|
-
|
|
79
|
+
return a;
|
|
80
|
+
}, {});
|
|
146
81
|
}
|
|
147
82
|
try {
|
|
148
|
-
this.logger
|
|
83
|
+
this.logger?.debug('Calling traversal', { vertices, collection });
|
|
149
84
|
traversalCursor = await this.db.traversal(vertices, collection, options, filters);
|
|
150
|
-
this.logger
|
|
85
|
+
this.logger?.debug('Received traversal ArrayCursor from DB');
|
|
151
86
|
}
|
|
152
87
|
catch (err) {
|
|
153
|
-
this.logger.error('Error executing DB Traversal', { code: err.code, message: err.message, stack: err.stack });
|
|
154
88
|
yield {
|
|
155
|
-
operation_status:
|
|
89
|
+
operation_status: this.catchOperationError('Error executing DB Traversal', err)
|
|
156
90
|
};
|
|
157
91
|
return;
|
|
158
92
|
}
|
|
159
|
-
|
|
160
|
-
|
|
93
|
+
const rootCursor = traversalCursor.rootCursor;
|
|
94
|
+
const associationCursor = traversalCursor.associationCursor;
|
|
161
95
|
// root entity data batches
|
|
162
96
|
if (rootCursor && rootCursor.batches) {
|
|
163
97
|
for await (const batch of rootCursor.batches) {
|
|
164
98
|
// root entity data, encoding before pushing batch
|
|
165
|
-
for (
|
|
99
|
+
for (const elem of batch) {
|
|
166
100
|
if (elem._key) {
|
|
167
101
|
delete elem._key;
|
|
168
102
|
}
|
|
@@ -176,9 +110,9 @@ class GraphResourcesServiceBase {
|
|
|
176
110
|
// association entity data batches
|
|
177
111
|
if (associationCursor && associationCursor.batches) {
|
|
178
112
|
for await (const batch of associationCursor.batches) {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
for (
|
|
113
|
+
const associationData = [];
|
|
114
|
+
const traversedPaths = [];
|
|
115
|
+
for (const data of batch) {
|
|
182
116
|
if (data.v._key) {
|
|
183
117
|
delete data.v._key;
|
|
184
118
|
}
|
|
@@ -186,13 +120,13 @@ class GraphResourcesServiceBase {
|
|
|
186
120
|
delete data.v._rev;
|
|
187
121
|
}
|
|
188
122
|
// convert `data.v` ie. vertex data for time fields conversion from ms to ISO string directly
|
|
189
|
-
|
|
123
|
+
const entityName = data.v._id.split('/')[0];
|
|
190
124
|
if (this.dateTimeFieldcfg) {
|
|
191
|
-
for (
|
|
125
|
+
for (const cfgEntityNames in this.dateTimeFieldcfg) {
|
|
192
126
|
if (cfgEntityNames === entityName) {
|
|
193
127
|
const dateTimeFields = this.dateTimeFieldcfg[entityName];
|
|
194
128
|
dateTimeFields.forEach(e => {
|
|
195
|
-
if (e.
|
|
129
|
+
if (e.includes('.')) {
|
|
196
130
|
this.updateJSON(e, data.v);
|
|
197
131
|
}
|
|
198
132
|
else {
|
|
@@ -207,25 +141,24 @@ class GraphResourcesServiceBase {
|
|
|
207
141
|
traversedPaths.push(data.p);
|
|
208
142
|
}
|
|
209
143
|
}
|
|
210
|
-
if (
|
|
144
|
+
if (associationData.length) {
|
|
211
145
|
// associated entity data, encoding before pushing data
|
|
212
146
|
yield ({ data: { value: Buffer.from(JSON.stringify(associationData)) } });
|
|
213
147
|
}
|
|
214
148
|
// paths
|
|
215
|
-
if (
|
|
149
|
+
if (traversedPaths.length) {
|
|
216
150
|
// traversed paths, encoding before pushing paths
|
|
217
151
|
yield ({ paths: { value: Buffer.from(JSON.stringify(traversedPaths)) } });
|
|
218
152
|
}
|
|
219
153
|
}
|
|
220
154
|
}
|
|
221
155
|
yield ({ operation_status: { code: 200, message: 'success' } });
|
|
222
|
-
this.logger
|
|
156
|
+
this.logger?.debug('Traversal request ended');
|
|
223
157
|
return;
|
|
224
158
|
}
|
|
225
159
|
catch (err) {
|
|
226
|
-
this.logger.error('Error caught executing traversal', { code: err.code, message: err.message, stack: err.stack });
|
|
227
160
|
yield {
|
|
228
|
-
operation_status:
|
|
161
|
+
operation_status: this.catchOperationError('Error caught executing traversal', err)
|
|
229
162
|
};
|
|
230
163
|
return;
|
|
231
164
|
}
|
|
@@ -247,6 +180,42 @@ class GraphResourcesServiceBase {
|
|
|
247
180
|
}
|
|
248
181
|
return document;
|
|
249
182
|
}
|
|
183
|
+
updateJSON = (path, obj) => {
|
|
184
|
+
const fields = path.split('.');
|
|
185
|
+
let result = obj;
|
|
186
|
+
let j = 0;
|
|
187
|
+
for (let i = 0, n = fields.length; i < n && result !== undefined; i++) {
|
|
188
|
+
const field = fields[i];
|
|
189
|
+
if (i === n - 1) {
|
|
190
|
+
// reset value finally after iterating to the position (only if value already exists)
|
|
191
|
+
if (result[field]) {
|
|
192
|
+
result[field] = new Date(result[field]).toISOString();
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
if (Array.isArray(result[field])) {
|
|
197
|
+
// till i < n concat new fields
|
|
198
|
+
let newField;
|
|
199
|
+
for (let k = i + 1; k < n; k++) {
|
|
200
|
+
if (newField) {
|
|
201
|
+
newField = newField + '.' + fields[k];
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
newField = fields[k];
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
for (; j < result[field].length; j++) {
|
|
208
|
+
// recurisve call to update each element if its an array
|
|
209
|
+
this.updateJSON(newField, result[field][j]);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
else {
|
|
213
|
+
// update object till final path is reached
|
|
214
|
+
result = result[field];
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
};
|
|
250
219
|
}
|
|
251
220
|
exports.GraphResourcesServiceBase = GraphResourcesServiceBase;
|
|
252
221
|
//# sourceMappingURL=GraphResourcesServiceBase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphResourcesServiceBase.js","sourceRoot":"","sources":["../../src/core/GraphResourcesServiceBase.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GraphResourcesServiceBase.js","sourceRoot":"","sources":["../../src/core/GraphResourcesServiceBase.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,25 @@
|
|
|
1
|
+
import { type RedisClientType } from 'redis';
|
|
1
2
|
import { Logger } from '@restorecommerce/logger';
|
|
2
3
|
import { Topic } from '@restorecommerce/kafka-client';
|
|
3
4
|
import { BaseDocument } from './interfaces';
|
|
4
5
|
import { DatabaseProvider } from '@restorecommerce/chassis-srv';
|
|
5
|
-
import {
|
|
6
|
-
import { Search } from '@restorecommerce/rc-grpc-clients/dist/generated-server/io/restorecommerce/resource_base';
|
|
6
|
+
import { Status, OperationStatus } from '@restorecommerce/rc-grpc-clients/dist/generated-server/io/restorecommerce/status';
|
|
7
|
+
import { DeepPartial, Search } from '@restorecommerce/rc-grpc-clients/dist/generated-server/io/restorecommerce/resource_base';
|
|
7
8
|
import { Subject } from '@restorecommerce/rc-grpc-clients/dist/generated-server/io/restorecommerce/auth';
|
|
8
9
|
/**
|
|
9
10
|
* Resource API base provides functions for CRUD operations.
|
|
10
11
|
*/
|
|
11
12
|
export declare class ResourcesAPIBase {
|
|
12
|
-
readonly db: DatabaseProvider;
|
|
13
|
-
readonly collectionName: string;
|
|
14
|
-
readonly edgeCfg?: any;
|
|
15
|
-
readonly graphName?: string;
|
|
16
|
-
readonly logger?: Logger;
|
|
17
|
-
readonly resourceName?: string;
|
|
18
|
-
readonly bufferFields: string[];
|
|
19
|
-
readonly requiredFields: any;
|
|
20
|
-
readonly timeStampFields: string[];
|
|
13
|
+
protected readonly db: DatabaseProvider;
|
|
14
|
+
protected readonly collectionName: string;
|
|
15
|
+
protected readonly edgeCfg?: any;
|
|
16
|
+
protected readonly graphName?: string;
|
|
17
|
+
protected readonly logger?: Logger;
|
|
18
|
+
protected readonly resourceName?: string;
|
|
19
|
+
protected readonly bufferFields: string[];
|
|
20
|
+
protected readonly requiredFields: any;
|
|
21
|
+
protected readonly timeStampFields: string[];
|
|
22
|
+
protected readonly redisClient: RedisClientType;
|
|
21
23
|
/**
|
|
22
24
|
* @constructor
|
|
23
25
|
* @param {object} db Chassis arangodb provider.
|
|
@@ -25,51 +27,56 @@ export declare class ResourcesAPIBase {
|
|
|
25
27
|
* @param {any} fieldHandlerConf The collection's field generators configuration.
|
|
26
28
|
*/
|
|
27
29
|
constructor(db: DatabaseProvider, collectionName: string, fieldHandlerConf?: any, edgeCfg?: any, graphName?: string, logger?: Logger, resourceName?: string);
|
|
30
|
+
protected catchOperationError(msg: string, err: any): OperationStatus;
|
|
31
|
+
protected catchStatusError(msg: string, err: any): Status;
|
|
32
|
+
protected setMeta<T extends BaseDocument>(o: T & any, subject: Subject, create?: boolean): T;
|
|
33
|
+
protected setDefaults<T extends BaseDocument>(o: T & any, collectionName: string, subject: Subject, create?: boolean): Promise<T>;
|
|
28
34
|
/**
|
|
29
35
|
* Finds documents based on provided filters and options
|
|
30
36
|
* @param {object} filter key value filter using mongodb/nedb filter format.
|
|
31
37
|
* @param {number} limit
|
|
32
38
|
* @param {number} offset
|
|
33
39
|
* @param {object} sort key value, key=field value: 1=ASCENDING, -1=DESCENDING, 0=UNSORTED
|
|
34
|
-
* @param {object}
|
|
40
|
+
* @param {object} fields key value, key=field value: 0=exclude, 1=include
|
|
35
41
|
* @returns {an Object that contains an items field}
|
|
36
42
|
*/
|
|
37
|
-
read(filter:
|
|
43
|
+
read(filter: object, limit: number, offset: number, sort: any, fields: any, customQueries: string[], customArgs: any, search: DeepPartial<Search>): Promise<BaseDocument[]>;
|
|
38
44
|
/**
|
|
39
45
|
* Inserts documents to the database.
|
|
40
46
|
*
|
|
41
47
|
* @param {array.object} documents
|
|
42
48
|
*/
|
|
43
|
-
create(documents: BaseDocument[], subject: Subject): Promise<any>;
|
|
49
|
+
create(documents: BaseDocument[], subject: Subject, events?: Topic): Promise<any>;
|
|
44
50
|
private isGraphDB;
|
|
45
51
|
/**
|
|
46
52
|
* Check if a resource's required fields are present.
|
|
47
53
|
* @param requiredFields
|
|
48
54
|
* @param documents
|
|
49
55
|
*/
|
|
50
|
-
checkRequiredFields(requiredFields: string[], documents:
|
|
56
|
+
checkRequiredFields(requiredFields: string[], documents: BaseDocument[], errors: BaseDocument[]): BaseDocument[];
|
|
51
57
|
/**
|
|
52
58
|
* Removes documents found by id.
|
|
53
59
|
*
|
|
54
60
|
* @param [array.string] ids List of document IDs.
|
|
55
61
|
*/
|
|
56
|
-
delete(ids: string[]): Promise<any>;
|
|
62
|
+
delete(ids: string[], events?: Topic): Promise<any[]>;
|
|
57
63
|
/**
|
|
58
64
|
* Delete all documents in the collection.
|
|
59
65
|
*/
|
|
60
|
-
deleteCollection(): Promise<
|
|
66
|
+
deleteCollection(events?: Topic): Promise<void>;
|
|
61
67
|
/**
|
|
62
68
|
* Upserts documents.
|
|
63
69
|
*
|
|
64
70
|
* @param [array.object] documents
|
|
65
71
|
*/
|
|
66
|
-
upsert(documents:
|
|
72
|
+
upsert<T extends BaseDocument>(documents: T[], subject: Subject, events?: Topic): Promise<T[]>;
|
|
67
73
|
/**
|
|
68
74
|
* Finds documents by id and updates them.
|
|
69
75
|
*
|
|
70
76
|
* @param [array.object] documents
|
|
71
77
|
* A list of documents or partial documents. Each document must contain an id field.
|
|
72
78
|
*/
|
|
73
|
-
update(documents:
|
|
79
|
+
update<T extends BaseDocument>(documents: T[], subject: Subject, events?: Topic): Promise<T[]>;
|
|
74
80
|
private encodeOrDecode;
|
|
75
81
|
}
|
|
82
|
+
//# sourceMappingURL=ResourcesAPI.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResourcesAPI.d.ts","sourceRoot":"","sources":["../../src/core/ResourcesAPI.ts"],"names":[],"mappings":"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"}
|