@golemio/chmu 1.0.0-dev.776186639 → 1.0.0-dev.780870157
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/db/migrations/postgresql/20230216144852-measurementsToFloat.js +53 -0
- package/db/migrations/postgresql/sqls/20230216144852-measurementsToFloat-down.sql +7 -0
- package/db/migrations/postgresql/sqls/20230216144852-measurementsToFloat-up.sql +7 -0
- package/dist/integration-engine/transformations/MeasurementsTransformation.d.ts +3 -1
- package/dist/integration-engine/transformations/MeasurementsTransformation.js +15 -7
- package/dist/integration-engine/transformations/MeasurementsTransformation.js.map +1 -1
- package/dist/schema-definitions/definitions/interfaces/IMeasurementDto.d.ts +7 -7
- package/dist/schema-definitions/definitions/models/MeasurementModel.d.ts +7 -7
- package/dist/schema-definitions/definitions/models/MeasurementModel.js +14 -14
- package/dist/schema-definitions/definitions/models/MeasurementModel.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var dbm;
|
|
4
|
+
var type;
|
|
5
|
+
var seed;
|
|
6
|
+
var fs = require('fs');
|
|
7
|
+
var path = require('path');
|
|
8
|
+
var Promise;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* We receive the dbmigrate dependency from dbmigrate initially.
|
|
12
|
+
* This enables us to not have to rely on NODE_PATH.
|
|
13
|
+
*/
|
|
14
|
+
exports.setup = function(options, seedLink) {
|
|
15
|
+
dbm = options.dbmigrate;
|
|
16
|
+
type = dbm.dataType;
|
|
17
|
+
seed = seedLink;
|
|
18
|
+
Promise = options.Promise;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
exports.up = function(db) {
|
|
22
|
+
var filePath = path.join(__dirname, 'sqls', '20230216144852-measurementsToFloat-up.sql');
|
|
23
|
+
return new Promise( function( resolve, reject ) {
|
|
24
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
25
|
+
if (err) return reject(err);
|
|
26
|
+
console.log('received data: ' + data);
|
|
27
|
+
|
|
28
|
+
resolve(data);
|
|
29
|
+
});
|
|
30
|
+
})
|
|
31
|
+
.then(function(data) {
|
|
32
|
+
return db.runSql(data);
|
|
33
|
+
});
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
exports.down = function(db) {
|
|
37
|
+
var filePath = path.join(__dirname, 'sqls', '20230216144852-measurementsToFloat-down.sql');
|
|
38
|
+
return new Promise( function( resolve, reject ) {
|
|
39
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
|
|
40
|
+
if (err) return reject(err);
|
|
41
|
+
console.log('received data: ' + data);
|
|
42
|
+
|
|
43
|
+
resolve(data);
|
|
44
|
+
});
|
|
45
|
+
})
|
|
46
|
+
.then(function(data) {
|
|
47
|
+
return db.runSql(data);
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
exports._meta = {
|
|
52
|
+
"version": 1
|
|
53
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
ALTER TABLE measurements ALTER COLUMN air_hum TYPE varchar USING air_hum::varchar;
|
|
2
|
+
ALTER TABLE measurements ALTER COLUMN air_temp TYPE varchar USING air_temp::varchar;
|
|
3
|
+
ALTER TABLE measurements ALTER COLUMN precip TYPE varchar USING precip::varchar;
|
|
4
|
+
ALTER TABLE measurements ALTER COLUMN air_pressure TYPE varchar USING air_pressure::varchar;
|
|
5
|
+
ALTER TABLE measurements ALTER COLUMN wind_speed TYPE varchar USING wind_speed::varchar;
|
|
6
|
+
ALTER TABLE measurements ALTER COLUMN wind_dir TYPE varchar USING wind_dir::varchar;
|
|
7
|
+
ALTER TABLE measurements ALTER COLUMN sunlight TYPE varchar USING sunlight::varchar;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
ALTER TABLE measurements ALTER COLUMN air_hum TYPE float4 USING air_hum::float4;
|
|
2
|
+
ALTER TABLE measurements ALTER COLUMN air_temp TYPE float4 USING air_temp::float4;
|
|
3
|
+
ALTER TABLE measurements ALTER COLUMN precip TYPE float4 USING precip::float4;
|
|
4
|
+
ALTER TABLE measurements ALTER COLUMN air_pressure TYPE float4 USING air_pressure::float4;
|
|
5
|
+
ALTER TABLE measurements ALTER COLUMN wind_speed TYPE float4 USING wind_speed::float4;
|
|
6
|
+
ALTER TABLE measurements ALTER COLUMN wind_dir TYPE float4 USING wind_dir::float4;
|
|
7
|
+
ALTER TABLE measurements ALTER COLUMN sunlight TYPE float4 USING sunlight::float4;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import IInputChmuData from "../../schema-definitions/datasources/interfaces/IInputChmuData";
|
|
2
|
-
import { BaseTransformation, ITransformation } from "@golemio/core/dist/integration-engine";
|
|
3
2
|
import { IMeasurementDto } from "../../schema-definitions/definitions/interfaces/IMeasurementDto";
|
|
3
|
+
import { BaseTransformation, ITransformation } from "@golemio/core/dist/integration-engine";
|
|
4
4
|
export declare class MeasurementsTransformation extends BaseTransformation implements ITransformation {
|
|
5
5
|
name: string;
|
|
6
|
+
private isMissingLeadingZeroRegex;
|
|
6
7
|
constructor();
|
|
7
8
|
protected transformElement: (element: IInputChmuData) => IMeasurementDto;
|
|
9
|
+
private transformDecimalValue;
|
|
8
10
|
}
|
|
@@ -16,6 +16,7 @@ let MeasurementsTransformation = class MeasurementsTransformation extends integr
|
|
|
16
16
|
constructor() {
|
|
17
17
|
super();
|
|
18
18
|
this.name = "MeasurementsTransformation";
|
|
19
|
+
this.isMissingLeadingZeroRegex = /^-?,\d+$/;
|
|
19
20
|
this.transformElement = (element) => {
|
|
20
21
|
return {
|
|
21
22
|
measured_at: `${element.YEAR}-${element.MONTH}-${element.DAY}T${element.TIME}:00`,
|
|
@@ -24,18 +25,25 @@ let MeasurementsTransformation = class MeasurementsTransformation extends integr
|
|
|
24
25
|
month: Number.parseInt(element.MONTH),
|
|
25
26
|
day: Number.parseInt(element.DAY),
|
|
26
27
|
time: element.TIME,
|
|
27
|
-
air_temp:
|
|
28
|
-
air_hum:
|
|
29
|
-
precip:
|
|
30
|
-
air_pressure:
|
|
31
|
-
wind_speed:
|
|
32
|
-
wind_dir:
|
|
33
|
-
sunlight:
|
|
28
|
+
air_temp: this.transformDecimalValue(element.T),
|
|
29
|
+
air_hum: this.transformDecimalValue(element.H),
|
|
30
|
+
precip: this.transformDecimalValue(element.SRA1H),
|
|
31
|
+
air_pressure: this.transformDecimalValue(element.P),
|
|
32
|
+
wind_speed: this.transformDecimalValue(element.F),
|
|
33
|
+
wind_dir: this.transformDecimalValue(element.D),
|
|
34
|
+
sunlight: this.transformDecimalValue(element.SSV1H),
|
|
34
35
|
soil_hum_0_10: element.HPU1.length > 0 ? Number(element.HPU1) : null,
|
|
35
36
|
soil_hum_10_50: element.HPU2.length > 0 ? Number(element.HPU2) : null,
|
|
36
37
|
soil_hum_50_100: element.HPU3.length > 0 ? Number(element.HPU3) : null,
|
|
37
38
|
};
|
|
38
39
|
};
|
|
40
|
+
this.transformDecimalValue = (value) => {
|
|
41
|
+
if (!value || value.length === 0) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
const temp = value.replace(",", ".");
|
|
45
|
+
return this.isMissingLeadingZeroRegex.test(temp) ? Number(temp.replace(".", "0.")) : Number(temp);
|
|
46
|
+
};
|
|
39
47
|
}
|
|
40
48
|
};
|
|
41
49
|
MeasurementsTransformation = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MeasurementsTransformation.js","sourceRoot":"","sources":["../../../src/integration-engine/transformations/MeasurementsTransformation.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"MeasurementsTransformation.js","sourceRoot":"","sources":["../../../src/integration-engine/transformations/MeasurementsTransformation.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,8EAA4F;AAC5F,iEAAgE;AAGhE,IAAa,0BAA0B,GAAvC,MAAa,0BAA2B,SAAQ,uCAAkB;IAI9D;QACI,KAAK,EAAE,CAAC;QAJL,SAAI,GAAG,4BAA4B,CAAC;QACnC,8BAAyB,GAAG,UAAU,CAAC;QAMrC,qBAAgB,GAAG,CAAC,OAAuB,EAAmB,EAAE;YACtE,OAAO;gBACH,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,IAAI,KAAK;gBACjF,UAAU,EAAE,OAAO,CAAC,QAAQ;gBAC5B,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC;gBACnC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;gBACrC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;gBACjC,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC/C,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC9C,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC;gBACjD,YAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnD,UAAU,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;gBACjD,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC/C,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC;gBACnD,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;gBACpE,cAAc,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;gBACrE,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;aACzE,CAAC;QACN,CAAC,CAAC;QAEM,0BAAqB,GAAG,CAAC,KAAgC,EAAE,EAAE;YACjE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC9B,OAAO,IAAI,CAAC;aACf;YAED,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAErC,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtG,CAAC,CAAC;IA/BF,CAAC;CAgCJ,CAAA;AAtCY,0BAA0B;IADtC,IAAA,qBAAU,GAAE;;GACA,0BAA0B,CAsCtC;AAtCY,gEAA0B"}
|
|
@@ -5,13 +5,13 @@ export interface IMeasurementDto {
|
|
|
5
5
|
month: number;
|
|
6
6
|
day: number;
|
|
7
7
|
time: string;
|
|
8
|
-
air_temp:
|
|
9
|
-
air_hum:
|
|
10
|
-
precip:
|
|
11
|
-
air_pressure:
|
|
12
|
-
wind_speed:
|
|
13
|
-
wind_dir:
|
|
14
|
-
sunlight:
|
|
8
|
+
air_temp: number | null;
|
|
9
|
+
air_hum: number | null;
|
|
10
|
+
precip: number | null;
|
|
11
|
+
air_pressure: number | null;
|
|
12
|
+
wind_speed: number | null;
|
|
13
|
+
wind_dir: number | null;
|
|
14
|
+
sunlight: number | null;
|
|
15
15
|
soil_hum_0_10: number | null;
|
|
16
16
|
soil_hum_10_50: number | null;
|
|
17
17
|
soil_hum_50_100: number | null;
|
|
@@ -8,13 +8,13 @@ export declare class MeasurementModel extends Model<IMeasurementDto> implements
|
|
|
8
8
|
month: number;
|
|
9
9
|
day: number;
|
|
10
10
|
time: string;
|
|
11
|
-
air_temp:
|
|
12
|
-
air_hum:
|
|
13
|
-
precip:
|
|
14
|
-
air_pressure:
|
|
15
|
-
wind_speed:
|
|
16
|
-
wind_dir:
|
|
17
|
-
sunlight:
|
|
11
|
+
air_temp: number | null;
|
|
12
|
+
air_hum: number | null;
|
|
13
|
+
precip: number | null;
|
|
14
|
+
air_pressure: number | null;
|
|
15
|
+
wind_speed: number | null;
|
|
16
|
+
wind_dir: number | null;
|
|
17
|
+
sunlight: number | null;
|
|
18
18
|
soil_hum_0_10: number | null;
|
|
19
19
|
soil_hum_10_50: number | null;
|
|
20
20
|
soil_hum_50_100: number | null;
|
|
@@ -12,13 +12,13 @@ MeasurementModel.attributeModel = {
|
|
|
12
12
|
month: { type: sequelize_1.DataTypes.INTEGER },
|
|
13
13
|
day: { type: sequelize_1.DataTypes.INTEGER },
|
|
14
14
|
time: { type: sequelize_1.DataTypes.TIME },
|
|
15
|
-
air_temp: { type: sequelize_1.DataTypes.
|
|
16
|
-
air_hum: { type: sequelize_1.DataTypes.
|
|
17
|
-
precip: { type: sequelize_1.DataTypes.
|
|
18
|
-
air_pressure: { type: sequelize_1.DataTypes.
|
|
19
|
-
wind_speed: { type: sequelize_1.DataTypes.
|
|
20
|
-
wind_dir: { type: sequelize_1.DataTypes.
|
|
21
|
-
sunlight: { type: sequelize_1.DataTypes.
|
|
15
|
+
air_temp: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
|
|
16
|
+
air_hum: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
|
|
17
|
+
precip: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
|
|
18
|
+
air_pressure: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
|
|
19
|
+
wind_speed: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
|
|
20
|
+
wind_dir: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
|
|
21
|
+
sunlight: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
|
|
22
22
|
soil_hum_0_10: { type: sequelize_1.DataTypes.INTEGER, allowNull: true },
|
|
23
23
|
soil_hum_10_50: { type: sequelize_1.DataTypes.INTEGER, allowNull: true },
|
|
24
24
|
soil_hum_50_100: { type: sequelize_1.DataTypes.INTEGER, allowNull: true },
|
|
@@ -34,13 +34,13 @@ MeasurementModel.jsonSchema = {
|
|
|
34
34
|
month: { type: "integer" },
|
|
35
35
|
day: { type: "integer" },
|
|
36
36
|
time: { type: "string" },
|
|
37
|
-
air_temp: { oneOf: [{ type: "
|
|
38
|
-
air_hum: { oneOf: [{ type: "
|
|
39
|
-
precip: { oneOf: [{ type: "
|
|
40
|
-
air_pressure: { oneOf: [{ type: "
|
|
41
|
-
wind_speed: { oneOf: [{ type: "
|
|
42
|
-
wind_dir: { oneOf: [{ type: "
|
|
43
|
-
sunlight: { oneOf: [{ type: "
|
|
37
|
+
air_temp: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
|
|
38
|
+
air_hum: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
|
|
39
|
+
precip: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
|
|
40
|
+
air_pressure: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
|
|
41
|
+
wind_speed: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
|
|
42
|
+
wind_dir: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
|
|
43
|
+
sunlight: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
|
|
44
44
|
soil_hum_0_10: { oneOf: [{ type: "integer" }, { type: "null", nullable: true }] },
|
|
45
45
|
soil_hum_10_50: { oneOf: [{ type: "integer" }, { type: "null", nullable: true }] },
|
|
46
46
|
soil_hum_50_100: { oneOf: [{ type: "integer" }, { type: "null", nullable: true }] },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MeasurementModel.js","sourceRoot":"","sources":["../../../../src/schema-definitions/definitions/models/MeasurementModel.ts"],"names":[],"mappings":";;;AAAA,mEAAwF;AAIxF,MAAa,gBAAiB,SAAQ,iBAAsB;;AAA5D,4CA8DC;AA5CiB,+BAAc,GAAuD;IAC/E,WAAW,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;IACvD,UAAU,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;IACxD,IAAI,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,OAAO,EAAE;IACjC,KAAK,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,OAAO,EAAE;IAClC,GAAG,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,OAAO,EAAE;IAChC,IAAI,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,IAAI,EAAE;IAC9B,QAAQ,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"MeasurementModel.js","sourceRoot":"","sources":["../../../../src/schema-definitions/definitions/models/MeasurementModel.ts"],"names":[],"mappings":"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"}
|