@restorecommerce/resource-base-interface 1.6.5 → 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/lib/core/GraphResourcesServiceBase.d.ts +9 -5
- package/lib/core/GraphResourcesServiceBase.d.ts.map +1 -0
- package/lib/core/GraphResourcesServiceBase.js +69 -100
- 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 +273 -388
- 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 +22 -16
- 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 +81 -141
- package/lib/index.js.map +1 -1
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/package.json +22 -20
- package/tsconfig.json +11 -25
- package/lib/core/WorkerBase.js.map +0 -1
|
@@ -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,42 +19,8 @@ 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
|
-
const 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
26
|
for (const key in bufferFiledCfg) {
|
|
@@ -81,22 +28,15 @@ class GraphResourcesServiceBase {
|
|
|
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,7 +54,7 @@ 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
|
};
|
|
@@ -123,36 +63,30 @@ class GraphResourcesServiceBase {
|
|
|
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
|
}
|
|
@@ -192,7 +126,7 @@ class GraphResourcesServiceBase {
|
|
|
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: object, limit: number, offset: number, sort: any,
|
|
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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"}
|