kuzzle-device-manager 2.3.2 → 2.4.0-beta.1-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/dist/lib/modules/asset/AssetsController.d.ts +5 -0
- package/dist/lib/modules/asset/AssetsController.js +48 -15
- package/dist/lib/modules/asset/AssetsController.js.map +1 -1
- package/dist/lib/modules/asset/collections/assetsMappings.js +1 -0
- package/dist/lib/modules/asset/collections/assetsMappings.js.map +1 -1
- package/dist/lib/modules/asset/types/AssetApi.d.ts +10 -0
- package/dist/lib/modules/decoder/PayloadService.js +1 -0
- package/dist/lib/modules/decoder/PayloadService.js.map +1 -1
- package/dist/lib/modules/device/DeviceService.js +1 -0
- package/dist/lib/modules/device/DeviceService.js.map +1 -1
- package/dist/lib/modules/device/DevicesController.d.ts +5 -0
- package/dist/lib/modules/device/DevicesController.js +46 -16
- package/dist/lib/modules/device/DevicesController.js.map +1 -1
- package/dist/lib/modules/device/collections/deviceMappings.d.ts +3 -0
- package/dist/lib/modules/device/collections/deviceMappings.js +1 -0
- package/dist/lib/modules/device/collections/deviceMappings.js.map +1 -1
- package/dist/lib/modules/device/types/DeviceApi.d.ts +10 -0
- package/dist/lib/modules/measure/MeasureExporter.d.ts +23 -33
- package/dist/lib/modules/measure/MeasureExporter.js +55 -88
- package/dist/lib/modules/measure/MeasureExporter.js.map +1 -1
- package/dist/lib/modules/measure/MeasureService.js +10 -0
- package/dist/lib/modules/measure/MeasureService.js.map +1 -1
- package/dist/lib/modules/shared/index.d.ts +1 -0
- package/dist/lib/modules/shared/index.js +1 -0
- package/dist/lib/modules/shared/index.js.map +1 -1
- package/dist/lib/modules/shared/services/AbstractExporter.d.ts +52 -0
- package/dist/lib/modules/shared/services/AbstractExporter.js +87 -0
- package/dist/lib/modules/shared/services/AbstractExporter.js.map +1 -0
- package/dist/lib/modules/shared/services/DigitalTwinExporter.d.ts +14 -0
- package/dist/lib/modules/shared/services/DigitalTwinExporter.js +94 -0
- package/dist/lib/modules/shared/services/DigitalTwinExporter.js.map +1 -0
- package/dist/lib/modules/shared/services/index.d.ts +2 -0
- package/dist/lib/modules/shared/services/index.js +19 -0
- package/dist/lib/modules/shared/services/index.js.map +1 -0
- package/dist/lib/modules/shared/types/DigitalTwinContent.d.ts +1 -0
- package/package.json +2 -1
|
@@ -1,37 +1,31 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { UUID } from "node:crypto";
|
|
4
|
+
import { KHit, User } from "kuzzle";
|
|
5
|
+
import { AbstractExporter, Column, ExportParams } from "../shared";
|
|
5
6
|
import { MeasureContent } from "./exports";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
from?: number;
|
|
10
|
-
size?: number;
|
|
7
|
+
interface MeasureSearchParams extends ExportParams {
|
|
8
|
+
id: string;
|
|
9
|
+
type?: string;
|
|
11
10
|
startAt?: string;
|
|
12
11
|
endAt?: string;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
sort: JSONObject;
|
|
12
|
+
}
|
|
13
|
+
interface MeasuresSearchOptions {
|
|
14
|
+
from?: number;
|
|
15
|
+
size?: number;
|
|
16
|
+
}
|
|
17
|
+
interface MeasureExportParams extends ExportParams {
|
|
20
18
|
id: string;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
private get sdk();
|
|
27
|
-
constructor(plugin: DeviceManagerPlugin, engineId: string, { target }?: {
|
|
28
|
-
target?: "asset" | "device";
|
|
29
|
-
});
|
|
19
|
+
model: string;
|
|
20
|
+
}
|
|
21
|
+
export declare class MeasureExporter extends AbstractExporter<MeasureExportParams> {
|
|
22
|
+
protected exportRedisKey(engineId: string, exportId: string): string;
|
|
23
|
+
protected getLink(engineId: string, exportId: UUID, params: MeasureExportParams): string;
|
|
30
24
|
/**
|
|
31
25
|
* Searches for measures and return them in a standard JSON
|
|
32
26
|
*/
|
|
33
|
-
search(
|
|
34
|
-
measures:
|
|
27
|
+
search(engineId: string, params: MeasureSearchParams, options?: MeasuresSearchOptions): Promise<{
|
|
28
|
+
measures: KHit<MeasureContent<any, any>>[];
|
|
35
29
|
total: number;
|
|
36
30
|
}>;
|
|
37
31
|
/**
|
|
@@ -43,20 +37,16 @@ export declare class MeasureExporter {
|
|
|
43
37
|
*
|
|
44
38
|
* Never return a rejected promise and write potential error on the stream
|
|
45
39
|
*/
|
|
46
|
-
prepareExport(
|
|
47
|
-
|
|
48
|
-
}>;
|
|
40
|
+
prepareExport(engineId: string, user: User, params: MeasureSearchParams): Promise<string>;
|
|
41
|
+
protected formatHit(columns: Column[], hit: KHit<MeasureContent>): any[];
|
|
49
42
|
/**
|
|
50
43
|
* Retrieve a prepared export and write each document as a CSV in the stream
|
|
51
44
|
*
|
|
52
45
|
* This method never returns a rejected promise, but write potential error in
|
|
53
46
|
* the stream.
|
|
54
47
|
*/
|
|
55
|
-
sendExport(
|
|
48
|
+
sendExport(engineId: string, exportId: string): Promise<import("stream").PassThrough>;
|
|
56
49
|
private generateMeasureColumns;
|
|
57
|
-
getExport(exportId: string): Promise<ExportParams>;
|
|
58
|
-
private exportRedisKey;
|
|
59
50
|
private prepareMeasureSearch;
|
|
60
|
-
private getEngine;
|
|
61
51
|
}
|
|
62
52
|
export {};
|
|
@@ -4,28 +4,30 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.MeasureExporter = void 0;
|
|
7
|
-
const node_crypto_1 = require("node:crypto");
|
|
8
|
-
const sync_1 = require("csv-stringify/sync");
|
|
9
7
|
const kuzzle_1 = require("kuzzle");
|
|
10
8
|
const lodash_1 = __importDefault(require("lodash"));
|
|
11
9
|
const plugin_1 = require("../plugin");
|
|
12
10
|
const shared_1 = require("../shared");
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return this.plugin.context.accessors.sdk;
|
|
11
|
+
class MeasureExporter extends shared_1.AbstractExporter {
|
|
12
|
+
exportRedisKey(engineId, exportId) {
|
|
13
|
+
return `exports:measures:${engineId}:${exportId}`;
|
|
17
14
|
}
|
|
18
|
-
|
|
19
|
-
this.
|
|
20
|
-
this.engineId = engineId;
|
|
21
|
-
this.target = target;
|
|
15
|
+
getLink(engineId, exportId, params) {
|
|
16
|
+
return `/_/device-manager/${engineId}/${this.target}/${params.id}/measures/_export/${exportId}`;
|
|
22
17
|
}
|
|
23
18
|
/**
|
|
24
19
|
* Searches for measures and return them in a standard JSON
|
|
25
20
|
*/
|
|
26
|
-
async search(
|
|
27
|
-
const
|
|
28
|
-
const result = await this.sdk.document.search(
|
|
21
|
+
async search(engineId, params, options) {
|
|
22
|
+
const searchQuery = this.prepareMeasureSearch(params);
|
|
23
|
+
const result = await this.sdk.document.search(engineId, plugin_1.InternalCollection.MEASURES, {
|
|
24
|
+
query: searchQuery,
|
|
25
|
+
sort: params.sort ?? { measuredAt: "desc" },
|
|
26
|
+
}, {
|
|
27
|
+
from: options?.from ?? 0,
|
|
28
|
+
lang: "koncorde",
|
|
29
|
+
size: options?.size ?? 25,
|
|
30
|
+
});
|
|
29
31
|
return { measures: result.hits, total: result.total };
|
|
30
32
|
}
|
|
31
33
|
/**
|
|
@@ -37,28 +39,26 @@ class MeasureExporter {
|
|
|
37
39
|
*
|
|
38
40
|
* Never return a rejected promise and write potential error on the stream
|
|
39
41
|
*/
|
|
40
|
-
async prepareExport(
|
|
41
|
-
const
|
|
42
|
+
async prepareExport(engineId, user, params) {
|
|
43
|
+
const digitalTwin = await this.sdk.document.get(engineId, this.target, params.id);
|
|
44
|
+
const searchQuery = this.prepareMeasureSearch(params);
|
|
42
45
|
const exportParams = {
|
|
43
|
-
id:
|
|
46
|
+
id: params.id,
|
|
44
47
|
model: digitalTwin._source.model,
|
|
45
48
|
query: searchQuery,
|
|
46
|
-
sort,
|
|
47
|
-
target: this.target,
|
|
49
|
+
sort: params.sort ?? { measuredAt: "desc" },
|
|
48
50
|
};
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
return { link };
|
|
51
|
+
return super.prepareExport(engineId, user, exportParams);
|
|
52
|
+
}
|
|
53
|
+
formatHit(columns, hit) {
|
|
54
|
+
return columns.map(({ header: measureName, isMeasure, path }) => {
|
|
55
|
+
if (isMeasure &&
|
|
56
|
+
this.target === plugin_1.InternalCollection.ASSETS &&
|
|
57
|
+
hit._source.asset?.measureName !== measureName) {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
return lodash_1.default.get(hit, path, null);
|
|
61
|
+
});
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
64
|
* Retrieve a prepared export and write each document as a CSV in the stream
|
|
@@ -66,16 +66,17 @@ class MeasureExporter {
|
|
|
66
66
|
* This method never returns a rejected promise, but write potential error in
|
|
67
67
|
* the stream.
|
|
68
68
|
*/
|
|
69
|
-
async sendExport(
|
|
69
|
+
async sendExport(engineId, exportId) {
|
|
70
70
|
try {
|
|
71
|
-
const { query, sort, model
|
|
72
|
-
|
|
73
|
-
const
|
|
74
|
-
const
|
|
71
|
+
const { query, sort, model } = await this.getExport(engineId, exportId);
|
|
72
|
+
const result = await this.sdk.document.search(engineId, plugin_1.InternalCollection.MEASURES, { query, sort }, { lang: "koncorde", size: 200 });
|
|
73
|
+
const targetModel = this.target === plugin_1.InternalCollection.ASSETS ? "asset" : "device";
|
|
74
|
+
const engine = await this.getEngine(engineId);
|
|
75
|
+
const modelDocument = await (0, shared_1.ask)(`ask:device-manager:model:${targetModel}:get`, {
|
|
75
76
|
engineGroup: engine.group,
|
|
76
77
|
model,
|
|
77
78
|
});
|
|
78
|
-
const measureColumns = await this.generateMeasureColumns(modelDocument[
|
|
79
|
+
const measureColumns = await this.generateMeasureColumns(modelDocument[targetModel].measures);
|
|
79
80
|
const columns = [
|
|
80
81
|
{ header: "Payload Id", path: "_id" },
|
|
81
82
|
{ header: "Measured At", path: "_source.measuredAt" },
|
|
@@ -86,29 +87,12 @@ class MeasureExporter {
|
|
|
86
87
|
{ header: "Asset Model", path: "_source.asset.model" },
|
|
87
88
|
...measureColumns,
|
|
88
89
|
];
|
|
89
|
-
stream.
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
stream.write((0, sync_1.stringify)([
|
|
93
|
-
columns.map(({ header: measureName, isMeasure, path }) => {
|
|
94
|
-
if (isMeasure &&
|
|
95
|
-
target === "asset" &&
|
|
96
|
-
hit._source.asset?.measureName !== measureName) {
|
|
97
|
-
return null;
|
|
98
|
-
}
|
|
99
|
-
return lodash_1.default.get(hit, path, null);
|
|
100
|
-
}),
|
|
101
|
-
]));
|
|
102
|
-
}
|
|
103
|
-
result = await result.next();
|
|
104
|
-
}
|
|
105
|
-
await this.sdk.ms.del(this.exportRedisKey(exportId));
|
|
90
|
+
const stream = this.getExportStream(result, columns);
|
|
91
|
+
await this.sdk.ms.del(this.exportRedisKey(engineId, exportId));
|
|
92
|
+
return stream;
|
|
106
93
|
}
|
|
107
94
|
catch (error) {
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
finally {
|
|
111
|
-
stream.end();
|
|
95
|
+
this.log.error(error);
|
|
112
96
|
}
|
|
113
97
|
}
|
|
114
98
|
async generateMeasureColumns(documentMeasures) {
|
|
@@ -155,23 +139,10 @@ class MeasureExporter {
|
|
|
155
139
|
}
|
|
156
140
|
return measures;
|
|
157
141
|
}
|
|
158
|
-
|
|
159
|
-
const exportParams = await this.sdk.ms.get(this.exportRedisKey(exportId));
|
|
160
|
-
if (!exportParams) {
|
|
161
|
-
throw new kuzzle_1.NotFoundError(`Export "${exportId}" not found or expired.`);
|
|
162
|
-
}
|
|
163
|
-
return JSON.parse(exportParams);
|
|
164
|
-
}
|
|
165
|
-
exportRedisKey(exportId) {
|
|
166
|
-
return `exports:measures:${this.engineId}:${exportId}`;
|
|
167
|
-
}
|
|
168
|
-
async prepareMeasureSearch(digitalTwinId, startAt, endAt, query, type) {
|
|
142
|
+
prepareMeasureSearch(params) {
|
|
169
143
|
if (!this.target) {
|
|
170
144
|
throw new kuzzle_1.InternalError('Missing "target" parameter');
|
|
171
145
|
}
|
|
172
|
-
const digitalTwin = await this.sdk.document.get(this.engineId, this.target === "asset"
|
|
173
|
-
? plugin_1.InternalCollection.ASSETS
|
|
174
|
-
: plugin_1.InternalCollection.DEVICES, digitalTwinId);
|
|
175
146
|
const measuredAtRange = {
|
|
176
147
|
range: {
|
|
177
148
|
measuredAt: {
|
|
@@ -180,36 +151,32 @@ class MeasureExporter {
|
|
|
180
151
|
},
|
|
181
152
|
},
|
|
182
153
|
};
|
|
183
|
-
if (startAt) {
|
|
184
|
-
measuredAtRange.range.measuredAt.gte = new Date(startAt).getTime();
|
|
154
|
+
if (params.startAt) {
|
|
155
|
+
measuredAtRange.range.measuredAt.gte = new Date(params.startAt).getTime();
|
|
185
156
|
}
|
|
186
|
-
if (endAt) {
|
|
187
|
-
measuredAtRange.range.measuredAt.lte = new Date(endAt).getTime();
|
|
157
|
+
if (params.endAt) {
|
|
158
|
+
measuredAtRange.range.measuredAt.lte = new Date(params.endAt).getTime();
|
|
188
159
|
}
|
|
189
160
|
const searchQuery = {
|
|
190
161
|
and: [measuredAtRange],
|
|
191
162
|
};
|
|
192
|
-
if (this.target ===
|
|
163
|
+
if (this.target === plugin_1.InternalCollection.ASSETS) {
|
|
193
164
|
searchQuery.and.push({
|
|
194
|
-
equals: { "asset._id":
|
|
165
|
+
equals: { "asset._id": params.id },
|
|
195
166
|
});
|
|
196
167
|
}
|
|
197
168
|
else {
|
|
198
169
|
searchQuery.and.push({
|
|
199
|
-
equals: { "origin._id":
|
|
170
|
+
equals: { "origin._id": params.id },
|
|
200
171
|
});
|
|
201
172
|
}
|
|
202
|
-
if (type) {
|
|
203
|
-
searchQuery.and.push({ equals: { type } });
|
|
173
|
+
if (params.type) {
|
|
174
|
+
searchQuery.and.push({ equals: { type: params.type } });
|
|
204
175
|
}
|
|
205
|
-
if (query) {
|
|
206
|
-
searchQuery.and.push(query);
|
|
176
|
+
if (params.query) {
|
|
177
|
+
searchQuery.and.push(params.query);
|
|
207
178
|
}
|
|
208
|
-
return
|
|
209
|
-
}
|
|
210
|
-
async getEngine() {
|
|
211
|
-
const engine = await this.sdk.document.get(this.plugin.config.adminIndex, plugin_1.InternalCollection.CONFIG, `engine-device-manager--${this.engineId}`);
|
|
212
|
-
return engine._source.engine;
|
|
179
|
+
return searchQuery;
|
|
213
180
|
}
|
|
214
181
|
}
|
|
215
182
|
exports.MeasureExporter = MeasureExporter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MeasureExporter.js","sourceRoot":"","sources":["../../../../lib/modules/measure/MeasureExporter.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"MeasureExporter.js","sourceRoot":"","sources":["../../../../lib/modules/measure/MeasureExporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -130,6 +130,7 @@ class MeasureService {
|
|
|
130
130
|
if (!device._source.measures) {
|
|
131
131
|
device._source.measures = {};
|
|
132
132
|
}
|
|
133
|
+
let lastMeasuredAt = 0;
|
|
133
134
|
for (const measurement of measurements) {
|
|
134
135
|
if (measurement.origin.type === "computed") {
|
|
135
136
|
continue;
|
|
@@ -140,6 +141,9 @@ class MeasureService {
|
|
|
140
141
|
previousMeasure.measuredAt >= measurement.measuredAt) {
|
|
141
142
|
continue;
|
|
142
143
|
}
|
|
144
|
+
if (measurement.measuredAt > lastMeasuredAt) {
|
|
145
|
+
lastMeasuredAt = measurement.measuredAt;
|
|
146
|
+
}
|
|
143
147
|
device._source.measures[measureName] = {
|
|
144
148
|
measuredAt: measurement.measuredAt,
|
|
145
149
|
name: measureName,
|
|
@@ -149,6 +153,7 @@ class MeasureService {
|
|
|
149
153
|
values: measurement.values,
|
|
150
154
|
};
|
|
151
155
|
}
|
|
156
|
+
device._source.lastMeasuredAt = lastMeasuredAt;
|
|
152
157
|
}
|
|
153
158
|
// @todo there shouldn't be any logic related to asset historization here, but no other choices for now. It needs to be re-architected
|
|
154
159
|
/**
|
|
@@ -162,6 +167,7 @@ class MeasureService {
|
|
|
162
167
|
if (!asset._source.measures) {
|
|
163
168
|
asset._source.measures = {};
|
|
164
169
|
}
|
|
170
|
+
let lastMeasuredAt = 0;
|
|
165
171
|
for (const measurement of measurements) {
|
|
166
172
|
if (measurement.origin.type === "computed") {
|
|
167
173
|
continue;
|
|
@@ -180,6 +186,9 @@ class MeasureService {
|
|
|
180
186
|
previousMeasure.measuredAt >= measurement.measuredAt) {
|
|
181
187
|
continue;
|
|
182
188
|
}
|
|
189
|
+
if (measurement.measuredAt > lastMeasuredAt) {
|
|
190
|
+
lastMeasuredAt = measurement.measuredAt;
|
|
191
|
+
}
|
|
183
192
|
asset._source.measures[measureName] = {
|
|
184
193
|
measuredAt: measurement.measuredAt,
|
|
185
194
|
name: measureName,
|
|
@@ -190,6 +199,7 @@ class MeasureService {
|
|
|
190
199
|
};
|
|
191
200
|
assetStates.set(measurement.measuredAt, JSON.parse(JSON.stringify(asset)));
|
|
192
201
|
}
|
|
202
|
+
asset._source.lastMeasuredAt = lastMeasuredAt;
|
|
193
203
|
return assetStates;
|
|
194
204
|
}
|
|
195
205
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MeasureService.js","sourceRoot":"","sources":["../../../../lib/modules/measure/MeasureService.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"MeasureService.js","sourceRoot":"","sources":["../../../../lib/modules/measure/MeasureService.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./services"), exports);
|
|
17
18
|
__exportStar(require("./Module"), exports);
|
|
18
19
|
__exportStar(require("./types/DigitalTwinContent"), exports);
|
|
19
20
|
__exportStar(require("./types/Metadata"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/shared/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,6DAA2C;AAC3C,mDAAiC;AACjC,0DAAwC;AACxC,qDAAmC;AACnC,+CAA6B;AAC7B,wDAAsC;AACtC,8CAA4B;AAC5B,oDAAkC;AAClC,qDAAmC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/shared/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,2CAAyB;AACzB,6DAA2C;AAC3C,mDAAiC;AACjC,0DAAwC;AACxC,qDAAmC;AACnC,+CAA6B;AAC7B,wDAAsC;AACtC,8CAA4B;AAC5B,oDAAkC;AAClC,qDAAmC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { UUID } from "node:crypto";
|
|
4
|
+
import { PassThrough, Readable } from "node:stream";
|
|
5
|
+
import { JSONObject, KDocumentContentGeneric, KHit, SearchResult, User } from "kuzzle";
|
|
6
|
+
import { EngineContent } from "kuzzle-plugin-commons";
|
|
7
|
+
import { DeviceManagerPlugin, InternalCollection } from "../../plugin";
|
|
8
|
+
export interface ExporterOption {
|
|
9
|
+
/**
|
|
10
|
+
* Expiration time of export in seconds before being invalid
|
|
11
|
+
*/
|
|
12
|
+
expireTime: number;
|
|
13
|
+
}
|
|
14
|
+
export interface ExportParams {
|
|
15
|
+
query: JSONObject;
|
|
16
|
+
sort?: JSONObject;
|
|
17
|
+
}
|
|
18
|
+
export interface Column {
|
|
19
|
+
header: string;
|
|
20
|
+
path: string;
|
|
21
|
+
isMeasure?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export declare abstract class AbstractExporter<P extends ExportParams = ExportParams> {
|
|
24
|
+
protected plugin: DeviceManagerPlugin;
|
|
25
|
+
protected target: InternalCollection;
|
|
26
|
+
protected config: ExporterOption;
|
|
27
|
+
constructor(plugin: DeviceManagerPlugin, target: InternalCollection, config?: Partial<ExporterOption>);
|
|
28
|
+
protected get sdk(): import("kuzzle").EmbeddedSDK;
|
|
29
|
+
protected get ms(): any;
|
|
30
|
+
protected get log(): {
|
|
31
|
+
debug: (message: any) => void;
|
|
32
|
+
error: (message: any) => void;
|
|
33
|
+
info: (message: any) => void;
|
|
34
|
+
silly: (message: any) => void;
|
|
35
|
+
verbose: (message: any) => void;
|
|
36
|
+
warn: (message: any) => void;
|
|
37
|
+
};
|
|
38
|
+
protected getEngine(engineId: string): Promise<EngineContent>;
|
|
39
|
+
protected abstract exportRedisKey(engineId: string, exportId: string): string;
|
|
40
|
+
protected abstract getLink(engineId: string, exportId: UUID, params: P): string;
|
|
41
|
+
/**
|
|
42
|
+
* Retrieve a prepared export and write each document as a CSV in the stream
|
|
43
|
+
*
|
|
44
|
+
* This method never returns a rejected promise, but write potential error in
|
|
45
|
+
* the stream.
|
|
46
|
+
*/
|
|
47
|
+
abstract sendExport(engineId: string, exportId: string): Promise<Readable>;
|
|
48
|
+
prepareExport(engineId: string, user: User, params: P): Promise<string>;
|
|
49
|
+
protected formatHit(columns: Column[], hit: KHit<KDocumentContentGeneric>): string[];
|
|
50
|
+
getExport(engineId: string, exportId: string): Promise<P>;
|
|
51
|
+
getExportStream(request: SearchResult<KHit<KDocumentContentGeneric>>, columns: Column[]): Promise<PassThrough>;
|
|
52
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AbstractExporter = void 0;
|
|
7
|
+
const node_crypto_1 = require("node:crypto");
|
|
8
|
+
const node_stream_1 = require("node:stream");
|
|
9
|
+
const sync_1 = require("csv-stringify/sync");
|
|
10
|
+
const kuzzle_1 = require("kuzzle");
|
|
11
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
12
|
+
const plugin_1 = require("../../plugin");
|
|
13
|
+
class AbstractExporter {
|
|
14
|
+
constructor(plugin, target, config = {}) {
|
|
15
|
+
this.plugin = plugin;
|
|
16
|
+
this.target = target;
|
|
17
|
+
this.config = {
|
|
18
|
+
expireTime: 2 * 60,
|
|
19
|
+
};
|
|
20
|
+
if (Object.keys(config).length > 0) {
|
|
21
|
+
this.config = {
|
|
22
|
+
...this.config,
|
|
23
|
+
...config,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
get sdk() {
|
|
28
|
+
return this.plugin.context.accessors.sdk;
|
|
29
|
+
}
|
|
30
|
+
get ms() {
|
|
31
|
+
return this.sdk.ms;
|
|
32
|
+
}
|
|
33
|
+
get log() {
|
|
34
|
+
return this.plugin.context.log;
|
|
35
|
+
}
|
|
36
|
+
async getEngine(engineId) {
|
|
37
|
+
const engine = await this.sdk.document.get(this.plugin.config.adminIndex, plugin_1.InternalCollection.CONFIG, `engine-device-manager--${engineId}`);
|
|
38
|
+
return engine._source.engine;
|
|
39
|
+
}
|
|
40
|
+
async prepareExport(engineId, user, params) {
|
|
41
|
+
const exportId = (0, node_crypto_1.randomUUID)();
|
|
42
|
+
await this.ms.setex(this.exportRedisKey(engineId, exportId), JSON.stringify(params), this.config.expireTime);
|
|
43
|
+
let link = this.getLink(engineId, exportId, params);
|
|
44
|
+
if (user._id !== "-1") {
|
|
45
|
+
const { result } = await this.sdk.as(user).query({
|
|
46
|
+
action: "createToken",
|
|
47
|
+
controller: "auth",
|
|
48
|
+
expiresIn: this.config.expireTime * 1000,
|
|
49
|
+
singleUse: true,
|
|
50
|
+
});
|
|
51
|
+
link += `?jwt=${result.token}`;
|
|
52
|
+
}
|
|
53
|
+
return link;
|
|
54
|
+
}
|
|
55
|
+
formatHit(columns, hit) {
|
|
56
|
+
return columns.map(({ path }) => lodash_1.default.get(hit, path, null));
|
|
57
|
+
}
|
|
58
|
+
async getExport(engineId, exportId) {
|
|
59
|
+
const exportParams = await this.sdk.ms.get(this.exportRedisKey(engineId, exportId));
|
|
60
|
+
if (!exportParams) {
|
|
61
|
+
throw new kuzzle_1.NotFoundError(`Export "${exportId}" not found or expired.`);
|
|
62
|
+
}
|
|
63
|
+
return JSON.parse(exportParams);
|
|
64
|
+
}
|
|
65
|
+
async getExportStream(request, columns) {
|
|
66
|
+
const stream = new node_stream_1.PassThrough();
|
|
67
|
+
let result = request;
|
|
68
|
+
try {
|
|
69
|
+
stream.write((0, sync_1.stringify)([columns.map((column) => column.header)]));
|
|
70
|
+
while (result) {
|
|
71
|
+
for (const hit of result.hits) {
|
|
72
|
+
stream.write((0, sync_1.stringify)([this.formatHit(columns, hit)]));
|
|
73
|
+
}
|
|
74
|
+
result = await result.next();
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
stream.write(error.message);
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
stream.end();
|
|
82
|
+
}
|
|
83
|
+
return stream;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.AbstractExporter = AbstractExporter;
|
|
87
|
+
//# sourceMappingURL=AbstractExporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractExporter.js","sourceRoot":"","sources":["../../../../../lib/modules/shared/services/AbstractExporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { UUID } from "node:crypto";
|
|
4
|
+
import { AbstractExporter } from "./AbstractExporter";
|
|
5
|
+
export declare class DigitalTwinExporter extends AbstractExporter {
|
|
6
|
+
protected exportRedisKey(engineId: string, exportId: string): string;
|
|
7
|
+
protected getLink(engineId: string, exportId: UUID): string;
|
|
8
|
+
sendExport(engineId: string, exportId: string): Promise<import("stream").PassThrough>;
|
|
9
|
+
/**
|
|
10
|
+
* Get the deduplicated Named Measures get from models
|
|
11
|
+
*/
|
|
12
|
+
private getNamedMeasures;
|
|
13
|
+
private generateMeasureColumns;
|
|
14
|
+
}
|