kuzzle-device-manager 2.9.0 → 3.0.0-next.10

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 (178) hide show
  1. package/dist/bin/migration/migration_platform_index.d.ts +2 -0
  2. package/dist/bin/migration/migration_platform_index.js +55 -0
  3. package/dist/bin/migration/migration_platform_index.js.map +1 -0
  4. package/dist/bin/migration/migration_tenant_index.d.ts +2 -0
  5. package/dist/bin/migration/migration_tenant_index.js +160 -0
  6. package/dist/bin/migration/migration_tenant_index.js.map +1 -0
  7. package/dist/bin/migration/utils.d.ts +18 -0
  8. package/dist/bin/migration/utils.js +97 -0
  9. package/dist/bin/migration/utils.js.map +1 -0
  10. package/dist/index.d.ts +1 -0
  11. package/dist/index.js +1 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/lib/modules/asset/AssetModule.d.ts +0 -2
  14. package/dist/lib/modules/asset/AssetModule.js +0 -12
  15. package/dist/lib/modules/asset/AssetModule.js.map +1 -1
  16. package/dist/lib/modules/asset/AssetService.d.ts +1 -2
  17. package/dist/lib/modules/asset/AssetService.js +24 -38
  18. package/dist/lib/modules/asset/AssetService.js.map +1 -1
  19. package/dist/lib/modules/asset/AssetsController.d.ts +9 -1
  20. package/dist/lib/modules/asset/AssetsController.js +69 -1
  21. package/dist/lib/modules/asset/AssetsController.js.map +1 -1
  22. package/dist/lib/modules/asset/collections/assetsMappings.js +10 -15
  23. package/dist/lib/modules/asset/collections/assetsMappings.js.map +1 -1
  24. package/dist/lib/modules/asset/exports.d.ts +0 -4
  25. package/dist/lib/modules/asset/exports.js +0 -4
  26. package/dist/lib/modules/asset/exports.js.map +1 -1
  27. package/dist/lib/modules/asset/index.d.ts +1 -3
  28. package/dist/lib/modules/asset/index.js +1 -3
  29. package/dist/lib/modules/asset/index.js.map +1 -1
  30. package/dist/lib/modules/asset/model/AssetSerializer.js +0 -1
  31. package/dist/lib/modules/asset/model/AssetSerializer.js.map +1 -1
  32. package/dist/lib/modules/asset/roles/RoleAssetsAdmin.js +1 -1
  33. package/dist/lib/modules/asset/roles/RoleAssetsAdmin.js.map +1 -1
  34. package/dist/lib/modules/asset/types/AssetApi.d.ts +83 -5
  35. package/dist/lib/modules/asset/types/AssetContent.d.ts +9 -16
  36. package/dist/lib/modules/asset/types/AssetHistoryContent.d.ts +4 -11
  37. package/dist/lib/modules/decoder/DecodedPayload.d.ts +2 -0
  38. package/dist/lib/modules/decoder/DecodedPayload.js +13 -2
  39. package/dist/lib/modules/decoder/DecodedPayload.js.map +1 -1
  40. package/dist/lib/modules/decoder/DecodersRegister.js +1 -1
  41. package/dist/lib/modules/decoder/DecodersRegister.js.map +1 -1
  42. package/dist/lib/modules/decoder/PayloadService.js +157 -26
  43. package/dist/lib/modules/decoder/PayloadService.js.map +1 -1
  44. package/dist/lib/modules/device/DeviceService.d.ts +4 -48
  45. package/dist/lib/modules/device/DeviceService.js +123 -294
  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 +37 -18
  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 +68 -41
  59. package/dist/lib/modules/device/types/DeviceContent.d.ts +55 -4
  60. package/dist/lib/modules/device/types/DeviceEvents.d.ts +8 -23
  61. package/dist/lib/modules/group/GroupsController.d.ts +35 -0
  62. package/dist/lib/modules/group/GroupsController.js +471 -0
  63. package/dist/lib/modules/group/GroupsController.js.map +1 -0
  64. package/dist/lib/modules/group/GroupsModule.d.ts +6 -0
  65. package/dist/lib/modules/group/GroupsModule.js +21 -0
  66. package/dist/lib/modules/group/GroupsModule.js.map +1 -0
  67. package/dist/lib/modules/group/GroupsService.d.ts +116 -0
  68. package/dist/lib/modules/group/GroupsService.js +503 -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 +1 -1
  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 +80 -365
  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 +3 -14
  98. package/dist/lib/modules/measure/MeasureSourcesBuilder.js.map +1 -1
  99. package/dist/lib/modules/measure/collections/measuresMappings.d.ts +2 -91
  100. package/dist/lib/modules/measure/collections/measuresMappings.js +1 -5
  101. package/dist/lib/modules/measure/collections/measuresMappings.js.map +1 -1
  102. package/dist/lib/modules/measure/exports.d.ts +0 -1
  103. package/dist/lib/modules/measure/exports.js +0 -1
  104. package/dist/lib/modules/measure/exports.js.map +1 -1
  105. package/dist/lib/modules/measure/index.d.ts +0 -1
  106. package/dist/lib/modules/measure/index.js +0 -1
  107. package/dist/lib/modules/measure/index.js.map +1 -1
  108. package/dist/lib/modules/measure/types/MeasureEvents.d.ts +5 -148
  109. package/dist/lib/modules/measure/types/MeasureSources.d.ts +1 -0
  110. package/dist/lib/modules/measure/types/MeasureSources.js.map +1 -1
  111. package/dist/lib/modules/model/ModelService.d.ts +3 -2
  112. package/dist/lib/modules/model/ModelService.js +90 -58
  113. package/dist/lib/modules/model/ModelService.js.map +1 -1
  114. package/dist/lib/modules/model/ModelsController.js +6 -1
  115. package/dist/lib/modules/model/ModelsController.js.map +1 -1
  116. package/dist/lib/modules/model/ModelsRegister.d.ts +3 -2
  117. package/dist/lib/modules/model/ModelsRegister.js +5 -3
  118. package/dist/lib/modules/model/ModelsRegister.js.map +1 -1
  119. package/dist/lib/modules/model/collections/modelsMappings.js +18 -0
  120. package/dist/lib/modules/model/collections/modelsMappings.js.map +1 -1
  121. package/dist/lib/modules/model/types/ModelApi.d.ts +2 -1
  122. package/dist/lib/modules/model/types/ModelContent.d.ts +24 -0
  123. package/dist/lib/modules/model/types/ModelContent.js.map +1 -1
  124. package/dist/lib/modules/model/types/ModelDefinition.d.ts +5 -1
  125. package/dist/lib/modules/plugin/DeviceManagerEngine.d.ts +15 -6
  126. package/dist/lib/modules/plugin/DeviceManagerEngine.js +61 -37
  127. package/dist/lib/modules/plugin/DeviceManagerEngine.js.map +1 -1
  128. package/dist/lib/modules/plugin/DeviceManagerPlugin.d.ts +3 -2
  129. package/dist/lib/modules/plugin/DeviceManagerPlugin.js +36 -38
  130. package/dist/lib/modules/plugin/DeviceManagerPlugin.js.map +1 -1
  131. package/dist/lib/modules/plugin/types/DeviceManagerConfiguration.d.ts +9 -14
  132. package/dist/lib/modules/plugin/types/InternalCollection.d.ts +1 -1
  133. package/dist/lib/modules/plugin/types/InternalCollection.js +1 -1
  134. package/dist/lib/modules/plugin/types/InternalCollection.js.map +1 -1
  135. package/dist/lib/modules/shared/services/AbstractExporter.d.ts +3 -1
  136. package/dist/lib/modules/shared/services/AbstractExporter.js +6 -2
  137. package/dist/lib/modules/shared/services/AbstractExporter.js.map +1 -1
  138. package/dist/lib/modules/shared/services/BaseService.js.map +1 -1
  139. package/dist/lib/modules/shared/services/DigitalTwinExporter.d.ts +6 -1
  140. package/dist/lib/modules/shared/services/DigitalTwinExporter.js +44 -2
  141. package/dist/lib/modules/shared/services/DigitalTwinExporter.js.map +1 -1
  142. package/dist/lib/modules/shared/services/DigitalTwinService.d.ts +70 -0
  143. package/dist/lib/modules/shared/services/DigitalTwinService.js +311 -0
  144. package/dist/lib/modules/shared/services/DigitalTwinService.js.map +1 -1
  145. package/dist/lib/modules/shared/types/DigitalTwinContent.d.ts +4 -5
  146. package/dist/lib/modules/shared/types/DigitalTwinEvents.d.ts +30 -0
  147. package/package.json +6 -2
  148. package/dist/lib/modules/asset/AssetsGroupsController.d.ts +0 -22
  149. package/dist/lib/modules/asset/AssetsGroupsController.js +0 -242
  150. package/dist/lib/modules/asset/AssetsGroupsController.js.map +0 -1
  151. package/dist/lib/modules/asset/AssetsGroupsService.d.ts +0 -47
  152. package/dist/lib/modules/asset/AssetsGroupsService.js +0 -165
  153. package/dist/lib/modules/asset/AssetsGroupsService.js.map +0 -1
  154. package/dist/lib/modules/asset/collections/assetsGroupsMapping.d.ts +0 -2
  155. package/dist/lib/modules/asset/collections/assetsGroupsMapping.js.map +0 -1
  156. package/dist/lib/modules/asset/roles/RoleAssetsGroupsAdmin.js.map +0 -1
  157. package/dist/lib/modules/asset/roles/RoleAssetsGroupsReader.js.map +0 -1
  158. package/dist/lib/modules/asset/types/AssetGroupContent.d.ts +0 -11
  159. package/dist/lib/modules/asset/types/AssetGroupContent.js.map +0 -1
  160. package/dist/lib/modules/asset/types/AssetGroupsApi.d.ts +0 -59
  161. package/dist/lib/modules/asset/types/AssetGroupsApi.js.map +0 -1
  162. package/dist/lib/modules/measure/measures/BatteryMeasure.d.ts +0 -5
  163. package/dist/lib/modules/measure/measures/BatteryMeasure.js +0 -19
  164. package/dist/lib/modules/measure/measures/BatteryMeasure.js.map +0 -1
  165. package/dist/lib/modules/measure/measures/HumidityMeasure.d.ts +0 -5
  166. package/dist/lib/modules/measure/measures/HumidityMeasure.js +0 -19
  167. package/dist/lib/modules/measure/measures/HumidityMeasure.js.map +0 -1
  168. package/dist/lib/modules/measure/measures/MovementMeasure.d.ts +0 -5
  169. package/dist/lib/modules/measure/measures/MovementMeasure.js +0 -17
  170. package/dist/lib/modules/measure/measures/MovementMeasure.js.map +0 -1
  171. package/dist/lib/modules/measure/measures/PositionMeasure.d.ts +0 -10
  172. package/dist/lib/modules/measure/measures/PositionMeasure.js +0 -33
  173. package/dist/lib/modules/measure/measures/PositionMeasure.js.map +0 -1
  174. package/dist/lib/modules/measure/measures/TemperatureMeasure.d.ts +0 -5
  175. package/dist/lib/modules/measure/measures/TemperatureMeasure.js +0 -19
  176. package/dist/lib/modules/measure/measures/TemperatureMeasure.js.map +0 -1
  177. package/dist/lib/modules/measure/measures/index.d.ts +0 -5
  178. package/dist/lib/modules/measure/measures/index.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const utils_js_1 = require("./utils.js");
