kuzzle-device-manager 2.11.0-dev.1 → 3.0.0-3-dev.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.
Files changed (193) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.js +1 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/modules/asset/AssetModule.d.ts +1 -4
  5. package/dist/lib/modules/asset/AssetModule.js +0 -13
  6. package/dist/lib/modules/asset/AssetModule.js.map +1 -1
  7. package/dist/lib/modules/asset/AssetService.d.ts +7 -4
  8. package/dist/lib/modules/asset/AssetService.js +119 -50
  9. package/dist/lib/modules/asset/AssetService.js.map +1 -1
  10. package/dist/lib/modules/asset/AssetsController.d.ts +25 -7
  11. package/dist/lib/modules/asset/AssetsController.js +123 -36
  12. package/dist/lib/modules/asset/AssetsController.js.map +1 -1
  13. package/dist/lib/modules/asset/collections/assetsMappings.js +10 -15
  14. package/dist/lib/modules/asset/collections/assetsMappings.js.map +1 -1
  15. package/dist/lib/modules/asset/exports.d.ts +0 -4
  16. package/dist/lib/modules/asset/exports.js +0 -4
  17. package/dist/lib/modules/asset/exports.js.map +1 -1
  18. package/dist/lib/modules/asset/index.d.ts +1 -3
  19. package/dist/lib/modules/asset/index.js +1 -3
  20. package/dist/lib/modules/asset/index.js.map +1 -1
  21. package/dist/lib/modules/asset/model/AssetSerializer.js +0 -1
  22. package/dist/lib/modules/asset/model/AssetSerializer.js.map +1 -1
  23. package/dist/lib/modules/asset/roles/RoleAssetsAdmin.js +1 -1
  24. package/dist/lib/modules/asset/roles/RoleAssetsAdmin.js.map +1 -1
  25. package/dist/lib/modules/asset/types/AssetApi.d.ts +124 -9
  26. package/dist/lib/modules/asset/types/AssetContent.d.ts +9 -16
  27. package/dist/lib/modules/asset/types/AssetHistoryContent.d.ts +4 -11
  28. package/dist/lib/modules/decoder/DecodedPayload.d.ts +2 -0
  29. package/dist/lib/modules/decoder/DecodedPayload.js +13 -2
  30. package/dist/lib/modules/decoder/DecodedPayload.js.map +1 -1
  31. package/dist/lib/modules/decoder/Decoder.d.ts +1 -1
  32. package/dist/lib/modules/decoder/Decoder.js.map +1 -1
  33. package/dist/lib/modules/decoder/DecoderModule.js.map +1 -1
  34. package/dist/lib/modules/decoder/DecodersController.d.ts +4 -1
  35. package/dist/lib/modules/decoder/DecodersController.js +3 -0
  36. package/dist/lib/modules/decoder/DecodersController.js.map +1 -1
  37. package/dist/lib/modules/decoder/DecodersRegister.js +4 -1
  38. package/dist/lib/modules/decoder/DecodersRegister.js.map +1 -1
  39. package/dist/lib/modules/decoder/PayloadService.d.ts +1 -0
  40. package/dist/lib/modules/decoder/PayloadService.js +136 -26
  41. package/dist/lib/modules/decoder/PayloadService.js.map +1 -1
  42. package/dist/lib/modules/decoder/PayloadsController.js +1 -1
  43. package/dist/lib/modules/decoder/PayloadsController.js.map +1 -1
  44. package/dist/lib/modules/device/DeviceService.d.ts +6 -47
  45. package/dist/lib/modules/device/DeviceService.js +157 -291
  46. package/dist/lib/modules/device/DeviceService.js.map +1 -1
  47. package/dist/lib/modules/device/DevicesController.d.ts +5 -5
  48. package/dist/lib/modules/device/DevicesController.js +35 -23
  49. package/dist/lib/modules/device/DevicesController.js.map +1 -1
  50. package/dist/lib/modules/device/collections/deviceMappings.d.ts +6 -0
  51. package/dist/lib/modules/device/collections/deviceMappings.js +76 -6
  52. package/dist/lib/modules/device/collections/deviceMappings.js.map +1 -1
  53. package/dist/lib/modules/device/roles/RoleDevicesAdmin.d.ts +2 -2
  54. package/dist/lib/modules/device/roles/RoleDevicesAdmin.js +7 -4
  55. package/dist/lib/modules/device/roles/RoleDevicesAdmin.js.map +1 -1
  56. package/dist/lib/modules/device/roles/specificRoles/RoleDevicesAssetAssociation.js +4 -1
  57. package/dist/lib/modules/device/roles/specificRoles/RoleDevicesAssetAssociation.js.map +1 -1
  58. package/dist/lib/modules/device/types/DeviceApi.d.ts +69 -41
  59. package/dist/lib/modules/device/types/DeviceContent.d.ts +56 -5
  60. package/dist/lib/modules/device/types/DeviceEvents.d.ts +9 -24
  61. package/dist/lib/modules/group/GroupsController.d.ts +37 -0
  62. package/dist/lib/modules/group/GroupsController.js +472 -0
  63. package/dist/lib/modules/group/GroupsController.js.map +1 -0
  64. package/dist/lib/modules/group/GroupsModule.d.ts +10 -0
  65. package/dist/lib/modules/group/GroupsModule.js +25 -0
  66. package/dist/lib/modules/group/GroupsModule.js.map +1 -0
  67. package/dist/lib/modules/group/GroupsService.d.ts +118 -0
  68. package/dist/lib/modules/group/GroupsService.js +518 -0
  69. package/dist/lib/modules/group/GroupsService.js.map +1 -0
  70. package/dist/lib/modules/group/collections/groupsMappings.d.ts +2 -0
  71. package/dist/lib/modules/{asset/collections/assetsGroupsMapping.js → group/collections/groupsMappings.js} +4 -12
  72. package/dist/lib/modules/group/collections/groupsMappings.js.map +1 -0
  73. package/dist/lib/modules/group/exports.d.ts +5 -0
  74. package/dist/lib/modules/group/exports.js +22 -0
  75. package/dist/lib/modules/group/exports.js.map +1 -0
  76. package/dist/lib/modules/group/index.d.ts +4 -0
  77. package/dist/lib/modules/{measure/measures → group}/index.js +4 -5
  78. package/dist/lib/modules/group/index.js.map +1 -0
  79. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsAdmin.d.ts → group/roles/RoleGroupsAdmin.d.ts} +3 -3
  80. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsAdmin.js → group/roles/RoleGroupsAdmin.js} +7 -7
  81. package/dist/lib/modules/group/roles/RoleGroupsAdmin.js.map +1 -0
  82. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsReader.d.ts → group/roles/RoleGroupsReader.d.ts} +3 -3
  83. package/dist/lib/modules/{asset/roles/RoleAssetsGroupsReader.js → group/roles/RoleGroupsReader.js} +7 -7
  84. package/dist/lib/modules/group/roles/RoleGroupsReader.js.map +1 -0
  85. package/dist/lib/modules/group/types/GroupContent.d.ts +10 -0
  86. package/dist/lib/modules/{asset/types/AssetGroupsApi.js → group/types/GroupContent.js} +1 -1
  87. package/dist/lib/modules/group/types/GroupContent.js.map +1 -0
  88. package/dist/lib/modules/group/types/GroupsApi.d.ts +141 -0
  89. package/dist/lib/modules/{asset/types/AssetGroupContent.js → group/types/GroupsApi.js} +1 -1
  90. package/dist/lib/modules/group/types/GroupsApi.js.map +1 -0
  91. package/dist/lib/modules/measure/MeasureExporter.js +14 -6
  92. package/dist/lib/modules/measure/MeasureExporter.js.map +1 -1
  93. package/dist/lib/modules/measure/MeasureService.d.ts +11 -43
  94. package/dist/lib/modules/measure/MeasureService.js +86 -375
  95. package/dist/lib/modules/measure/MeasureService.js.map +1 -1
  96. package/dist/lib/modules/measure/MeasureSourcesBuilder.d.ts +1 -2
  97. package/dist/lib/modules/measure/MeasureSourcesBuilder.js +5 -15
  98. package/dist/lib/modules/measure/MeasureSourcesBuilder.js.map +1 -1
  99. package/dist/lib/modules/measure/MeasureTargetBuilder.d.ts +1 -1
  100. package/dist/lib/modules/measure/MeasureTargetBuilder.js +2 -2
  101. package/dist/lib/modules/measure/MeasureTargetBuilder.js.map +1 -1
  102. package/dist/lib/modules/measure/collections/measuresMappings.d.ts +2 -91
  103. package/dist/lib/modules/measure/collections/measuresMappings.js +7 -11
  104. package/dist/lib/modules/measure/collections/measuresMappings.js.map +1 -1
  105. package/dist/lib/modules/measure/exports.d.ts +0 -1
  106. package/dist/lib/modules/measure/exports.js +0 -1
  107. package/dist/lib/modules/measure/exports.js.map +1 -1
  108. package/dist/lib/modules/measure/index.d.ts +0 -1
  109. package/dist/lib/modules/measure/index.js +0 -1
  110. package/dist/lib/modules/measure/index.js.map +1 -1
  111. package/dist/lib/modules/measure/types/MeasureContent.d.ts +9 -2
  112. package/dist/lib/modules/measure/types/MeasureEvents.d.ts +6 -149
  113. package/dist/lib/modules/measure/types/MeasureSources.d.ts +5 -0
  114. package/dist/lib/modules/measure/types/MeasureSources.js.map +1 -1
  115. package/dist/lib/modules/measure/types/MeasureTarget.d.ts +1 -1
  116. package/dist/lib/modules/measure/types/MeasureTarget.js +1 -1
  117. package/dist/lib/modules/measure/types/MeasureTarget.js.map +1 -1
  118. package/dist/lib/modules/model/ModelModule.js.map +1 -1
  119. package/dist/lib/modules/model/ModelSerializer.js +15 -0
  120. package/dist/lib/modules/model/ModelSerializer.js.map +1 -1
  121. package/dist/lib/modules/model/ModelService.d.ts +20 -14
  122. package/dist/lib/modules/model/ModelService.js +301 -117
  123. package/dist/lib/modules/model/ModelService.js.map +1 -1
  124. package/dist/lib/modules/model/ModelsController.d.ts +1 -1
  125. package/dist/lib/modules/model/ModelsController.js +32 -19
  126. package/dist/lib/modules/model/ModelsController.js.map +1 -1
  127. package/dist/lib/modules/model/ModelsRegister.d.ts +6 -5
  128. package/dist/lib/modules/model/ModelsRegister.js +10 -8
  129. package/dist/lib/modules/model/ModelsRegister.js.map +1 -1
  130. package/dist/lib/modules/model/collections/modelsMappings.js +20 -1
  131. package/dist/lib/modules/model/collections/modelsMappings.js.map +1 -1
  132. package/dist/lib/modules/model/types/ModelApi.d.ts +14 -9
  133. package/dist/lib/modules/model/types/ModelContent.d.ts +34 -3
  134. package/dist/lib/modules/model/types/ModelContent.js.map +1 -1
  135. package/dist/lib/modules/model/types/ModelDefinition.d.ts +6 -2
  136. package/dist/lib/modules/model/types/ModelEvents.d.ts +3 -1
  137. package/dist/lib/modules/plugin/DeviceManagerEngine.d.ts +15 -6
  138. package/dist/lib/modules/plugin/DeviceManagerEngine.js +151 -54
  139. package/dist/lib/modules/plugin/DeviceManagerEngine.js.map +1 -1
  140. package/dist/lib/modules/plugin/DeviceManagerPlugin.d.ts +10 -8
  141. package/dist/lib/modules/plugin/DeviceManagerPlugin.js +41 -44
  142. package/dist/lib/modules/plugin/DeviceManagerPlugin.js.map +1 -1
  143. package/dist/lib/modules/plugin/types/DeviceManagerConfiguration.d.ts +9 -14
  144. package/dist/lib/modules/plugin/types/InternalCollection.d.ts +1 -1
  145. package/dist/lib/modules/plugin/types/InternalCollection.js +1 -1
  146. package/dist/lib/modules/plugin/types/InternalCollection.js.map +1 -1
  147. package/dist/lib/modules/plugin/types/exports.d.ts +1 -0
  148. package/dist/lib/modules/plugin/types/exports.js +1 -0
  149. package/dist/lib/modules/plugin/types/exports.js.map +1 -1
  150. package/dist/lib/modules/shared/services/AbstractExporter.d.ts +3 -1
  151. package/dist/lib/modules/shared/services/AbstractExporter.js +7 -3
  152. package/dist/lib/modules/shared/services/AbstractExporter.js.map +1 -1
  153. package/dist/lib/modules/shared/services/BaseService.js.map +1 -1
  154. package/dist/lib/modules/shared/services/DigitalTwinExporter.d.ts +6 -1
  155. package/dist/lib/modules/shared/services/DigitalTwinExporter.js +49 -7
  156. package/dist/lib/modules/shared/services/DigitalTwinExporter.js.map +1 -1
  157. package/dist/lib/modules/shared/services/DigitalTwinService.d.ts +70 -2
  158. package/dist/lib/modules/shared/services/DigitalTwinService.js +309 -1
  159. package/dist/lib/modules/shared/services/DigitalTwinService.js.map +1 -1
  160. package/dist/lib/modules/shared/types/DigitalTwinContent.d.ts +4 -5
  161. package/dist/lib/modules/shared/types/DigitalTwinEvents.d.ts +30 -0
  162. package/package.json +15 -9
  163. package/dist/lib/modules/asset/AssetsGroupsController.d.ts +0 -24
  164. package/dist/lib/modules/asset/AssetsGroupsController.js +0 -239
  165. package/dist/lib/modules/asset/AssetsGroupsController.js.map +0 -1
  166. package/dist/lib/modules/asset/AssetsGroupsService.d.ts +0 -49
  167. package/dist/lib/modules/asset/AssetsGroupsService.js +0 -172
  168. package/dist/lib/modules/asset/AssetsGroupsService.js.map +0 -1
  169. package/dist/lib/modules/asset/collections/assetsGroupsMapping.d.ts +0 -2
  170. package/dist/lib/modules/asset/collections/assetsGroupsMapping.js.map +0 -1
  171. package/dist/lib/modules/asset/roles/RoleAssetsGroupsAdmin.js.map +0 -1
  172. package/dist/lib/modules/asset/roles/RoleAssetsGroupsReader.js.map +0 -1
  173. package/dist/lib/modules/asset/types/AssetGroupContent.d.ts +0 -11
  174. package/dist/lib/modules/asset/types/AssetGroupContent.js.map +0 -1
  175. package/dist/lib/modules/asset/types/AssetGroupsApi.d.ts +0 -59
  176. package/dist/lib/modules/asset/types/AssetGroupsApi.js.map +0 -1
  177. package/dist/lib/modules/measure/measures/BatteryMeasure.d.ts +0 -5
  178. package/dist/lib/modules/measure/measures/BatteryMeasure.js +0 -19
  179. package/dist/lib/modules/measure/measures/BatteryMeasure.js.map +0 -1
  180. package/dist/lib/modules/measure/measures/HumidityMeasure.d.ts +0 -5
  181. package/dist/lib/modules/measure/measures/HumidityMeasure.js +0 -19
  182. package/dist/lib/modules/measure/measures/HumidityMeasure.js.map +0 -1
  183. package/dist/lib/modules/measure/measures/MovementMeasure.d.ts +0 -5
  184. package/dist/lib/modules/measure/measures/MovementMeasure.js +0 -17
  185. package/dist/lib/modules/measure/measures/MovementMeasure.js.map +0 -1
  186. package/dist/lib/modules/measure/measures/PositionMeasure.d.ts +0 -10
  187. package/dist/lib/modules/measure/measures/PositionMeasure.js +0 -43
  188. package/dist/lib/modules/measure/measures/PositionMeasure.js.map +0 -1
  189. package/dist/lib/modules/measure/measures/TemperatureMeasure.d.ts +0 -5
  190. package/dist/lib/modules/measure/measures/TemperatureMeasure.js +0 -19
  191. package/dist/lib/modules/measure/measures/TemperatureMeasure.js.map +0 -1
  192. package/dist/lib/modules/measure/measures/index.d.ts +0 -5
  193. package/dist/lib/modules/measure/measures/index.js.map +0 -1
