1- import { JSONObject , KuzzleRequest , PreconditionError } from 'kuzzle' ;
1+ import { JSONObject , PreconditionError } from 'kuzzle' ;
22
33import {
44 Decoder ,
@@ -9,20 +9,21 @@ import {
99} from '../../../../index' ;
1010
1111export class DummyMultiTempDecoder extends Decoder {
12- constructor ( measuresRegister : MeasuresRegister ) {
13- super ( 'DummyMultiTemp' , {
14- innerTemp : 'temperature' ,
15- outerTemp : 'temperature' ,
16- lvlBattery : 'battery' ,
17- } ,
18- measuresRegister ) ;
12+ public measures = [
13+ { name : 'innerTemp' , type : 'temperature' } ,
14+ { name : 'outerTemp' , type : 'temperature' } ,
15+ { name : 'lvlBattery' , type : 'battery' } ,
16+ ] as const ;
17+
18+ constructor ( ) {
19+ super ( ) ;
1920
2021 this . payloadsMappings = {
2122 deviceEUI : { type : 'keyword' }
2223 } ;
2324 }
2425
25- async validate ( payload : JSONObject , request : KuzzleRequest ) {
26+ async validate ( payload : JSONObject ) {
2627 if ( payload . payloads . find ( devicePayload => ! devicePayload . deviceEUI ) ) {
2728 throw new PreconditionError ( 'Invalid payload: missing "deviceEUI" in some devicePayload' ) ;
2829 }
@@ -34,47 +35,45 @@ export class DummyMultiTempDecoder extends Decoder {
3435 return true ;
3536 }
3637
37- async decode ( payload : JSONObject , request : KuzzleRequest ) : Promise < DecodedPayload > {
38- const decodedPayload : DecodedPayload = { } ;
38+ async decode ( payload : JSONObject ) : Promise < DecodedPayload < Decoder > > {
39+ const decodedPayload = new DecodedPayload < DummyMultiTempDecoder > ( this ) ;
3940
4041 for ( const devicePayload of payload . payloads ) {
41- const deviceMeasurements = [ ] ;
42-
4342 if ( devicePayload . registerInner ) {
44- deviceMeasurements . push ( {
45- deviceMeasureName : 'innerTemp' ,
43+ const innerTemp : TemperatureMeasurement = {
4644 measuredAt : devicePayload . measuredAtRegisterInner ?? Date . now ( ) ,
4745 type : 'temperature' ,
4846 values : {
4947 temperature : devicePayload . registerInner ,
5048 } ,
51- } ) ;
49+ }
50+
51+ decodedPayload . addMeasurement ( devicePayload . deviceEUI , 'innerTemp' , innerTemp ) ;
5252 }
5353
5454 if ( devicePayload . registerOuter ) {
55- deviceMeasurements . push (
56- {
57- deviceMeasureName : 'outerTemp ' ,
58- measuredAt : devicePayload . measuredAtRegisterOuter ?? Date . now ( ) ,
59- type : 'temperature' ,
60- values : {
61- temperature : devicePayload . registerOuter ,
62- } ,
63- } ) ;
55+ const outerTemp : TemperatureMeasurement = {
56+ measuredAt : devicePayload . measuredAtRegisterOuter ?? Date . now ( ) ,
57+ type : 'temperature ' ,
58+ values : {
59+ temperature : devicePayload . registerOuter ,
60+ } ,
61+ } ;
62+
63+ decodedPayload . addMeasurement ( devicePayload . deviceEUI , 'outerTemp' , outerTemp ) ;
6464 }
6565
6666 if ( devicePayload . lvlBattery ) {
67- deviceMeasurements . push ( {
68- deviceMeasureName : 'lvlBattery' ,
67+ const battery : BatteryMeasurement = {
6968 measuredAt : devicePayload . measuredAtLvlBattery ?? Date . now ( ) ,
7069 type : 'battery' ,
7170 values : {
7271 battery : devicePayload . lvlBattery * 100 ,
7372 } ,
74- } ) ;
75- }
73+ }
7674
77- decodedPayload [ devicePayload . deviceEUI ] = deviceMeasurements ;
75+ decodedPayload . addMeasurement ( devicePayload . deviceEUI , 'lvlBattery' , battery ) ;
76+ }
7877 }
7978
8079 return decodedPayload ;
0 commit comments