kuzzle-device-manager 2.4.0-beta.2 → 2.4.0-beta.20

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 (128) hide show
  1. package/dist/lib/modules/asset/AssetHistoryService.d.ts +2 -4
  2. package/dist/lib/modules/asset/AssetHistoryService.js +4 -7
  3. package/dist/lib/modules/asset/AssetHistoryService.js.map +1 -1
  4. package/dist/lib/modules/asset/AssetService.d.ts +25 -26
  5. package/dist/lib/modules/asset/AssetService.js +235 -42
  6. package/dist/lib/modules/asset/AssetService.js.map +1 -1
  7. package/dist/lib/modules/asset/AssetsController.d.ts +4 -1
  8. package/dist/lib/modules/asset/AssetsController.js +51 -25
  9. package/dist/lib/modules/asset/AssetsController.js.map +1 -1
  10. package/dist/lib/modules/asset/AssetsGroupsController.js +1 -1
  11. package/dist/lib/modules/asset/AssetsGroupsController.js.map +1 -1
  12. package/dist/lib/modules/asset/model/AssetSerializer.js +1 -0
  13. package/dist/lib/modules/asset/model/AssetSerializer.js.map +1 -1
  14. package/dist/lib/modules/asset/roles/RoleAssetsAdmin.js +3 -0
  15. package/dist/lib/modules/asset/roles/RoleAssetsAdmin.js.map +1 -1
  16. package/dist/lib/modules/asset/types/AssetApi.d.ts +32 -0
  17. package/dist/lib/modules/asset/types/AssetContent.d.ts +1 -1
  18. package/dist/lib/modules/decoder/DecodedPayload.js.map +1 -1
  19. package/dist/lib/modules/decoder/Decoder.d.ts +11 -0
  20. package/dist/lib/modules/decoder/Decoder.js +1 -0
  21. package/dist/lib/modules/decoder/Decoder.js.map +1 -1
  22. package/dist/lib/modules/decoder/DecodersRegister.js.map +1 -1
  23. package/dist/lib/modules/decoder/DecodingState.js +1 -1
  24. package/dist/lib/modules/decoder/DecodingState.js.map +1 -1
  25. package/dist/lib/modules/decoder/PayloadService.d.ts +3 -6
  26. package/dist/lib/modules/decoder/PayloadService.js +11 -17
  27. package/dist/lib/modules/decoder/PayloadService.js.map +1 -1
  28. package/dist/lib/modules/decoder/PayloadsController.js.map +1 -1
  29. package/dist/lib/modules/decoder/types/DecoderContent.d.ts +1 -0
  30. package/dist/lib/modules/device/DeviceService.d.ts +27 -46
  31. package/dist/lib/modules/device/DeviceService.js +159 -73
  32. package/dist/lib/modules/device/DeviceService.js.map +1 -1
  33. package/dist/lib/modules/device/DevicesController.d.ts +2 -1
  34. package/dist/lib/modules/device/DevicesController.js +25 -41
  35. package/dist/lib/modules/device/DevicesController.js.map +1 -1
  36. package/dist/lib/modules/device/collections/deviceMappings.d.ts +2 -46
  37. package/dist/lib/modules/device/collections/deviceMappings.js.map +1 -1
  38. package/dist/lib/modules/device/types/DeviceApi.d.ts +11 -0
  39. package/dist/lib/modules/device/types/DeviceEvents.d.ts +29 -0
  40. package/dist/lib/modules/measure/MeasureExporter.d.ts +5 -2
  41. package/dist/lib/modules/measure/MeasureExporter.js +35 -14
  42. package/dist/lib/modules/measure/MeasureExporter.js.map +1 -1
  43. package/dist/lib/modules/measure/MeasureService.d.ts +2 -6
  44. package/dist/lib/modules/measure/MeasureService.js +6 -11
  45. package/dist/lib/modules/measure/MeasureService.js.map +1 -1
  46. package/dist/lib/modules/measure/collections/measuresMappings.d.ts +18 -0
  47. package/dist/lib/modules/measure/collections/measuresMappings.js +14 -0
  48. package/dist/lib/modules/measure/collections/measuresMappings.js.map +1 -1
  49. package/dist/lib/modules/measure/measures/BatteryMeasure.js +12 -0
  50. package/dist/lib/modules/measure/measures/BatteryMeasure.js.map +1 -1
  51. package/dist/lib/modules/measure/measures/HumidityMeasure.js +12 -0
  52. package/dist/lib/modules/measure/measures/HumidityMeasure.js.map +1 -1
  53. package/dist/lib/modules/measure/measures/MovementMeasure.js +10 -0
  54. package/dist/lib/modules/measure/measures/MovementMeasure.js.map +1 -1
  55. package/dist/lib/modules/measure/measures/PositionMeasure.js +22 -0
  56. package/dist/lib/modules/measure/measures/PositionMeasure.js.map +1 -1
  57. package/dist/lib/modules/measure/measures/TemperatureMeasure.js +12 -0
  58. package/dist/lib/modules/measure/measures/TemperatureMeasure.js.map +1 -1
  59. package/dist/lib/modules/measure/types/MeasureContent.d.ts +4 -0
  60. package/dist/lib/modules/measure/types/MeasureDefinition.d.ts +28 -3
  61. package/dist/lib/modules/model/MappingsConflictsError.d.ts +7 -0
  62. package/dist/lib/modules/model/MappingsConflictsError.js +20 -0
  63. package/dist/lib/modules/model/MappingsConflictsError.js.map +1 -0
  64. package/dist/lib/modules/model/ModelSerializer.js.map +1 -1
  65. package/dist/lib/modules/model/ModelService.d.ts +13 -8
  66. package/dist/lib/modules/model/ModelService.js +162 -28
  67. package/dist/lib/modules/model/ModelService.js.map +1 -1
  68. package/dist/lib/modules/model/ModelsConflicts.d.ts +30 -0
  69. package/dist/lib/modules/model/ModelsConflicts.js +107 -0
  70. package/dist/lib/modules/model/ModelsConflicts.js.map +1 -0
  71. package/dist/lib/modules/model/ModelsController.d.ts +2 -1
  72. package/dist/lib/modules/model/ModelsController.js +27 -3
  73. package/dist/lib/modules/model/ModelsController.js.map +1 -1
  74. package/dist/lib/modules/model/ModelsRegister.d.ts +28 -3
  75. package/dist/lib/modules/model/ModelsRegister.js +50 -5
  76. package/dist/lib/modules/model/ModelsRegister.js.map +1 -1
  77. package/dist/lib/modules/model/collections/modelsMappings.js +24 -0
  78. package/dist/lib/modules/model/collections/modelsMappings.js.map +1 -1
  79. package/dist/lib/modules/model/types/ModelApi.d.ts +24 -3
  80. package/dist/lib/modules/model/types/ModelContent.d.ts +207 -2
  81. package/dist/lib/modules/model/types/ModelContent.js +9 -0
  82. package/dist/lib/modules/model/types/ModelContent.js.map +1 -1
  83. package/dist/lib/modules/model/types/ModelDefinition.d.ts +129 -5
  84. package/dist/lib/modules/plugin/DeviceManagerEngine.d.ts +141 -5
  85. package/dist/lib/modules/plugin/DeviceManagerEngine.js +238 -41
  86. package/dist/lib/modules/plugin/DeviceManagerEngine.js.map +1 -1
  87. package/dist/lib/modules/plugin/DeviceManagerPlugin.d.ts +113 -8
  88. package/dist/lib/modules/plugin/DeviceManagerPlugin.js +146 -16
  89. package/dist/lib/modules/plugin/DeviceManagerPlugin.js.map +1 -1
  90. package/dist/lib/modules/plugin/exports.d.ts +1 -1
  91. package/dist/lib/modules/plugin/exports.js +1 -1
  92. package/dist/lib/modules/plugin/exports.js.map +1 -1
  93. package/dist/lib/modules/plugin/index.d.ts +1 -2
  94. package/dist/lib/modules/plugin/index.js +1 -2
  95. package/dist/lib/modules/plugin/index.js.map +1 -1
  96. package/dist/lib/modules/plugin/types/DeviceManagerConfiguration.d.ts +27 -5
  97. package/dist/lib/modules/plugin/types/InternalCollection.js +1 -1
  98. package/dist/lib/modules/plugin/types/InternalCollection.js.map +1 -1
  99. package/dist/lib/modules/plugin/types/Pipes.d.ts +17 -0
  100. package/dist/lib/modules/plugin/types/Pipes.js +3 -0
  101. package/dist/lib/modules/plugin/types/Pipes.js.map +1 -0
  102. package/dist/lib/modules/plugin/types/exports.d.ts +1 -0
  103. package/dist/lib/modules/plugin/types/exports.js +18 -0
  104. package/dist/lib/modules/plugin/types/exports.js.map +1 -0
  105. package/dist/lib/modules/plugin/types/index.d.ts +3 -0
  106. package/dist/lib/modules/plugin/types/index.js +20 -0
  107. package/dist/lib/modules/plugin/types/index.js.map +1 -0
  108. package/dist/lib/modules/shared/index.d.ts +3 -4
  109. package/dist/lib/modules/shared/index.js +3 -4
  110. package/dist/lib/modules/shared/index.js.map +1 -1
  111. package/dist/lib/modules/shared/services/AbstractExporter.d.ts +1 -0
  112. package/dist/lib/modules/shared/services/AbstractExporter.js +7 -1
  113. package/dist/lib/modules/shared/services/AbstractExporter.js.map +1 -1
  114. package/dist/lib/modules/shared/services/BaseService.d.ts +69 -0
  115. package/dist/lib/modules/shared/services/BaseService.js +157 -0
  116. package/dist/lib/modules/shared/services/BaseService.js.map +1 -0
  117. package/dist/lib/modules/shared/services/DigitalTwinExporter.js +9 -3
  118. package/dist/lib/modules/shared/services/DigitalTwinExporter.js.map +1 -1
  119. package/dist/lib/modules/shared/services/index.d.ts +1 -0
  120. package/dist/lib/modules/shared/services/index.js +1 -0
  121. package/dist/lib/modules/shared/services/index.js.map +1 -1
  122. package/dist/lib/modules/shared/utils/flattenObject.js.map +1 -1
  123. package/dist/lib/modules/shared/utils/lock.js.map +1 -1
  124. package/dist/lib/modules/shared/utils/objectDiff.js.map +1 -1
  125. package/package.json +26 -26
  126. package/dist/lib/modules/shared/utils/ask.d.ts +0 -8
  127. package/dist/lib/modules/shared/utils/ask.js +0 -12
  128. package/dist/lib/modules/shared/utils/ask.js.map +0 -1