@@ -1,19 +1,15 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.MeasureService = void 0;
7
4
  const kuzzle_1 = require("kuzzle");
8
5
  const kuzzle_plugin_commons_1 = require("kuzzle-plugin-commons");
9
- const lodash_1 = __importDefault(require("lodash"));
10
6
  const asset_1 = require("../asset");
11
7
  const plugin_1 = require("../plugin");
12
8
  const shared_1 = require("../shared");
13
9
  const MeasureSources_1 = require("./types/MeasureSources");
14
10
  const MeasureSourcesBuilder_1 = require("./MeasureSourcesBuilder");
15
11
  const MeasureTarget_1 = require("./types/MeasureTarget");
16
- const MeasureTargetBuilder_1 = require("./MeasureTargetBuilder");
12
+ const lodash_1 = require("lodash");
17
13
  class MeasureService extends shared_1.BaseService {
18
14
  constructor(plugin, logger) {
19
15
  super(plugin);
@@ -22,54 +18,50 @@ class MeasureService extends shared_1.BaseService {
22
18
  if (!payload) {
23
19
  return;
24
20
  }
25
- if ((0, MeasureSources_1.isSourceApi)(payload.source) && (0, MeasureTarget_1.isTargetApi)(payload.target)) {
26
- await this.ingestApi(payload.source, payload.target, payload.measurements, payload.payloadUuids);
27
- }
28
- });
29
- (0, kuzzle_plugin_commons_1.onAsk)("device-manager:measures:ingest", async (payload) => {
30
- if (!payload) {
31
- return;
32
- }
33
- await this.ingest(payload.device, payload.measurements, payload.metadata, payload.payloadUuids);
21
+ const { target, measurements, source, payloadUuids } = payload;
22
+ await this.ingest(source, target, measurements, payloadUuids);
34
23
  });
35
24
  }