5
+ const args = {};
6
+ for (let index = 0; index < process.argv.length; index++) {
7
+ const val = process.argv[index];
8
+ if (val.startsWith("--")) {
9
+ const [key, value] = val.replace("--", "").split("=");
10
+ args[key] = value || true;
11
+ }
12
+ }
13
+ const pathToPlatformIndex = args["platform-index"] || process.env.PLATFORM_INDEX;
14
+ if (!pathToPlatformIndex) {
15
+ throw new Error("PLATFORM_INDEX env variable or --platform-index is required");
16
+ }
17
+ // eslint-disable-next-line no-console
18
+ console.info("MIGRATING " + pathToPlatformIndex);
19
+ // DEVICES
20
+ (0, utils_js_1.transformDocuments)("devices", pathToPlatformIndex, (line) => {
21
+ const propertiesToDelete = [
22
+ "assetId",
23
+ "metadata",
24
+ "measures",
25
+ "groups",
26
+ "lastMeasuredAt",
27
+ ];
28
+ const obj = JSON.parse(line);
29
+ // Check line is a document
30
+ if (obj.body) {
31
+ obj.body = (0, utils_js_1.clearProperties)(obj.body, propertiesToDelete);
32
+ const createdAt = obj.body._kuzzle_info?.createdAt;
33
+ if (createdAt) {
34
+ obj.body.provisionedAt = createdAt;
35
+ }
36
+ }
37
+ return obj;
38
+ });
39
+ // MODELS
40
+ (0, utils_js_1.transformDocuments)("models", pathToPlatformIndex, (line) => {
41
+ const obj = JSON.parse(line);
42
+ // Check line is a document
43
+ if (obj.body && obj.body.group) {
44
+ obj.body.group.affinity = {
45
+ models: {
46
+ assets: [],
47
+ devices: [],
48
+ },
49
+ strict: false,
50
+ type: ["assets", "devices"],
51
+ };
52
+ }
53
+ return obj;
54
+ });
55
+ //# sourceMappingURL=migration_platform_index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration_platform_index.js","sourceRoot":"","sources":["../../../bin/migration/migration_platform_index.ts"],"names":[],"mappings":";;;AACA,yCAAiE;AAEjE,MAAM,IAAI,GAAQ,EAAE,CAAC;AACrB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;IACzD,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtD,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,MAAM,mBAAmB,GACvB,IAAI,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;AAEvD,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACzB,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;AACJ,CAAC;AACD,sCAAsC;AACtC,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,CAAC;AAEjD,UAAU;AACV,IAAA,6BAAkB,EAAC,SAAS,EAAE,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE;IAC1D,MAAM,kBAAkB,GAAG;QACzB,SAAS;QACT,UAAU;QACV,UAAU;QACV,QAAQ;QACR,gBAAgB;KACjB,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,2BAA2B;IAC3B,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,GAAG,IAAA,0BAAe,EAAC,GAAG,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC;QACnD,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC,CAAC;AAEH,SAAS;AACT,IAAA,6BAAkB,EAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,2BAA2B;IAC3B,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG;YACxB,MAAM,EAAE;gBACN,MAAM,EAAE,EAAE;gBACV,OAAO,EAAE,EAAE;aACZ;YACD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;SAC5B,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,160 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ /* eslint-disable no-console */
5
+ const utils_js_1 = require("./utils.js");
6
+ const args = {};
7
+ for (let index = 0; index < process.argv.length; index++) {
8
+ const val = process.argv[index];
9
+ if (val.startsWith("--")) {
10
+ const [key, value] = val.replace("--", "").split("=");
11
+ args[key] = value || true;
12
+ }
13
+ }
14
+ const pathToTenantIndex = args["tenant-index"] || process.env.TENANT_INDEX;
15
+ const pathToPlatformIndex = args["platform-index"] || process.env.PLATFORM_INDEX;
16
+ const includeSoftTenants = args["with-soft-tenants"] || process.env.WITH_SOFT_TENANTS;
17
+ if (!pathToTenantIndex) {
18
+ throw new Error("TENANT_INDEX env variable or --tenant-index flag is required");
19
+ }
20
+ if (!pathToPlatformIndex) {
21
+ throw new Error("PLATFORM_INDEX env variable or --platform-index is required");
22
+ }
23
+ const linkedDevices = {};
24
+ console.info("MIGRATING " + pathToTenantIndex);
25
+ console.info("WITH_SOFT_TENANTS " + includeSoftTenants);
26
+ // RETRIEVE MEASURESLOTS FROM MODELS
27
+ (0, utils_js_1.retrieveModelMeasureSlots)(pathToPlatformIndex, (models) =>
28
+ // ASSETS
29
+ (0, utils_js_1.transformDocuments)("assets", pathToTenantIndex, (line) => {
30
+ const propertiesToDelete = [
31
+ "measures",
32
+ "linkedDevices",
33
+ "lastMeasuredAt",
34
+ ];
35
+ if (!includeSoftTenants) {
36
+ propertiesToDelete.push("softTenant");
37
+ }
38
+ const obj = JSON.parse(line);
39
+ // Check line is a document
40
+ if (obj.body) {
41
+ if (obj.body.groups && obj.body.groups.length) {
42
+ obj.body.groups = obj.body.groups.map((gr) => {
43
+ if (gr.id) {
44
+ return { date: gr.date, path: gr.id };
45
+ }
46
+ return gr;
47
+ });
48
+ }
49
+ obj.body.linkedMeasures = [];
50
+ obj.body.measureSlots = [...models.assets[obj.body.model]];
51
+ if (obj.body.linkedDevices && obj.body.linkedDevices.length) {
52
+ // Fill the obj of linked devices for later device collection migration
53
+ obj.body.linkedMeasures = obj.body.linkedDevices.map((link) => {
54
+ const measureSlots = link.measureNames.map((m) => ({
55
+ asset: m.asset,
56
+ device: m.device,
57
+ }));
58
+ const deviceLink = { assetId: obj._id, measureSlots };
59
+ if (Array.isArray(linkedDevices[link._id])) {
60
+ linkedDevices[link._id].push(deviceLink);
61
+ }
62
+ else {
63
+ linkedDevices[link._id] = [deviceLink];
64
+ }
65
+ return { deviceId: link._id, measureSlots };
66
+ });
67
+ }
68
+ obj.body = (0, utils_js_1.clearProperties)(obj.body, propertiesToDelete);
69
+ }
70
+ return obj;
71
+ }, () => {
72
+ // DEVICES LAUNCHED ONLY AFTER THE ASSET FILE IS DONE TO HAVE ALL THE LINKED DEVICES
73
+ (0, utils_js_1.transformDocuments)("devices", pathToTenantIndex, (line) => {
74
+ const propertiesToDelete = [
75
+ "assetId",
76
+ "measures",
77
+ "linkedDevices",
78
+ "lastMeasuredAt",
79
+ ];
80
+ const obj = JSON.parse(line);
81
+ // Check line is a document
82
+ if (obj.body) {
83
+ obj.body.measureSlots = [...models.devices[obj.body.model]];
84
+ if (obj.body.groups && obj.body.groups.length) {
85
+ obj.body.groups = obj.body.groups.map((gr) => {
86
+ if (gr.id) {
87
+ return { date: gr.date, path: gr.id };
88
+ }
89
+ return gr;
90
+ });
91
+ }
92
+ obj.body.linkedMeasures = [];
93
+ if (linkedDevices[obj._id]) {
94
+ // Fill the obj of linked devices for later device collection migration
95
+ obj.body.linkedMeasures = linkedDevices[obj._id];
96
+ }
97
+ obj.body = (0, utils_js_1.clearProperties)(obj.body, propertiesToDelete);
98
+ }
99
+ return obj;
100
+ });
101
+ }));
102
+ // ASSET-HISTORY
103
+ (0, utils_js_1.transformDocuments)("assets-history", pathToTenantIndex, (line) => {
104
+ const propertiesToDelete = ["measures", "linkedDevices", "lastMeasuredAt"];
105
+ if (!includeSoftTenants) {
106
+ propertiesToDelete.push("softTenant");
107
+ }
108
+ const obj = JSON.parse(line);
109
+ // Check line is a document
110
+ if (obj.body) {
111
+ const asset = obj.body.asset;
112
+ if (asset) {
113
+ if (asset.groups && asset.groups.length) {
114
+ asset.groups = asset.groups.map((gr) => {
115
+ if (gr.id) {
116
+ return { date: gr.date, path: gr.id };
117
+ }
118
+ return gr;
119
+ });
120
+ }
121
+ asset.linkedMeasures = [];
122
+ if (asset.linkedDevices && asset.linkedDevices.length) {
123
+ // Fill the obj of linked devices for later device collection migration
124
+ asset.linkedMeasures = asset.linkedDevices.map((d) => {
125
+ const measureSlots = d.measureNames.map((m) => ({
126
+ asset: m.asset,
127
+ device: m.device,
128
+ }));
129
+ return { deviceId: d._id, measureSlots };
130
+ });
131
+ }
132
+ obj.body.asset = (0, utils_js_1.clearProperties)(asset, propertiesToDelete);
133
+ }
134
+ }
135
+ return obj;
136
+ });
137
+ // GROUPS
138
+ (0, utils_js_1.transformDocuments)("assets-groups", pathToTenantIndex, (line) => {
139
+ const propertiesToDelete = ["parent", "children"];
140
+ const obj = JSON.parse(line);
141
+ // Check line is a document
142
+ if (obj.body) {
143
+ if (obj.body.parent) {
144
+ obj.body.path = obj.body.parent + "." + obj._id;
145
+ }
146
+ else {
147
+ obj.body.path = obj._id;
148
+ }
149
+ if (linkedDevices[obj._id]) {
150
+ // Fill the obj of linked devices for later device collection migration
151
+ obj.body.linkedMeasures = linkedDevices[obj._id];
152
+ }
153
+ obj.body = (0, utils_js_1.clearProperties)(obj.body, propertiesToDelete);
154
+ }
155
+ else if (obj.collection === "assets-groups") {
156
+ obj.collection = "groups";
157
+ }
158
+ return obj;
159
+ });
160
+ //# sourceMappingURL=migration_tenant_index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration_tenant_index.js","sourceRoot":"","sources":["../../../bin/migration/migration_tenant_index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { JSONObject } from "kuzzle-sdk";
2
+ export declare function transformDocuments(collection: string, indexPath: string, callBack: (string: any) => JSONObject, endCallBack?: () => void): void;
3
+ export declare function clearProperties(obj: any, properties: any): {};
4
+ export interface ModelRegistry {
5
+ assets: {
6
+ [key: string]: {
7
+ type: string;
8
+ name: string;
9
+ }[];
10
+ };
11
+ devices: {
12
+ [key: string]: {
13
+ type: string;
14
+ name: string;
15
+ }[];
16
+ };
17
+ }
18
+ export declare function retrieveModelMeasureSlots(pathToPlatformIndex: string, callBack: (models: ModelRegistry) => void): void;
@@ -0,0 +1,97 @@
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.retrieveModelMeasureSlots = exports.clearProperties = exports.transformDocuments = void 0;
7
+ /* eslint-disable no-console */
8
+ const fs_1 = require("fs");
9
+ const readline_1 = require("readline");
10
+ const path_1 = __importDefault(require("path"));
11
+ const fileName = "documents.jsonl"; // Fichier d'entrée
12
+ const tempFileName = "temp-" + fileName;
13
+ function transformDocuments(collection, indexPath, callBack, endCallBack) {
14
+ let error;
15
+ const inputFilePath = path_1.default.join(indexPath, collection, fileName);
16
+ const tempFilePath = path_1.default.join(indexPath, collection, tempFileName);
17
+ if (!(0, fs_1.existsSync)(inputFilePath)) {
18
+ console.error("THE FILE DOESN'T EXIST at " + inputFilePath);
19
+ return;
20
+ }
21
+ const readStream = (0, fs_1.createReadStream)(inputFilePath);
22
+ const writeStream = (0, fs_1.createWriteStream)(tempFilePath);
23
+ const rl = (0, readline_1.createInterface)({
24
+ input: readStream,
25
+ });
26
+ rl.on("line", (line) => {
27
+ try {
28
+ const doc = callBack(line);
29
+ writeStream.write(JSON.stringify(doc) + "\n");
30
+ }
31
+ catch (err) {
32
+ console.error("Error in " + collection);
33
+ console.error(err);
34
+ error = true;
35
+ }
36
+ });
37
+ rl.on("close", () => {
38
+ if (error) {
39
+ return;
40
+ }
41
+ if (endCallBack) {
42
+ endCallBack();
43
+ }
44
+ writeStream.end(() => {
45
+ // Remplace l'ancien fichier par le nouveau
46
+ (0, fs_1.rename)(tempFilePath, inputFilePath, (err) => {
47
+ if (err) {
48
+ console.error("Erreur lors du remplacement du fichier : " + collection, err);
49
+ }
50
+ else {
51
+ console.error("Fichier mis à jour avec succès");
52
+ }
53
+ });
54
+ });
55
+ });
56
+ }
57
+ exports.transformDocuments = transformDocuments;
58
+ function clearProperties(obj, properties) {
59
+ return Object.keys(obj)
60
+ .filter((key) => !properties.includes(key))
61
+ .reduce((acc, key) => {
62
+ acc[key] = obj[key];
63
+ return acc;
64
+ }, {});
65
+ }
66
+ exports.clearProperties = clearProperties;
67
+ function retrieveModelMeasureSlots(pathToPlatformIndex, callBack) {
68
+ const modelsPath = path_1.default.join(pathToPlatformIndex, "models", fileName);
69
+ const readStream = (0, fs_1.createReadStream)(modelsPath);
70
+ const rl = (0, readline_1.createInterface)({
71
+ input: readStream,
72
+ });
73
+ const models = { assets: {}, devices: {} };
74
+ rl.on("line", (line) => {
75
+ try {
76
+ const obj = JSON.parse(line);
77
+ if (obj.body?.asset?.measures) {
78
+ const model = obj.body.asset.model;
79
+ models.assets[model] = [];
80
+ models.assets[model].push(...obj.body.asset.measures);
81
+ }
82
+ else if (obj.body?.device?.measures) {
83
+ const model = obj.body.device.model;
84
+ models.devices[model] = [];
85
+ models.devices[model].push(...obj.body.device.measures);
86
+ }
87
+ }
88
+ catch (err) {
89
+ console.error(err);
90
+ }
91
+ });
92
+ rl.on("close", () => {
93
+ callBack(models);
94
+ });
95
+ }
96
+ exports.retrieveModelMeasureSlots = retrieveModelMeasureSlots;
97
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../bin/migration/utils.ts"],"names":[],"mappings":";;;;;;AAAA,+BAA+B;AAC/B,2BAA6E;AAC7E,uCAA2C;AAC3C,gDAAwB;AAGxB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,mBAAmB;AACvD,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;AAExC,SAAgB,kBAAkB,CAChC,UAAkB,EAClB,SAAiB,EACjB,QAAgC,EAChC,WAAwB;IAExB,IAAI,KAAK,CAAC;IACV,MAAM,aAAa,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEjE,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;IACpE,IAAI,CAAC,IAAA,eAAU,EAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,aAAa,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IACD,MAAM,UAAU,GAAG,IAAA,qBAAgB,EAAC,aAAa,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,IAAA,sBAAiB,EAAC,YAAY,CAAC,CAAC;IAEpD,MAAM,EAAE,GAAG,IAAA,0BAAe,EAAC;QACzB,KAAK,EAAE,UAAU;KAClB,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC3B,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;QAChD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAClB,IAAI,KAAK,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YAChB,WAAW,EAAE,CAAC;QAChB,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE;YACnB,2CAA2C;YAE3C,IAAA,WAAM,EAAC,YAAY,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC1C,IAAI,GAAG,EAAE,CAAC;oBACR,OAAO,CAAC,KAAK,CACX,2CAA2C,GAAG,UAAU,EACxD,GAAG,CACJ,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAtDD,gDAsDC;AAED,SAAgB,eAAe,CAAC,GAAG,EAAE,UAAU;IAC7C,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;SACpB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC1C,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACnB,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAE,CAAC,CAAC;AACX,CAAC;AAPD,0CAOC;AAeD,SAAgB,yBAAyB,CACvC,mBAA2B,EAC3B,QAAyC;IAEzC,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,IAAA,qBAAgB,EAAC,UAAU,CAAC,CAAC;IAEhD,MAAM,EAAE,GAAG,IAAA,0BAAe,EAAC;QACzB,KAAK,EAAE,UAAU;KAClB,CAAC,CAAC;IACH,MAAM,MAAM,GAAkB,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC1D,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAE7B,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;gBAC9B,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBAC1B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxD,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;gBACtC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBACpC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBAC3B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAClB,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;AACL,CAAC;AAhCD,8DAgCC"}
package/dist/index.d.ts CHANGED
@@ -5,3 +5,4 @@ export * from "./lib/modules/measure/exports";
5
5
  export * from "./lib/modules/decoder/exports";