@@ -30,6 +30,15 @@ exports.measuresMappings = {
30
30
  // populated with asset models metadata mappings
31
31
  },
32
32
  },
33
+ groups: {
34
+ properties: {
35
+ id: {
36
+ type: "keyword",
37
+ fields: { text: { type: "text" } },
38
+ },
39
+ date: { type: "date" },
40
+ },
41
+ },
33
42
  },
34
43
  },
35
44
  /**
@@ -39,6 +48,11 @@ exports.measuresMappings = {
39
48
  properties: {
40
49
  type: { type: "keyword" },
41
50
  measureName: { type: "keyword" },
51
+ deviceMetadata: {
52
+ properties: {
53
+ // populated with device models metadata mappings
54
+ },
55
+ },
42
56
  payloadUuids: { type: "keyword" },
43
57
  deviceModel: { type: "keyword" },
44
58
  reference: { type: "keyword" },
@@ -1 +1 @@
1
- {"version":3,"file":"measuresMappings.js","sourceRoot":"","sources":["../../../../../lib/modules/measure/collections/measuresMappings.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACU,QAAA,gBAAgB,GAAG;IAC9B,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE;QACV,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAEzB,MAAM,EAAE;YACN,UAAU,EAAE;YACV,yCAAyC;aAC1C;SACF;QAED;;WAEG;QACH,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QAE5B,KAAK,EAAE;YACL,UAAU,EAAE;gBACV,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBACxB,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC1B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC9B,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,QAAQ,EAAE;oBACR,UAAU,EAAE;oBACV,gDAAgD;qBACjD;iBACF;aACF;SACF;QAED;;WAEG;QACH,MAAM,EAAE;YACN,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAEzB,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAEhC,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAEjC,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAEhC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAE9B,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;aACzB;SACF;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"measuresMappings.js","sourceRoot":"","sources":["../../../../../lib/modules/measure/collections/measuresMappings.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACU,QAAA,gBAAgB,GAAG;IAC9B,OAAO,EAAE,QAAQ;IACjB,UAAU,EAAE;QACV,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;QAEzB,MAAM,EAAE;YACN,UAAU,EAAE;YACV,yCAAyC;aAC1C;SACF;QAED;;WAEG;QACH,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;QAE5B,KAAK,EAAE;YACL,UAAU,EAAE;gBACV,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBACxB,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC1B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC9B,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAChC,QAAQ,EAAE;oBACR,UAAU,EAAE;oBACV,gDAAgD;qBACjD;iBACF;gBACD,MAAM,EAAE;oBACN,UAAU,EAAE;wBACV,EAAE,EAAE;4BACF,IAAI,EAAE,SAAS;4BACf,MAAM,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE;yBACnC;wBACD,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;qBACvB;iBACF;aACF;SACF;QAED;;WAEG;QACH,MAAM,EAAE;YACN,UAAU,EAAE;gBACV,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAEzB,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAEhC,cAAc,EAAE;oBACd,UAAU,EAAE;oBACV,iDAAiD;qBAClD;iBACF;gBAED,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAEjC,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAEhC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;gBAE9B,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;aACzB;SACF;KACF;CACF,CAAC"}
@@ -3,5 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.batteryMeasureDefinition = void 0;
4
4
  exports.batteryMeasureDefinition = {
5
5
  valuesMappings: { battery: { type: "integer" } },
6
+ valuesDetails: {
7
+ battery: {
8
+ en: {
9
+ friendlyName: "Battery level",
10
+ unit: "%",
11
+ },
12
+ fr: {
13
+ friendlyName: "Niveau de batterie",
14
+ unit: "%",
15
+ },
16
+ },
17
+ },
6
18
  };
7
19
  //# sourceMappingURL=BatteryMeasure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BatteryMeasure.js","sourceRoot":"","sources":["../../../../../lib/modules/measure/measures/BatteryMeasure.ts"],"names":[],"mappings":";;;AAQa,QAAA,wBAAwB,GAAsB;IACzD,cAAc,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;CACjD,CAAC"}
1
+ {"version":3,"file":"BatteryMeasure.js","sourceRoot":"","sources":["../../../../../lib/modules/measure/measures/BatteryMeasure.ts"],"names":[],"mappings":";;;AAQa,QAAA,wBAAwB,GAAsB;IACzD,cAAc,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;IAEhD,aAAa,EAAE;QACb,OAAO,EAAE;YACP,EAAE,EAAE;gBACF,YAAY,EAAE,eAAe;gBAC7B,IAAI,EAAE,GAAG;aACV;YACD,EAAE,EAAE;gBACF,YAAY,EAAE,oBAAoB;gBAClC,IAAI,EAAE,GAAG;aACV;SACF;KACF;CACF,CAAC"}
@@ -3,5 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.humidityMeasureDefinition = void 0;
4
4
  exports.humidityMeasureDefinition = {
5
5
  valuesMappings: { humidity: { type: "float" } },
6
+ valuesDetails: {
7
+ humidity: {
8
+ en: {
9
+ friendlyName: "Relative humidity",
10
+ unit: "%",
11
+ },
12
+ fr: {
13
+ friendlyName: "Humidité relative",
14
+ unit: "%",
15
+ },
16
+ },
17
+ },
6
18
  };
7
19
  //# sourceMappingURL=HumidityMeasure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HumidityMeasure.js","sourceRoot":"","sources":["../../../../../lib/modules/measure/measures/HumidityMeasure.ts"],"names":[],"mappings":";;;AAQa,QAAA,yBAAyB,GAAsB;IAC1D,cAAc,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;CAChD,CAAC"}
1
+ {"version":3,"file":"HumidityMeasure.js","sourceRoot":"","sources":["../../../../../lib/modules/measure/measures/HumidityMeasure.ts"],"names":[],"mappings":";;;AAQa,QAAA,yBAAyB,GAAsB;IAC1D,cAAc,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAC/C,aAAa,EAAE;QACb,QAAQ,EAAE;YACR,EAAE,EAAE;gBACF,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,GAAG;aACV;YACD,EAAE,EAAE;gBACF,YAAY,EAAE,mBAAmB;gBACjC,IAAI,EAAE,GAAG;aACV;SACF;KACF;CACF,CAAC"}
@@ -3,5 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.movementMeasureDefinition = void 0;
4
4
  exports.movementMeasureDefinition = {
5
5
  valuesMappings: { movement: { type: "boolean" } },
6
+ valuesDetails: {
7
+ movement: {
8
+ en: {
9
+ friendlyName: "Movement detection",
10
+ },
11
+ fr: {
12
+ friendlyName: "Détection de mouvement",
13
+ },
14
+ },
15
+ },
6
16
  };
7
17
  //# sourceMappingURL=MovementMeasure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MovementMeasure.js","sourceRoot":"","sources":["../../../../../lib/modules/measure/measures/MovementMeasure.ts"],"names":[],"mappings":";;;AAQa,QAAA,yBAAyB,GAAsB;IAC1D,cAAc,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;CAClD,CAAC"}
1
+ {"version":3,"file":"MovementMeasure.js","sourceRoot":"","sources":["../../../../../lib/modules/measure/measures/MovementMeasure.ts"],"names":[],"mappings":";;;AAQa,QAAA,yBAAyB,GAAsB;IAC1D,cAAc,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE;IACjD,aAAa,EAAE;QACb,QAAQ,EAAE;YACR,EAAE,EAAE;gBACF,YAAY,EAAE,oBAAoB;aACnC;YACD,EAAE,EAAE;gBACF,YAAY,EAAE,wBAAwB;aACvC;SACF;KACF;CACF,CAAC"}
@@ -7,5 +7,27 @@ exports.positionMeasureDefinition = {
7
7
  accuracy: { type: "float" },
8
8
  altitude: { type: "float" },
9
9
  },
10
+ valuesDetails: {
11
+ position: {
12
+ en: {
13
+ friendlyName: "Localization",
14
+ unit: "(lat,lon)",
15
+ },
16
+ fr: {
17
+ friendlyName: "Localisation",
18
+ unit: "(lat,lon)",
19
+ },
20
+ },
21
+ altitude: {
22
+ en: {
23
+ friendlyName: "Altitude",
24
+ unit: "m",
25
+ },
26
+ fr: {
27
+ friendlyName: "Altitude",
28
+ unit: "m",
29
+ },
30
+ },
31
+ },
10
32
  };
11
33
  //# sourceMappingURL=PositionMeasure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PositionMeasure.js","sourceRoot":"","sources":["../../../../../lib/modules/measure/measures/PositionMeasure.ts"],"names":[],"mappings":";;;AAaa,QAAA,yBAAyB,GAAsB;IAC1D,cAAc,EAAE;QACd,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;QAC/B,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;QAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;KAC5B;CACF,CAAC"}
1
+ {"version":3,"file":"PositionMeasure.js","sourceRoot":"","sources":["../../../../../lib/modules/measure/measures/PositionMeasure.ts"],"names":[],"mappings":";;;AAaa,QAAA,yBAAyB,GAAsB;IAC1D,cAAc,EAAE;QACd,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;QAC/B,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;QAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;KAC5B;IACD,aAAa,EAAE;QACb,QAAQ,EAAE;YACR,EAAE,EAAE;gBACF,YAAY,EAAE,cAAc;gBAC5B,IAAI,EAAE,WAAW;aAClB;YACD,EAAE,EAAE;gBACF,YAAY,EAAE,cAAc;gBAC5B,IAAI,EAAE,WAAW;aAClB;SACF;QACD,QAAQ,EAAE;YACR,EAAE,EAAE;gBACF,YAAY,EAAE,UAAU;gBACxB,IAAI,EAAE,GAAG;aACV;YACD,EAAE,EAAE;gBACF,YAAY,EAAE,UAAU;gBACxB,IAAI,EAAE,GAAG;aACV;SACF;KACF;CACF,CAAC"}
@@ -3,5 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.temperatureMeasureDefinition = void 0;
4
4
  exports.temperatureMeasureDefinition = {
5
5
  valuesMappings: { temperature: { type: "float" } },
6
+ valuesDetails: {
7
+ temperature: {
8
+ en: {
9
+ friendlyName: "Temperature",
10
+ unit: "°C",
11
+ },
12
+ fr: {
13
+ friendlyName: "Température",
14
+ unit: "°C",
15
+ },
16
+ },
17
+ },
6
18
  };
7
19
  //# sourceMappingURL=TemperatureMeasure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TemperatureMeasure.js","sourceRoot":"","sources":["../../../../../lib/modules/measure/measures/TemperatureMeasure.ts"],"names":[],"mappings":";;;AAQa,QAAA,4BAA4B,GAAsB;IAC7D,cAAc,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;CACnD,CAAC"}
1
+ {"version":3,"file":"TemperatureMeasure.js","sourceRoot":"","sources":["../../../../../lib/modules/measure/measures/TemperatureMeasure.ts"],"names":[],"mappings":";;;AAQa,QAAA,4BAA4B,GAAsB;IAC7D,cAAc,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAClD,aAAa,EAAE;QACb,WAAW,EAAE;YACX,EAAE,EAAE;gBACF,YAAY,EAAE,aAAa;gBAC3B,IAAI,EAAE,IAAI;aACX;YACD,EAAE,EAAE;gBACF,YAAY,EAAE,aAAa;gBAC3B,IAAI,EAAE,IAAI;aACX;SACF;KACF;CACF,CAAC"}
@@ -10,6 +10,10 @@ export type MeasureOriginDevice = {
10
10
  * Name of the measure in the device
11
11
  */