36
25
  /**
37
- * Register new measures from an API, updates :
26
+ * Register new measures updates :
38
27
  * - asset
39
28
  * - engine measures
40
29
  *
41
30
  * This method represents the ingestion pipeline:
42
31
  * - trigger events `before` (measure enrichment)
43
- * - save documents (measures and asset)
32
+ * - save documents (measures & device metadata)
44
33
  * - trigger events `after`
45
34
  */
46
- async ingestApi(source, target, measurements, payloadUuids) {
35
+ async ingest(source, target, measurements, payloadUuids) {
47
36
  const { id: dataSourceId } = source;
48
37
  const { indexId, assetId } = target;
49
- if (!measurements) {
50
- this.logger.warn(`No measurements provided for "${dataSourceId}" API measures ingest`);
38
+ if (!measurements || measurements.length === 0) {
39
+ this.app.log.warn(`No measurements provided for "${dataSourceId}" measures ingest`);
51
40
  return;
52
41
  }
53
- const assetDocument = await this.findAsset(indexId, assetId);
54
- if (!assetDocument) {
55
- throw new kuzzle_1.BadRequestError(`Asset "${assetId}" does not exists on index "${indexId}"`);
42
+ let measures, asset;
43
+ if ((0, MeasureTarget_1.isTargetApi)(target) && (0, MeasureSources_1.isSourceApi)(source)) {
44
+ const { asset: assetResult, measures: measuresResult } = await this.ingestApiMeasures(indexId, assetId, source, target, measurements, payloadUuids);
45
+ asset = assetResult;
46
+ measures = measuresResult;
47
+ }
48
+ else if ((0, MeasureSources_1.isSourceDevice)(source) &&
49
+ ((0, MeasureTarget_1.isTargetDevice)(target) || indexId === null)) {
50
+ const { asset: assetResult, measures: measuresResult } = await this.ingestDeviceMeasures(assetId, indexId, source, measurements, payloadUuids);
51
+ asset = assetResult;
52
+ measures = measuresResult;
53
+ }
54
+ else {
55
+ throw new kuzzle_1.BadRequestError(`Unable to ingest measure with context ${JSON.stringify({ asset, measures, source, target }, null, 2)}`);
56
56
  }
57
- const asset = assetDocument._source;
58
- const measures = await this.buildApiMeasures(source, assetDocument, measurements, payloadUuids, target.engineGroup);
59
- asset.measures || (asset.measures = {});
60
57
  /**
61
58
  * Event before starting to process new measures.
62
59
  *
63
60
  * Useful to enrich measures before they are saved.
64
61
  */
65
- await this.app.trigger("device-manager:measures:process:sourceBefore", { asset, measures, source, target });
66
- if (indexId) {
67
- await this.app.trigger(`engine:${indexId}:device-manager:measures:process:sourceBefore`, { asset, measures, source, target });
68
- }
69
- const assetStates = this.updateAssetMeasures(assetDocument, measures);
70
- await this.app.trigger("device-manager:measures:persist:sourceBefore", { asset, measures, source, target });
62
+ await this.app.trigger("device-manager:measures:process:before", { asset, measures, source, target });
71
63
  if (indexId) {
72
- await this.app.trigger(`engine:${indexId}:device-manager:measures:persist:sourceBefore`, { asset, measures, source, target });
64
+ await this.app.trigger(`engine:${indexId}:device-manager:measures:process:before`, { asset, measures, source, target });
73
65
  }
74
66
  const promises = [];
75
67
  if (indexId) {
@@ -80,233 +72,76 @@ class MeasureService extends shared_1.BaseService {
80
72
  throw new kuzzle_1.BadRequestError(`Cannot save measures: ${errors[0].reason}`);
81
73
  }
82
74
  }));
83
- promises.push(this.mutexUpdateAsset(indexId, assetId, asset));
84
- promises.push(this.historizeAssetStates(assetStates, indexId, JSON.parse(JSON.stringify(asset.metadata)), asset.metadata));
75
+ await Promise.all(promises);
76
+ }
77
+ else if ((0, MeasureSources_1.isSourceDevice)(source)) {
78
+ const deviceProvisioning = await this.sdk.document.get(this.config.platformIndex, plugin_1.InternalCollection.DEVICES, source.id);
79
+ const lastMeasures = [...deviceProvisioning._source.lastMeasures];
80
+ for (const measure of measures) {
81
+ lastMeasures.push({
82
+ measureName: measure.origin.measureName,
83
+ measuredAt: measure.measuredAt,
84
+ type: measure.type,
85
+ values: measure.values,
86
+ });
87
+ }
88
+ lastMeasures.sort((a, b) => b.measuredAt - a.measuredAt);
89
+ lastMeasures.splice(5);
90
+ await this.sdk.document.update(this.config.platformIndex, plugin_1.InternalCollection.DEVICES, source.id, {
91
+ lastMeasuredAt: lastMeasures[0].measuredAt,
92
+ lastMeasures,
93
+ });
85
94
  }
86
- await Promise.all(promises);
87
95
  /**
88
96
  * Event at the end of the measure process pipeline.
89
97
  *
90
98
  * Useful to trigger business rules like alerts
91
99
  *
92
- * @todo test this
93
100
  */
94
- await this.app.trigger("device-manager:measures:process:sourceAfter", { asset, measures, source, target });
101
+ await this.app.trigger("device-manager:measures:process:after", { asset, measures, source, target });
95
102
  if (indexId) {
96
- await this.app.trigger(`engine:${indexId}:device-manager:measures:process:sourceAfter`, { asset, measures, source, target });
103
+ await this.app.trigger(`engine:${indexId}:device-manager:measures:process:after`, { asset, measures, source, target });
97
104
  }
98
105
  }