6
6
  export * from "./lib/modules/shared/exports";
7
7
  export * from "./lib/modules/model/exports";
8
+ export * from "./lib/modules/group/exports";
package/dist/index.js CHANGED
@@ -21,4 +21,5 @@ __exportStar(require("./lib/modules/measure/exports"), exports);
21
21
  __exportStar(require("./lib/modules/decoder/exports"), exports);
22
22
  __exportStar(require("./lib/modules/shared/exports"), exports);
23
23
  __exportStar(require("./lib/modules/model/exports"), exports);
24
+ __exportStar(require("./lib/modules/group/exports"), exports);
24
25
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAE7C,8DAA4C;AAE5C,+DAA6C;AAE7C,gEAA8C;AAE9C,gEAA8C;AAE9C,+DAA6C;AAE7C,8DAA4C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAE7C,8DAA4C;AAE5C,+DAA6C;AAE7C,gEAA8C;AAE9C,gEAA8C;AAE9C,+DAA6C;AAE7C,8DAA4C;AAE5C,8DAA4C"}
@@ -3,7 +3,5 @@ export declare class AssetModule extends Module {
3
3
  private assetService;
4
4
  private assetHistoryService;
5
5
  private assetController;
6
- private assetGroupsController;
7
- private assetsGroupsService;
8
6
  init(): Promise<void>;
9
7
  }