12
12
  measureName: string;
13
+ /**
14
+ * Origin device metadata
15
+ */
16
+ deviceMetadata?: Metadata;
13
17
  /**
14
18
  * Payload uuids that were used to create this measure.
15
19
  */
@@ -1,15 +1,40 @@
1
1
  import { JSONObject } from "kuzzle-sdk";
2
+ interface MeasureLocales {
3
+ [localeString: string]: {
4
+ friendlyName: string;
5
+ unit?: string;
6
+ };
7
+ }
8
+ export interface MeasureValuesDetails {
9
+ [valueName: string]: MeasureLocales;
10
+ }
2
11
  /**
3
12
  * Represents a measure definition registered by the Device Manager
4
13
  *
5
14
  * @example
6
- * {
7
- * valuesMappings: { temperature: { type: 'float' } },
8
- * }
15
+ *{
16
+ * valuesMappings: { temperature: { type: "float" } },
17
+ * valuesDetails: {
18
+ * temperature: {
19
+ * en: {
20
+ * friendlyName: "Temperature",
21
+ * unit: "°C",
22
+ * },
23
+ * fr: {
24
+ * friendlyName: "Température",
25
+ * unit: "°C",
26
+ * },
27
+ * },
28
+ * },
29
+ *}
9
30
  */