99
- /**
100
- * Register new measures from a device, updates :
101
- * - admin device
102
- * - engine device
103
- * - linked asset
104
- * - engine measures
105
- *
106
- * A mutex ensure that a device can ingest one measure at a time.
107
- *
108
- * This method represents the ingestion pipeline:
109
- * - build measures documents and update digital twins (device and asset)
110
- * - trigger events `before` (measure enrichment)
111
- * - save documents (measures, device and asset)
112
- * - trigger events `after`
113
- *
114
- * @deprecated
115
- */
116
- async ingest(device, measurements, metadata, payloadUuids) {
117
- await (0, shared_1.lock)(`measure:ingest:${device._id}`, async () => {
118
- var _a;
119
- if (!measurements) {
120
- this.logger.warn(`Cannot find measurements for device "${device._source.reference}"`);
121
- return;
122
- }
123
- const { engineId, reference, model, assetId, lastMeasuredAt } = device._source;
124
- const asset = assetId ? await this.findAsset(engineId, assetId) : null;
125
- const assetContent = asset?._source;
126
- const originalAssetMetadata = asset === null
127
- ? {}
128
- : JSON.parse(JSON.stringify(asset._source.metadata));
129
- lodash_1.default.merge(device._source.metadata, metadata);
130
- const measures = this.buildMeasures(device, asset, measurements, payloadUuids);
131
- if (asset) {
132
- (_a = asset._source).measures || (_a.measures = {});
133
- }
134
- const source = (0, MeasureSourcesBuilder_1.toDeviceSource)(device._id, reference, model, device._source.metadata, lastMeasuredAt);
135
- const target = (0, MeasureTargetBuilder_1.toDeviceTarget)(device._source.engineId, device._source.assetId ?? undefined);
136
- /**
137
- * Event before starting to process new measures.
138
- *
139
- * Useful to enrich measures before they are saved.
140
- */
141
- await this.app.trigger("device-manager:measures:process:before", {
142
- asset,
143
- device,
144
- measures,
145
- });
146
- if (engineId) {
147
- await this.app.trigger(`engine:${engineId}:device-manager:measures:process:before`, { asset, device, measures });
148
- }
149
- /**
150
- * Here are the new process before triggers using sources
151
- *
152
- * Event before starting to process new measures.
153
- *
154
- * Useful to enrich measures before they are saved.
155
- */
156
- await this.app.trigger("device-manager:measures:process:sourceBefore", { asset: assetContent, measures, source, target });
157
- if (engineId) {
158
- await this.app.trigger(`engine:${engineId}:device-manager:measures:process:sourceBefore`, { asset: assetContent, measures, source, target });
159
- }
160
- await this.updateDeviceMeasures(device, measures);
161
- let assetStates = new Map();
162
- if (asset) {
163
- assetStates = await this.updateAssetMeasures(asset, measures);
164
- }
165
- await this.app.trigger("device-manager:measures:persist:before", {
166
- asset,
167
- device,
168
- measures,
169
- });
170
- if (engineId) {
171
- await this.app.trigger(`engine:${engineId}:device-manager:measures:persist:before`, { asset, device, measures });
172
- }
173
- /**
174
- * Here are the new persist before triggers using sources
175
- */
176
- await this.app.trigger("device-manager:measures:persist:sourceBefore", { asset: assetContent, measures, source, target });
177
- if (engineId) {
178
- await this.app.trigger(`engine:${engineId}:device-manager:measures:persist:sourceBefore`, { asset: assetContent, measures, source, target });
179
- }
180
- const promises = [];
181
- promises.push(this.sdk.document
182
- .update(this.config.adminIndex, plugin_1.InternalCollection.DEVICES, device._id, device._source)
183
- .catch((error) => {
184
- throw (0, shared_1.keepStack)(error, new kuzzle_1.BadRequestError(`Cannot update device "${device._id}": ${error.message}`));
185
- }));
186
- if (engineId) {
187
- promises.push(this.sdk.document
188
- .update(engineId, plugin_1.InternalCollection.DEVICES, device._id, device._source)
189
- .catch((error) => {
190
- throw (0, shared_1.keepStack)(error, new kuzzle_1.BadRequestError(`Cannot update engine device "${device._id}": ${error.message}`));
191
- }));
192
- promises.push(this.sdk.document
193
- .mCreate(engineId, plugin_1.InternalCollection.MEASURES, measures.map((measure) => ({ body: measure })))
194
- .then(({ errors }) => {
195
- if (errors.length !== 0) {
196
- throw new kuzzle_1.BadRequestError(`Cannot save measures: ${errors[0].reason}`);
197
- }
198
- }));
199
- if (asset) {
200
- promises.push(this.mutexUpdateAsset(engineId, asset._id, asset._source));
201
- promises.push(this.historizeAssetStates(assetStates, engineId, originalAssetMetadata, asset._source.metadata));
106
+ async buildDeviceMeasures(source, asset, measures, payloadUuids) {
107
+ const deviceMeasures = [];
108
+ for (const measure of measures) {
109
+ let assetContext = null;
110
+ if (asset !== null) {
111
+ const assetMeasureName = this.findAssetMeasureNameFromDevice(source.id, measure.measureName, asset._source);
112
+ if (assetMeasureName) {
113
+ assetContext = asset_1.AssetSerializer.measureContext(asset, assetMeasureName);
202
114
  }
203
115
  }
204
- await Promise.all(promises);
205
- /**
206
- * Event at the end of the measure process pipeline.
207
- *
208
- * Useful to trigger business rules like alerts
209
- *
210
- * @todo test this
211
- */
212
- await this.app.trigger("device-manager:measures:process:after", {
213
- asset,
214
- device,
215
- measures,
116
+ const measureSource = (0, MeasureSourcesBuilder_1.deviceSourceToOriginDevice)(source, measure.measureName, payloadUuids, (0, lodash_1.merge)(source.deviceMetadata, source.metadata));
117
+ deviceMeasures.push({
118
+ asset: assetContext,
119
+ measuredAt: measure.measuredAt,
120
+ origin: measureSource,
121
+ type: measure.type,
122
+ values: measure.values,
216
123
  });
217
- if (engineId) {
218
- await this.app.trigger(`engine:${engineId}:device-manager:measures:process:after`, { asset, device, measures });
219
- }
220
- /**
221
- * Here are the new process after triggers using sources
222
- *
223
- * Event at the end of the measure process pipeline.
224
- *
225
- * Useful to trigger business rules like alerts
226
- *
227
- * @todo test this
228
- */
229
- await this.app.trigger("device-manager:measures:process:sourceAfter", { asset: assetContent, measures, source, target });
230
- if (engineId) {
231
- await this.app.trigger(`engine:${engineId}:device-manager:measures:process:sourceAfter`, { asset: assetContent, measures, source, target });
232
- }
233
- });
234
- }
235
- updateDeviceMeasures(device, measurements) {
236
- if (!device._source.measures) {
237
- device._source.measures = {};
238
- }
239
- let lastMeasuredAt = device._source.lastMeasuredAt ?? 0;
240
- for (const measurement of measurements) {
241
- if (measurement.origin.type !== "device") {
242
- continue;
243
- }
244
- const measureName = measurement.origin.measureName;
245
- const previousMeasure = device._source.measures[measureName];
246
- if (previousMeasure &&
247
- previousMeasure.measuredAt >= measurement.measuredAt) {
248
- continue;
249
- }
250
- if (measurement.measuredAt > lastMeasuredAt) {
251
- lastMeasuredAt = measurement.measuredAt;
252
- }
253
- device._source.measures[measureName] = {
254
- measuredAt: measurement.measuredAt,
255
- name: measureName,
256
- originId: measurement.origin._id,
257
- payloadUuids: measurement.origin.payloadUuids,
258
- type: measurement.type,
259
- values: measurement.values,
260
- };
261
124
  }
262
- device._source.lastMeasuredAt = lastMeasuredAt;
125
+ return deviceMeasures;
263
126
  }
264
- // @todo there shouldn't be any logic related to asset historization here, but no other choices for now. It needs to be re-architected
265
- /**
266
- * Update asset with each non-null non-computed measures.
267
- *
268
- * @returns A map of each asset state by measuredAt timestamp.
269
- */
270
- updateAssetMeasures(asset, measurements) {
271
- // We use a Map in order to preserve the insertion order to avoid another sort
272
- const assetStates = new Map();
273
- if (!asset._source.measures) {
274
- asset._source.measures = {};
275
- }
276
- let lastMeasuredAt = asset._source.lastMeasuredAt ?? 0;
277
- for (const measurement of measurements) {
278
- if (measurement.origin.type === "computed") {
279
- continue;
280
- }
281
- if (measurement.asset === null) {
282
- continue;
283
- }
284
- const measureName = measurement.asset?.measureName ?? null;
285
- // The measurement was not present in the asset device links so it should
286
- // not be saved in the asset measures
287
- if (measureName === null) {
288
- continue;
289
- }
290
- const previousMeasure = asset._source.measures[measureName];
291
- if (previousMeasure &&
292
- previousMeasure.measuredAt >= measurement.measuredAt) {
293
- continue;
294
- }
295
- if (measurement.measuredAt > lastMeasuredAt) {
296
- lastMeasuredAt = measurement.measuredAt;
297
- }
298
- asset._source.measures[measureName] = {
299
- measuredAt: measurement.measuredAt,
300
- name: measureName,
301
- originId: measurement.origin._id,
302
- payloadUuids: measurement.origin.payloadUuids,
303
- type: measurement.type,
304
- values: measurement.values,
305
- };
306
- assetStates.set(measurement.measuredAt, JSON.parse(JSON.stringify(asset)));
127
+ async ingestDeviceMeasures(assetId, indexId, source, measurements, payloadUuids) {
128
+ let assetDocument = null;
129
+ let asset = null;
130
+ if (assetId !== null) {
131
+ assetDocument = await this.findAsset(indexId, assetId);
132
+ asset = { ...assetDocument._source };
133
+ }
134
+ const measures = await this.buildDeviceMeasures(source, assetDocument, measurements, payloadUuids);
135
+ return { asset, measures };
136
+ }
137
+ async ingestApiMeasures(indexId, assetId, source, target, measurements, payloadUuids) {
138
+ const assetDocument = await this.findAsset(indexId, assetId);
139
+ if (!assetDocument) {
140
+ throw new kuzzle_1.BadRequestError(`Asset "${assetId}" does not exists on index "${indexId}"`);
307
141
  }
308
- asset._source.lastMeasuredAt = lastMeasuredAt;
309
- return assetStates;
142
+ const asset = { ...assetDocument._source };
143
+ const measures = await this.buildApiMeasures(source, assetDocument, measurements, payloadUuids, target.engineGroups);
144
+ return { asset, measures };
310
145
  }
311
146
  /**
312
147
  * Build the measures document received from the API
@@ -315,14 +150,14 @@ class MeasureService extends shared_1.BaseService {
315
150
  * @param asset The target asset to build the measure for
316
151
  * @param measure The decoded raw measures
317
152
  * @param payloadUuids The uuid's of the payloads used to create the measure
318
- *
153
+ * @param engineGroup engineGroup of model
319
154
  * @returns A MeasurementContent builded from parameters
320
155
  */
321
- async buildApiMeasures(source, asset, measures, payloadUuids, engineGroup) {
156
+ async buildApiMeasures(source, asset, measures, payloadUuids, engineGroups) {
322
157
  const apiMeasures = [];
323
158
  for (const measure of measures) {
324
159
  let assetContext = null;
325
- const isInModel = await this.isMeasureNameInModel(measure.measureName, asset._source.model, engineGroup);
160
+ const isInModel = await this.isMeasureNameInModel(measure.measureName, asset._source.model, engineGroups);
326
161
  if (isInModel) {
327
162
  assetContext = asset_1.AssetSerializer.measureContext(asset, measure.measureName);
328
163
  }
@@ -337,39 +172,6 @@ class MeasureService extends shared_1.BaseService {
337
172
  }
338
173
  return apiMeasures;
339
174
  }
340
- /**
341
- * Build the measures documents to save
342
- */
343
- buildMeasures(device, asset, measurements, payloadUuids) {
344
- const measures = [];
345
- for (const measurement of measurements) {
346
- // @todo check if measure type exists
347
- let assetContext = null;
348
- if (asset) {
349
- const assetMeasureName = this.findAssetMeasureNameFromDevice(device._id, measurement.measureName, asset._source);
350
- if (assetMeasureName) {
351
- assetContext = asset_1.AssetSerializer.measureContext(asset, assetMeasureName);
352
- }
353
- }
354
- const measureContent = {
355
- asset: assetContext,
356
- measuredAt: measurement.measuredAt,
357
- origin: {
358
- _id: device._id,
359
- deviceMetadata: device._source.metadata,
360
- deviceModel: device._source.model,
361
- measureName: measurement.measureName,
362
- payloadUuids,
363
- reference: device._source.reference,
364
- type: "device",
365
- },
366
- type: measurement.type,
367
- values: measurement.values,
368
- };
369
- measures.push(measureContent);
370
- }
371
- return measures.sort((measureA, measureB) => measureA.measuredAt - measureB.measuredAt);
372
- }
373
175
  /**
374
176
  * Find an asset by its ID and its engine ID.
375
177
  *
@@ -383,7 +185,7 @@ class MeasureService extends shared_1.BaseService {
383
185
  return asset;
384
186
  }
385
187
  catch (error) {
386
- this.logger.error(`[${engineId}] Cannot find asset "${assetId}".`);
188
+ this.app.log.error(`[${engineId}] Cannot find asset "${assetId}".`);
387
189
  return null;
388
190
  }
389
191
  }
@@ -396,9 +198,9 @@ class MeasureService extends shared_1.BaseService {
396
198
  * @returns True if the asset measure name belongs to the asset model, false otherwise
397
199
  * @throws If the model does not exists
398
200
  */
399
- async isMeasureNameInModel(measureName, model, engineGroup = "commons") {
201
+ async isMeasureNameInModel(measureName, model, engineGroups = ["commons"]) {
400
202
  const assetModel = await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:model:asset:get", {
401
- engineGroup,
203
+ engineGroups,
402
204
  model: model,
403
205
  });
404
206
  if (!assetModel) {
@@ -418,104 +220,13 @@ class MeasureService extends shared_1.BaseService {
418
220
  * @throws If the device is not linked to the asset
419
221
  */
420
222
  findAssetMeasureNameFromDevice(deviceId, measureType, asset) {
421
- const linkedDevice = asset.linkedDevices.find((link) => link._id === deviceId);
223
+ const linkedDevice = asset.linkedMeasures.find((link) => link.deviceId === deviceId);
422
224
  if (!linkedDevice) {
423
225
  throw new kuzzle_1.BadRequestError(`Device "${deviceId}" is not linked to "${asset.model}" asset: "${asset.reference}"`);
424
226
  }
425
- const assetMeasureName = linkedDevice.measureNames.find((m) => m.device === measureType);
227
+ const assetMeasureName = linkedDevice.measureSlots.find((m) => m.device === measureType);
426
228
  return assetMeasureName?.asset ?? null;
427
229
  }
428
- mutexUpdateAsset(engineId, assetId, asset) {
429
- // ? Potential race condition if 2 differents device are linked
430
- // ? to the same asset and get processed at the same time.
431
- //
432
- // ? Use mutex to try to fix update conflict
433
- return (0, shared_1.lock)(`asset:${engineId}:${assetId}`, async () => this.sdk.document
434
- .update(engineId, plugin_1.InternalCollection.ASSETS, assetId, asset)
435
- .catch((error) => {
436
- throw (0, shared_1.keepStack)(error, new kuzzle_1.BadRequestError(`Cannot update asset "${assetId}": ${error.message}`));
437
- }));
438
- }
439
- /**
440
- * Create a new document in the collection asset-history, for each asset state
441
- */
442
- async historizeAssetStates(assetStates, engineId, originalAssetMetadata, assetMetadata) {
443
- const metadataChanges = (0, shared_1.objectDiff)(originalAssetMetadata, assetMetadata);
444
- if (!this.config.assetsHistorizesMeasures) {
445
- // If there are no metadata changes, nothing to do.
446
- if (metadataChanges.length === 0) {
447
- return;
448
- }
449
- const timestamps = Array.from(assetStates.keys());
450
- const lastTimestampRecorded = timestamps[timestamps.length - 1];
451
- const lastAssetState = assetStates.get(lastTimestampRecorded);
452
- if (!lastAssetState) {
453
- return;
454
- }
455
- // Update the asset's metadata to the new one.
456
- lastAssetState._source.metadata = assetMetadata;
457
- // Create a metadata event.
458
- const event = {
459
- metadata: {
460
- names: metadataChanges,
461
- },
462
- name: "metadata",
463
- };
464
- const history = {
465
- asset: lastAssetState._source,
466
- event,
467
- id: lastAssetState._id,
468
- timestamp: lastTimestampRecorded,
469
- };
470
- return (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:asset:history:add", {
471
- engineId,
472
- histories: [history],
473
- });
474
- }
475
- // Otherwise, we record measure events (and metadata on the last state if needed)
476
- const timestamps = Array.from(assetStates.keys());
477
- const lastTimestampRecorded = timestamps[timestamps.length - 1];
478
- const histories = [];
479
- for (const [measuredAt, assetState] of assetStates) {
480
- // Gather measure names corresponding to the current timestamp.
481
- const measureNames = [];
482
- for (const measure of Object.values(assetState._source.measures)) {
483
- if (measure?.measuredAt === measuredAt) {
484
- measureNames.push(measure.name);
485
- }
486
- }
487
- // Build the measure event.
488
- const event = {
489
- measure: {
490
- names: measureNames,
491
- },
492
- name: "measure",
493
- };
494
- // Initialize with the original metadata.
495
- assetState._source.metadata = originalAssetMetadata;
496
- // If we are at the last recorded state and there are metadata changes,
497
- // update both the event and asset metadata.
498
- if (metadataChanges.length !== 0 &&
499
- measuredAt === lastTimestampRecorded) {
500
- event.metadata = {
501
- names: metadataChanges,
502
- };
503
- assetState._source.metadata = assetMetadata;
504
- }
505
- histories.push({
506
- asset: assetState._source,
507
- event,
508
- id: assetState._id,
509
- timestamp: measuredAt,
510
- });
511
- }
512
- return (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:asset:history:add", {
513
- engineId,
514
- // Reverse order because measuredAt is sorted in ascending order,
515
- // while in mCreate the last item will be the first document to be created
516
- histories: histories.reverse(),
517
- });
518
- }
519
230
  }
520
231
  exports.MeasureService = MeasureService;
521
232
  //# sourceMappingURL=MeasureService.js.map
@@ -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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"}
@@ -6,5 +6,4 @@ export declare const enum DATA_SOURCE_METADATA_TYPE {
6
6
  DEVICE = "device"
7
7
  }
8
8
  export declare function apiSourceToOriginApi(source: ApiMeasureSource, payloadUuids: string[]): MeasureOriginApi;
9
- export declare function toDeviceSource(dataSourceId: string, reference: string, model: string, metadata?: Metadata, lastMeasuredAt?: number): DeviceMeasureSource;
10
- export declare function deviceSourceToOriginDevice(source: DeviceMeasureSource, measureName: string, payloadUuids: string[]): MeasureOriginDevice;
9
+ export declare function deviceSourceToOriginDevice(source: DeviceMeasureSource, measureName: string, payloadUuids: string[], deviceMetadata: Metadata): MeasureOriginDevice;