@@ -28,22 +28,14 @@ const Module_1 = require("../shared/Module");
28
28
  const AssetHistoryService_1 = require("./AssetHistoryService");
29
29
  const AssetsController_1 = require("./AssetsController");
30
30
  const AssetService_1 = require("./AssetService");
31
- const AssetsGroupsController_1 = require("./AssetsGroupsController");
32
31
  const RoleAssetsAdmin_1 = require("./roles/RoleAssetsAdmin");
33
32
  const RoleAssetsReader_1 = require("./roles/RoleAssetsReader");
34
- const RoleAssetsGroupsAdmin_1 = require("./roles/RoleAssetsGroupsAdmin");
35
- const RoleAssetsGroupsReader_1 = require("./roles/RoleAssetsGroupsReader");
36
33
  const specificRoles = __importStar(require("./roles/specificRoles"));
37
- const AssetsGroupsService_1 = require("./AssetsGroupsService");
38
34
  class AssetModule extends Module_1.Module {
39
35
  async init() {
40
36
  this.assetHistoryService = new AssetHistoryService_1.AssetHistoryService(this.plugin);
41
37
  this.assetService = new AssetService_1.AssetService(this.plugin, this.assetHistoryService);
42
38
  this.assetController = new AssetsController_1.AssetsController(this.plugin, this.assetService);
43
- this.assetsGroupsService = new AssetsGroupsService_1.AssetsGroupsService(this.plugin);
44
- this.assetGroupsController = new AssetsGroupsController_1.AssetsGroupsController(this.plugin, this.assetsGroupsService);
45
- this.plugin.api["device-manager/assetsGroup"] =
46
- this.assetGroupsController.definition;
47
39
  this.plugin.api["device-manager/assets"] = this.assetController.definition;
48
40
  this.plugin.imports.roles[RoleAssetsAdmin_1.RoleAssetsAdmin.name] =
49
41
  RoleAssetsAdmin_1.RoleAssetsAdmin.definition;
@@ -55,10 +47,6 @@ class AssetModule extends Module_1.Module {
55
47
  specificRoles[role].definition;
56
48
  }
57
49
  }
58
- this.plugin.imports.roles[RoleAssetsGroupsAdmin_1.RoleAssetsGroupsAdmin.name] =
59
- RoleAssetsGroupsAdmin_1.RoleAssetsGroupsAdmin.definition;
60
- this.plugin.imports.roles[RoleAssetsGroupsReader_1.RoleAssetsGroupsReader.name] =
61
- RoleAssetsGroupsReader_1.RoleAssetsGroupsReader.definition;
62
50
  }