10
31
  export interface MeasureDefinition {
11
32
  /**
12
33
  * Mappings for the measurement values in order to index the fields
13
34
  */
14
35
  valuesMappings: JSONObject;
36
+ valuesDetails?: {
37
+ [valueName: string]: MeasureLocales;
38
+ };
15
39
  }
40
+ export {};
@@ -0,0 +1,7 @@
1
+ import { JSONObject, KuzzleError } from "kuzzle";
2
+ export declare class MappingsConflictsError extends KuzzleError {
3
+ private conflicts;
4
+ constructor(message: string, conflicts: JSONObject, id?: string, code?: number);
5
+ get name(): string;
6
+ toJSON(): JSONObject;
7
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MappingsConflictsError = void 0;
4
+ const kuzzle_1 = require("kuzzle");
5
+ class MappingsConflictsError extends kuzzle_1.KuzzleError {
6
+ constructor(message, conflicts, id, code) {
7
+ super(message, 409, id, code);
8
+ this.conflicts = conflicts;
9
+ }
10
+ get name() {
11
+ return "MappingsConflictsError";
12
+ }
13
+ toJSON() {
14
+ const json = super.toJSON();
15
+ json.chunks = this.conflicts;
16
+ return json;
17
+ }
18
+ }
19
+ exports.MappingsConflictsError = MappingsConflictsError;
20
+ //# sourceMappingURL=MappingsConflictsError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MappingsConflictsError.js","sourceRoot":"","sources":["../../../../lib/modules/model/MappingsConflictsError.ts"],"names":[],"mappings":";;;AAAA,mCAAiD;AAEjD,MAAa,sBAAuB,SAAQ,oBAAW;IAErD,YACE,OAAe,EACf,SAAqB,EACrB,EAAW,EACX,IAAa;QAEb,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,wBAAwB,CAAC;IAClC,CAAC;IAEM,MAAM;QACX,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QAE5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC;QAE7B,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAvBD,wDAuBC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ModelSerializer.js","sourceRoot":"","sources":["../../../../lib/modules/model/ModelSerializer.ts"],"names":[],"mappings":";;;AAAA,mCAAyC;AAQzC,MAAa,eAAe;IAC1B,MAAM,CAAC,EAAE,CAAyB,IAAY,EAAE,KAAQ;QACtD,IAAI,IAAI,KAAK,OAAO,EAAE;YACpB,OAAO,eAAe,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;SAC5D;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAO,gBAAgB,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;SAC7D;aAAM,IAAI,IAAI,KAAK,SAAS,EAAE;YAC7B,OAAO,iBAAiB,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;SAC9D;QAED,MAAM,IAAI,wBAAe,CAAC,uBAAuB,IAAI,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,KAAK,CAAyB,IAAY,EAAE,KAAQ;QACzD,IAAI,IAAI,KAAK,OAAO,EAAE;YACpB,OAAQ,KAA2B,CAAC,KAAK,CAAC,KAAK,CAAC;SACjD;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE;YAC5B,OAAQ,KAA4B,CAAC,MAAM,CAAC,KAAK,CAAC;SACnD;aAAM,IAAI,IAAI,KAAK,SAAS,EAAE;YAC7B,OAAQ,KAA6B,CAAC,OAAO,CAAC,IAAI,CAAC;SACpD;QAED,MAAM,IAAI,wBAAe,CAAC,uBAAuB,IAAI,GAAG,CAAC,CAAC;IAC5D,CAAC;CACF;AAxBD,0CAwBC"}
1
+ {"version":3,"file":"ModelSerializer.js","sourceRoot":"","sources":["../../../../lib/modules/model/ModelSerializer.ts"],"names":[],"mappings":";;;AAAA,mCAAyC;AAQzC,MAAa,eAAe;IAC1B,MAAM,CAAC,EAAE,CAAyB,IAAY,EAAE,KAAQ;QACtD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,OAAO,eAAe,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAC7D,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,gBAAgB,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAC9D,CAAC;aAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,iBAAiB,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAC/D,CAAC;QAED,MAAM,IAAI,wBAAe,CAAC,uBAAuB,IAAI,GAAG,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,KAAK,CAAyB,IAAY,EAAE,KAAQ;QACzD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,OAAQ,KAA2B,CAAC,KAAK,CAAC,KAAK,CAAC;QAClD,CAAC;aAAM,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAQ,KAA4B,CAAC,MAAM,CAAC,KAAK,CAAC;QACpD,CAAC;aAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAQ,KAA6B,CAAC,OAAO,CAAC,IAAI,CAAC;QACrD,CAAC;QAED,MAAM,IAAI,wBAAe,CAAC,uBAAuB,IAAI,GAAG,CAAC,CAAC;IAC5D,CAAC;CACF;AAxBD,0CAwBC"}
@@ -1,16 +1,17 @@
1
+ import { KuzzleRequest } from "kuzzle";
1
2
  import { JSONObject, KDocument } from "kuzzle-sdk";
2
3
  import { DeviceManagerPlugin } from "../plugin";
3
- import { AssetModelContent, DeviceModelContent, MeasureModelContent } from "./types/ModelContent";
4
- export declare class ModelService {
5
- private config;
6
- private context;
7
- private get sdk();
4
+ import { BaseService } from "../shared";
5
+ import { AssetModelContent, DeviceModelContent, MeasureModelContent, MetadataDetails, MetadataGroups, MetadataMappings, TooltipModels } from "./types/ModelContent";
6
+ import { MeasureValuesDetails } from "../measure";
7
+ export declare class ModelService extends BaseService {
8
8
  constructor(plugin: DeviceManagerPlugin);
9
9
  registerAskEvents(): void;
10
- writeAsset(engineGroup: string, model: string, metadataMappings: JSONObject, defaultMetadata: JSONObject, measures: AssetModelContent["asset"]["measures"]): Promise<KDocument<AssetModelContent>>;
10
+ private checkModelsConflicts;
11
+ writeAsset(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: AssetModelContent["asset"]["measures"], tooltipModels: TooltipModels): Promise<KDocument<AssetModelContent>>;
11
12
  private checkDefaultValues;
12
- writeDevice(model: string, metadataMappings: JSONObject, defaultMetadata: JSONObject, measures: DeviceModelContent["device"]["measures"]): Promise<KDocument<DeviceModelContent>>;
13
- writeMeasure(type: string, valuesMappings: JSONObject): Promise<KDocument<MeasureModelContent>>;
13
+ writeDevice(model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: DeviceModelContent["device"]["measures"]): Promise<KDocument<DeviceModelContent>>;
14
+ writeMeasure(type: string, valuesMappings: JSONObject, valuesDetails?: MeasureValuesDetails): Promise<KDocument<MeasureModelContent>>;
14
15
  deleteAsset(_id: string): Promise<void>;
15
16
  deleteDevice(_id: string): Promise<void>;
16
17
  deleteMeasure(_id: string): Promise<void>;
@@ -22,4 +23,8 @@ export declare class ModelService {
22
23
  getAsset(engineGroup: string, model: string): Promise<KDocument<AssetModelContent>>;
23
24
  getDevice(model: string): Promise<KDocument<DeviceModelContent>>;
24
25
  getMeasure(type: string): Promise<KDocument<MeasureModelContent>>;
26
+ /**
27
+ * Update an asset model
28
+ */
29
+ updateAsset(engineGroup: string, model: string, metadataMappings: MetadataMappings, defaultMetadata: JSONObject, metadataDetails: MetadataDetails, metadataGroups: MetadataGroups, measures: AssetModelContent["asset"]["measures"], tooltipModels: TooltipModels, request: KuzzleRequest): Promise<KDocument<AssetModelContent>>;
25
30
  }
@@ -2,84 +2,171 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ModelService = void 0;
4
4
  const kuzzle_1 = require("kuzzle");
5
+ const kuzzle_plugin_commons_1 = require("kuzzle-plugin-commons");
5
6
  const plugin_1 = require("../plugin");
6
- const ask_1 = require("../shared/utils/ask");
7
- const flattenObject_1 = require("../shared/utils/flattenObject");
7
+ const shared_1 = require("../shared");
8
8
  const ModelSerializer_1 = require("./ModelSerializer");
9
- class ModelService {
10
- get sdk() {
11
- return this.context.accessors.sdk;
12
- }
9
+ const MappingsConflictsError_1 = require("./MappingsConflictsError");
10
+ class ModelService extends shared_1.BaseService {
13
11
  constructor(plugin) {
14
- this.config = plugin.config;
15
- this.context = plugin.context;
12
+ super(plugin);
16
13
  this.registerAskEvents();
17
14
  }
18
15
  registerAskEvents() {
19
- (0, ask_1.onAsk)("ask:device-manager:model:asset:get", async ({ engineGroup, model }) => {
16
+ (0, kuzzle_plugin_commons_1.onAsk)("ask:device-manager:model:asset:get", async ({ engineGroup, model }) => {
20
17
  const assetModel = await this.getAsset(engineGroup, model);
21
18
  return assetModel._source;
22
19
  });
23
- (0, ask_1.onAsk)("ask:device-manager:model:device:get", async ({ model }) => {
20
+ (0, kuzzle_plugin_commons_1.onAsk)("ask:device-manager:model:device:get", async ({ model }) => {
24
21
  const deviceModel = await this.getDevice(model);
25
22
  return deviceModel._source;
26
23
  });
27
- (0, ask_1.onAsk)("ask:device-manager:model:measure:get", async ({ type }) => {
24
+ (0, kuzzle_plugin_commons_1.onAsk)("ask:device-manager:model:measure:get", async ({ type }) => {
28
25
  const measureModel = await this.getMeasure(type);
29
26
  return measureModel._source;
30
27
  });
28
+ const genericModelsHandler = async (documents, request) => {
29
+ const { index, collection } = request.input.args;
30
+ if (index === this.config.adminIndex && collection === "models") {
31
+ const models = documents.map((elt) => {
32
+ return elt._source;
33
+ });
34
+ await this.checkModelsConflicts(models);
35
+ }
36
+ return documents;
37
+ };
38
+ this.app.pipe.register("generic:document:beforeWrite", genericModelsHandler);
39
+ this.app.pipe.register("generic:document:beforeUpdate", genericModelsHandler);
40
+ this.app.hook.register("generic:document:afterUpdate", async (documents, request) => {
41
+ const { index, collection } = request.input.args;
42
+ if (index === this.config.adminIndex && collection === "models") {
43
+ await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:engine:updateAll");
44
+ }
45
+ });
31
46
  }
32
- async writeAsset(engineGroup, model, metadataMappings, defaultMetadata, measures) {
47
+ async checkModelsConflicts(documents) {
48
+ const assets = documents.filter((elt) => {
49
+ return elt.type === "asset";
50
+ });
51
+ const devices = documents.filter((elt) => {
52
+ return elt.type === "device";
53
+ });
54
+ const measures = documents.filter((elt) => {
55
+ return elt.type === "measure";
56
+ });
57
+ if (assets.length > 0) {
58
+ const conflicts = await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:engine:doesUpdateConflict", {
59
+ twin: {
60
+ models: assets,
61
+ type: "asset",
62
+ },
63
+ });
64
+ if (conflicts.length > 0) {
65
+ throw new MappingsConflictsError_1.MappingsConflictsError(`New assets mappings are causing conflicts`, conflicts);
66
+ }
67
+ }
68
+ if (devices.length > 0) {
69
+ const conflicts = await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:engine:doesUpdateConflict", {
70
+ twin: {
71
+ models: devices,
72
+ type: "device",
73
+ },
74
+ });
75
+ if (conflicts.length > 0) {
76
+ throw new MappingsConflictsError_1.MappingsConflictsError(`New devices mappings are causing conflicts`, conflicts);
77
+ }
78
+ }
79
+ if (measures.length > 0) {
80
+ const conflicts = await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:engine:doesUpdateConflict", {
81
+ measuresModels: measures,
82
+ });
83
+ if (conflicts.length > 0) {
84
+ throw new MappingsConflictsError_1.MappingsConflictsError(`New measures mappings are causing conflicts`, conflicts);
85
+ }
86
+ }
87
+ }
88
+ async writeAsset(engineGroup, model, metadataMappings, defaultMetadata, metadataDetails, metadataGroups, measures, tooltipModels) {
33
89
  if (kuzzle_1.Inflector.pascalCase(model) !== model) {
34
90
  throw new kuzzle_1.BadRequestError(`Asset model "${model}" must be PascalCase.`);
35
91
  }
36
92
  const modelContent = {
37
- asset: { defaultMetadata, measures, metadataMappings, model },
93
+ asset: {
94
+ defaultMetadata,
95
+ measures,
96
+ metadataDetails,
97
+ metadataGroups,
98
+ metadataMappings,
99
+ model,
100
+ tooltipModels,
101
+ },
38
102
  engineGroup,
39
103
  type: "asset",
40
104
  };
41
105
  this.checkDefaultValues(metadataMappings, defaultMetadata);
106
+ const conflicts = await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:engine:doesUpdateConflict", { twin: { models: [modelContent], type: "asset" } });
107
+ if (conflicts.length > 0) {
108
+ throw new MappingsConflictsError_1.MappingsConflictsError(`New assets mappings are causing conflicts`, conflicts);
109
+ }
42
110
  const assetModel = await this.sdk.document.createOrReplace(this.config.adminIndex, plugin_1.InternalCollection.MODELS, ModelSerializer_1.ModelSerializer.id("asset", modelContent), modelContent);
43
111
  await this.sdk.collection.refresh(this.config.adminIndex, plugin_1.InternalCollection.MODELS);
44
- await (0, ask_1.ask)("ask:device-manager:engine:updateAll");
45
- await (0, ask_1.ask)("ask:device-manager:asset:refresh-model", {
112
+ await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:engine:updateAll");
113
+ await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:asset:refresh-model", {
46
114
  assetModel: modelContent,
47
115
  });
48
116
  return assetModel;
49
117
  }
50
118
  checkDefaultValues(metadataMappings, defaultMetadata) {
51
- const metadata = Object.keys(JSON.parse(JSON.stringify((0, flattenObject_1.flattenObject)(metadataMappings))
119
+ const metadata = Object.keys(JSON.parse(JSON.stringify((0, shared_1.flattenObject)(metadataMappings))
52
120
  .replace(/properties\./g, "")
53
121
  .replace(/\.type/g, "")));
54
- const values = Object.keys((0, flattenObject_1.flattenObject)(defaultMetadata));
122
+ const values = Object.keys((0, shared_1.flattenObject)(defaultMetadata));
55
123
  for (let i = 0; i < values.length; i++) {
56
124
  if (!metadata.includes(values[i])) {
57
125
  throw new kuzzle_1.BadRequestError(`The default value "${values[i]}" is not in the metadata mappings.`);
58
126
  }
59
127
  }
60
128
  }
61
- async writeDevice(model, metadataMappings, defaultMetadata, measures) {
129
+ async writeDevice(model, metadataMappings, defaultMetadata, metadataDetails, metadataGroups, measures) {
62
130
  if (kuzzle_1.Inflector.pascalCase(model) !== model) {
63
131
  throw new kuzzle_1.BadRequestError(`Device model "${model}" must be PascalCase.`);
64
132
  }
65
133
  const modelContent = {
66
- device: { defaultMetadata, measures, metadataMappings, model },
134
+ device: {
135
+ defaultMetadata,
136
+ measures,
137
+ metadataDetails,
138
+ metadataGroups,
139
+ metadataMappings,
140
+ model,
141
+ },
67
142
  type: "device",
68
143
  };
69
- const assetModel = await this.sdk.document.createOrReplace(this.config.adminIndex, plugin_1.InternalCollection.MODELS, ModelSerializer_1.ModelSerializer.id("device", modelContent), modelContent);
144
+ const conflicts = await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:engine:doesUpdateConflict", { twin: { models: [modelContent], type: "device" } });
145
+ if (conflicts.length > 0) {
146
+ throw new MappingsConflictsError_1.MappingsConflictsError(`New assets mappings are causing conflicts`, conflicts);
147
+ }
148
+ const deviceModel = await this.sdk.document.createOrReplace(this.config.adminIndex, plugin_1.InternalCollection.MODELS, ModelSerializer_1.ModelSerializer.id("device", modelContent), modelContent);
70
149
  await this.sdk.collection.refresh(this.config.adminIndex, plugin_1.InternalCollection.MODELS);
71
- await (0, ask_1.ask)("ask:device-manager:engine:updateAll");
72
- return assetModel;
150
+ await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:engine:updateAll");
151
+ return deviceModel;
73
152
  }
74
- async writeMeasure(type, valuesMappings) {
153
+ async writeMeasure(type, valuesMappings, valuesDetails) {
75
154
  const modelContent = {
76
- measure: { type, valuesMappings },
155
+ measure: {
156
+ type,
157
+ valuesDetails,
158
+ valuesMappings,
159
+ },
77
160
  type: "measure",
78
161
  };
79
- const assetModel = await this.sdk.document.createOrReplace(this.config.adminIndex, plugin_1.InternalCollection.MODELS, ModelSerializer_1.ModelSerializer.id("measure", modelContent), modelContent);
162
+ const conflicts = await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:engine:doesUpdateConflict", { measuresModels: [modelContent] });
163
+ if (conflicts.length > 0) {
164
+ throw new MappingsConflictsError_1.MappingsConflictsError(`New assets mappings are causing conflicts`, conflicts);
165
+ }
166
+ const measureModel = await this.sdk.document.createOrReplace(this.config.adminIndex, plugin_1.InternalCollection.MODELS, ModelSerializer_1.ModelSerializer.id("measure", modelContent), modelContent);
80
167
  await this.sdk.collection.refresh(this.config.adminIndex, plugin_1.InternalCollection.MODELS);
81
- await (0, ask_1.ask)("ask:device-manager:engine:updateAll");
82
- return assetModel;
168
+ await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:engine:updateAll");
169
+ return measureModel;
83
170
  }
84
171
  async deleteAsset(_id) {
85
172
  await this.sdk.document.delete(this.config.adminIndex, plugin_1.InternalCollection.MODELS, _id);
@@ -92,7 +179,15 @@ class ModelService {
92
179
  }
93
180
  async listAsset(engineGroup) {
94
181
  const query = {
95
- and: [{ equals: { type: "asset" } }, { equals: { engineGroup } }],
182
+ and: [
183
+ { equals: { type: "asset" } },
184
+ {
185
+ or: [
186
+ { equals: { engineGroup } },
187
+ { equals: { engineGroup: "commons" } },
188
+ ],
189
+ },
190
+ ],
96
191
  };
97
192
  const sort = { "asset.model": "asc" };
98
193
  const result = await this.sdk.document.search(this.config.adminIndex, plugin_1.InternalCollection.MODELS, { query, sort }, { lang: "koncorde", size: 5000 });
@@ -174,6 +269,45 @@ class ModelService {
174
269
  }
175
270
  return result.hits[0];
176
271
  }
272
+ /**
273
+ * Update an asset model
274
+ */
275
+ async updateAsset(engineGroup, model, metadataMappings, defaultMetadata, metadataDetails, metadataGroups, measures, tooltipModels, request) {
276
+ if (kuzzle_1.Inflector.pascalCase(model) !== model) {
277
+ throw new kuzzle_1.BadRequestError(`Asset model "${model}" must be PascalCase.`);
278
+ }
279
+ this.checkDefaultValues(metadataMappings, defaultMetadata);
280
+ const existingAsset = await this.getAsset(engineGroup, model);
281
+ // The field must be deleted if an element of the table is to be deleted
282
+ await this.sdk.document.deleteFields(this.config.adminIndex, plugin_1.InternalCollection.MODELS, existingAsset._id, ["asset.tooltipModels"], { source: true });
283
+ const measuresUpdated = measures.length === 0 ? existingAsset._source.asset.measures : measures;
284
+ const assetModelContent = {
285
+ asset: {
286
+ defaultMetadata,
287
+ measures: measuresUpdated,
288
+ metadataDetails,
289
+ metadataGroups,
290
+ metadataMappings,
291
+ model,
292
+ tooltipModels,
293
+ },
294
+ engineGroup,
295
+ type: "asset",
296
+ };
297
+ const assetModel = {
298
+ _id: existingAsset._id,
299
+ _source: assetModelContent,
300
+ };
301
+ const conflicts = await (0, kuzzle_plugin_commons_1.ask)("ask:device-manager:engine:doesUpdateConflict", { twin: { models: [assetModelContent], type: "asset" } });
302
+ if (conflicts.length > 0) {
303
+ throw new MappingsConflictsError_1.MappingsConflictsError(`Assets mappings are causing conflicts`, conflicts);
304
+ }
305
+ const endDocument = await this.updateDocument(request, assetModel, {
306
+ collection: plugin_1.InternalCollection.MODELS,
307
+ engineId: this.config.adminIndex,
308
+ }, { source: true });
309
+ return endDocument;
310
+ }
177
311
  }
178
312
  exports.ModelService = ModelService;
179
313
  //# sourceMappingURL=ModelService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModelService.js","sourceRoot":"","sources":["../../../../lib/modules/model/ModelService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ModelService.js","sourceRoot":"","sources":["../../../../lib/modules/model/ModelService.ts"],"names":[],"mappings":"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"}