63
51
  }
64
52
  exports.AssetModule = AssetModule;
@@ -1 +1 @@
1
- {"version":3,"file":"AssetModule.js","sourceRoot":"","sources":["../../../../lib/modules/asset/AssetModule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA0C;AAE1C,+DAA4D;AAC5D,yDAAsD;AACtD,iDAA8C;AAC9C,qEAAkE;AAClE,6DAA0D;AAC1D,+DAA4D;AAC5D,yEAAsE;AACtE,2EAAwE;AACxE,qEAAuD;AACvD,+DAA4D;AAE5D,MAAa,WAAY,SAAQ,eAAM;IAO9B,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,mBAAmB,GAAG,IAAI,yCAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5E,IAAI,CAAC,eAAe,GAAG,IAAI,mCAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5E,IAAI,CAAC,mBAAmB,GAAG,IAAI,yCAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,qBAAqB,GAAG,IAAI,+CAAsB,CACrD,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,mBAAmB,CACzB,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC;YAC3C,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC;QAExC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;QAE3E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,iCAAe,CAAC,IAAI,CAAC;YAC7C,iCAAe,CAAC,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,mCAAgB,CAAC,IAAI,CAAC;YAC9C,mCAAgB,CAAC,UAAU,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;gBAC/D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;oBACjD,aAAa,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;YACnC,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,6CAAqB,CAAC,IAAI,CAAC;YACnD,6CAAqB,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,+CAAsB,CAAC,IAAI,CAAC;YACpD,+CAAsB,CAAC,UAAU,CAAC;IACtC,CAAC;CACF;AArCD,kCAqCC"}
1
+ {"version":3,"file":"AssetModule.js","sourceRoot":"","sources":["../../../../lib/modules/asset/AssetModule.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA0C;AAE1C,+DAA4D;AAC5D,yDAAsD;AACtD,iDAA8C;AAC9C,6DAA0D;AAC1D,+DAA4D;AAC5D,qEAAuD;AAEvD,MAAa,WAAY,SAAQ,eAAM;IAK9B,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,mBAAmB,GAAG,IAAI,yCAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5E,IAAI,CAAC,eAAe,GAAG,IAAI,mCAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAE5E,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;QAE3E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,iCAAe,CAAC,IAAI,CAAC;YAC7C,iCAAe,CAAC,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,mCAAgB,CAAC,IAAI,CAAC;YAC9C,mCAAgB,CAAC,UAAU,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;gBAC/D,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;oBACjD,aAAa,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAvBD,kCAuBC"}
@@ -32,7 +32,7 @@ export declare class AssetService extends DigitalTwinService {
32
32
  */
33
33
  delete(engineId: string, assetId: string, request: KuzzleRequest): Promise<void>;
34
34
  search(engineId: string, searchParams: SearchParams, request: KuzzleRequest): Promise<SearchResult<KHit<AssetContent>>>;
35
- migrateTenant(user: User, assetsList: string[], engineId: string, newEngineId: string): Promise<ApiAssetMigrateTenantResult>;
35
+ migrateTenant(user: User, assetsList: string[], engineId: string, newEngineId: string, includeDevices: boolean, request: KuzzleRequest): Promise<ApiAssetMigrateTenantResult>;
36
36
  /**
37
37
  * Replace an asset metadata
38
38
  */
@@ -46,6 +46,5 @@ export declare class AssetService extends DigitalTwinService {
46
46
  * @param model
47
47
  */
48
48
  updateModelLocales(request: KuzzleRequest, model: string): Promise<ApiAssetUpdateModelLocales[]>;
49
- private getEngine;
50
49
  private refreshModel;
51
50
  }
@@ -153,22 +153,16 @@ class AssetService extends shared_1.DigitalTwinService {
153
153
  for (const [metadataName, metadataValue] of Object.entries(assetModel.asset.defaultMetadata)) {
154
154
  lodash_1.default.set(assetMetadata, metadataName, metadataValue);
155
155
  }
156
- const measures = {};
157
- for (const { name } of assetModel.asset.measures) {
158
- measures[name] = null;
159
- }
160
156
  const asset = await this.createDocument(request, {
161
157
  _id: assetId,
162
158
  _source: {
163
159
  groups: [],
164
- lastMeasuredAt: null,
165
- linkedDevices: [],
166
- measures,
160
+ linkedMeasures: [],
161
+ measureSlots: assetModel.asset.measures,
167
162
  metadata: { ...assetMetadata, ...metadata },
168
163
  model,
169
164
  modelLocales: assetModel.asset.locales,
170
165
  reference,
171
- softTenant: [],
172
166
  },
173
167
  }, {
174
168
  collection: plugin_1.InternalCollection.ASSETS,
@@ -200,15 +194,14 @@ class AssetService extends shared_1.DigitalTwinService {
200
194
  * Delete an asset metadata
201
195
  */
202
196
  async delete(engineId, assetId, request) {
203
- const user = request.getUser();
204
197
  const strict = request.getBoolean("strict");
205
198
  return (0, shared_1.lock)(`asset:${engineId}:${assetId}`, async () => {
206
199
  const asset = await this.get(engineId, assetId, request);
207
- if (strict && asset._source.linkedDevices.length !== 0) {
200
+ if (strict && asset._source.linkedMeasures.length !== 0) {
208
201
  throw new kuzzle_1.BadRequestError(`Asset "${assetId}" is still linked to devices.`);
209
202
  }
210
- for (const { _id: deviceId } of asset._source.linkedDevices) {
211
- await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:device:unlink-asset", { deviceId, user });
203
+ for (const { deviceId } of asset._source.linkedMeasures) {
204
+ await this.unlinkAssetDevice(deviceId, assetId, [], true, request);
212
205
  }
213
206
  await this.deleteDocument(request, assetId, {
214
207
  collection: plugin_1.InternalCollection.ASSETS,
@@ -222,7 +215,7 @@ class AssetService extends shared_1.DigitalTwinService {
222
215
  engineId,
223
216
  });
224
217
  }
225
- async migrateTenant(user, assetsList, engineId, newEngineId) {
218
+ async migrateTenant(user, assetsList, engineId, newEngineId, includeDevices, request) {
226
219
  let errors = [];
227
220
  let successes = [];
228
221
  //Sanity check
@@ -263,7 +256,7 @@ class AssetService extends shared_1.DigitalTwinService {
263
256
  //We want to create the new asset with linked devices and groups empty
264
257
  const assetsContentCopy = lodash_1.default.cloneDeep(assetsContent);
265
258
  for (const asset of assetsContentCopy) {
266
- asset.body.linkedDevices = [];
259
+ asset.body.linkedMeasures = [];
267
260
  asset.body.groups = [];
268
261
  }
269
262
  //Even if they exist in the destination tenant, try creating them all
@@ -281,27 +274,23 @@ class AssetService extends shared_1.DigitalTwinService {
281
274
  //because we reset them when we create the asset
282
275
  const assetOriginal = assets.successes.find((a) => a._id === asset._id);
283
276
  // get linked devices to this asset, if any
284
- const linkedDevices = assetOriginal._source.linkedDevices.map((d) => ({
285
- _id: d._id,
286
- measureNames: d.measureNames,
287
- }));
277
+ const linkedMeasures = assetOriginal._source.linkedMeasures;
288
278
  // ... and iterate over this list
289
- for (const device of linkedDevices) {
290
- // detach linked devices from current tenant (it also unkinks asset)
291
- await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:device:detach-engine", { deviceId: device._id, user });
292
- // ... and attach to new tenant
293
- await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:device:attach-engine", { deviceId: device._id, engineId: newEngineId, user });
294
- // ... and link this device to the asset in the new tenant
295
- await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:device:link-asset", {
296
- assetId: asset._id,
297
- deviceId: device._id,
298
- engineId: newEngineId,
299
- measureNames: device.measureNames,
300
- user,
301
- });
279
+ for (const link of linkedMeasures) {
280
+ if (includeDevices === true) {
281
+ // detach linked devices from current tenant (it also unkinks asset)
282
+ await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:device:detach-engine", { deviceId: link.deviceId, user });
283
+ // ... and attach to new tenant
284
+ await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:device:attach-engine", { deviceId: link.deviceId, engineId: newEngineId, user });
285
+ // ... and link this device to the asset in the new tenant
286
+ await this.linkAssetDevice(newEngineId, link.deviceId, asset._id, link.measureSlots, false, request);
287
+ }
288
+ else {
289
+ await this.unlinkAssetDevice(link.deviceId, asset._id, link.measureSlots, false, request);
290
+ }
302
291
  }
303
292
  }
304
- // Finally here, we can delete the newly create assets in the source engine !
293
+ // Finally here, we can delete the successefully migrated assets from the source engine !
305
294
  await this.sdk.document.mDelete(engineId, plugin_1.InternalCollection.ASSETS, assetsCreatedId);
306
295
  //Refresh ES indexes and collections
307
296
  const collectionsToRefresh = [
@@ -323,7 +312,7 @@ class AssetService extends shared_1.DigitalTwinService {
323
312
  },
324
313
  {
325
314
  collection: plugin_1.InternalCollection.DEVICES,
326
- index: this.config.adminIndex,
315
+ index: this.config.platformIndex,
327
316
  },
328
317
  ].map(({ index, collection }) => {
329
318
  return this.sdk.collection.refresh(index, collection);
@@ -358,7 +347,7 @@ class AssetService extends shared_1.DigitalTwinService {
358
347
  * @param model
359
348
  */
360
349
  async updateModelLocales(request, model) {
361
- const res = await this.sdk.document.search(this.config.adminIndex, plugin_1.InternalCollection.MODELS, {
350
+ const res = await this.sdk.document.search(this.config.platformIndex, plugin_1.InternalCollection.MODELS, {
362
351
  query: {
363
352
  bool: {
364
353
  must: [
@@ -406,10 +395,6 @@ class AssetService extends shared_1.DigitalTwinService {
406
395
  }
407
396
  return results;
408
397
  }
409
- async getEngine(engineId) {
410
- const engine = await this.sdk.document.get(this.config.adminIndex, plugin_1.InternalCollection.CONFIG, `engine-device-manager--${engineId}`);
411
- return engine._source.engine;
412
- }
413
398
  async refreshModel({ assetModel, }) {
414
399
  // For engine group 'commons', fetch all engines
415
400
  const engines = await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:engine:list", {
@@ -448,6 +433,7 @@ class AssetService extends shared_1.DigitalTwinService {
448
433
  ...modelMetadata,
449
434
  ...assetMetadata,
450
435
  };
436
+ asset._source.measureSlots = assetModel.asset.measures;
451
437
  acc[asset.index].push(asset);
452
438
  return acc;
453
439
  }, Object.fromEntries(engines.map((engine) => [