@golemio/chmu 1.1.1-dev.2644315801 → 1.1.1-dev.2644362300

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 (47) hide show
  1. package/db/migrations/postgresql/20260619120000-opendata-columns.js +49 -0
  2. package/db/migrations/postgresql/sqls/20260619120000-opendata-columns-down.sql +36 -0
  3. package/db/migrations/postgresql/sqls/20260619120000-opendata-columns-up.sql +40 -0
  4. package/dist/integration-engine/data-access/MeasurementsRepository.js +1 -1
  5. package/dist/integration-engine/data-access/MeasurementsRepository.js.map +1 -1
  6. package/dist/integration-engine/data-access/StationsRepository.d.ts +8 -0
  7. package/dist/integration-engine/data-access/StationsRepository.js +56 -0
  8. package/dist/integration-engine/data-access/StationsRepository.js.map +1 -0
  9. package/dist/integration-engine/datasources/OpendataDatasource.d.ts +30 -0
  10. package/dist/integration-engine/datasources/OpendataDatasource.js +80 -0
  11. package/dist/integration-engine/datasources/OpendataDatasource.js.map +1 -0
  12. package/dist/integration-engine/ioc/Di.js +8 -0
  13. package/dist/integration-engine/ioc/Di.js.map +1 -1
  14. package/dist/integration-engine/ioc/ModuleContainerToken.d.ts +4 -0
  15. package/dist/integration-engine/ioc/ModuleContainerToken.js +5 -0
  16. package/dist/integration-engine/ioc/ModuleContainerToken.js.map +1 -1
  17. package/dist/integration-engine/transformations/MeasurementsTransformation.js +18 -0
  18. package/dist/integration-engine/transformations/MeasurementsTransformation.js.map +1 -1
  19. package/dist/integration-engine/transformations/OpendataMeasurementsTransformation.d.ts +15 -0
  20. package/dist/integration-engine/transformations/OpendataMeasurementsTransformation.js +131 -0
  21. package/dist/integration-engine/transformations/OpendataMeasurementsTransformation.js.map +1 -0
  22. package/dist/integration-engine/workers/ChmuWorker.js +1 -0
  23. package/dist/integration-engine/workers/ChmuWorker.js.map +1 -1
  24. package/dist/integration-engine/workers/interfaces/IDownloadOpendataMessage.d.ts +8 -0
  25. package/dist/integration-engine/workers/interfaces/IDownloadOpendataMessage.js +3 -0
  26. package/dist/integration-engine/workers/interfaces/IDownloadOpendataMessage.js.map +1 -0
  27. package/dist/integration-engine/workers/tasks/DownloadMeasurementsTask.js +2 -2
  28. package/dist/integration-engine/workers/tasks/DownloadMeasurementsTask.js.map +1 -1
  29. package/dist/integration-engine/workers/tasks/DownloadOpendataMeasurementsTask.d.ts +22 -0
  30. package/dist/integration-engine/workers/tasks/DownloadOpendataMeasurementsTask.js +112 -0
  31. package/dist/integration-engine/workers/tasks/DownloadOpendataMeasurementsTask.js.map +1 -0
  32. package/dist/integration-engine/workers/tasks/DownloadOpendataMessageSchema.d.ts +6 -0
  33. package/dist/integration-engine/workers/tasks/DownloadOpendataMessageSchema.js +33 -0
  34. package/dist/integration-engine/workers/tasks/DownloadOpendataMessageSchema.js.map +1 -0
  35. package/dist/schema-definitions/datasources/OpendataSchemaProvider.d.ts +55 -0
  36. package/dist/schema-definitions/datasources/OpendataSchemaProvider.js +47 -0
  37. package/dist/schema-definitions/datasources/OpendataSchemaProvider.js.map +1 -0
  38. package/dist/schema-definitions/datasources/interfaces/IInputOpendataRecord.d.ts +15 -0
  39. package/dist/schema-definitions/datasources/interfaces/IInputOpendataRecord.js +3 -0
  40. package/dist/schema-definitions/datasources/interfaces/IInputOpendataRecord.js.map +1 -0
  41. package/dist/schema-definitions/definitions/interfaces/IMeasurementDto.d.ts +18 -0
  42. package/dist/schema-definitions/definitions/models/MeasurementModel.d.ts +18 -0
  43. package/dist/schema-definitions/definitions/models/MeasurementModel.js +37 -1
  44. package/dist/schema-definitions/definitions/models/MeasurementModel.js.map +1 -1
  45. package/docs/asyncapi.yaml +35 -3
  46. package/docs/implementation_documentation.md +81 -23
  47. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IDownloadOpendataMessage.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/interfaces/IDownloadOpendataMessage.ts"],"names":[],"mappings":""}
@@ -20,12 +20,12 @@ const ChmuDatasource_1 = __importDefault(require("../../datasources/ChmuDatasour
20
20
  const ModuleContainerToken_1 = require("../../ioc/ModuleContainerToken");
21
21
  const MeasurementsTransformation_1 = require("../../transformations/MeasurementsTransformation");
22
22
  const integration_engine_1 = require("@golemio/core/dist/integration-engine");
23
- const ContainerToken_1 = require("@golemio/core/dist/integration-engine/ioc/ContainerToken");
24
23
  const QueueManager_1 = require("@golemio/core/dist/integration-engine/queueprocessors/QueueManager");
25
24
  const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
26
25
  const luxon_1 = require("@golemio/core/dist/shared/luxon");
27
26
  const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
28
27
  const DownloadMeasurementsMessageSchema_1 = require("./DownloadMeasurementsMessageSchema");
28
+ const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
29
29
  let DownloadMeasurementsTask = class DownloadMeasurementsTask extends integration_engine_1.AbstractTask {
30
30
  constructor(datasource, transformation, repository, logger) {
31
31
  super(""); // done in worker
@@ -88,7 +88,7 @@ DownloadMeasurementsTask = __decorate([
88
88
  __param(0, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.ChmuDatasource)),
89
89
  __param(1, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.MeasurementsTransformation)),
90
90
  __param(2, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.MeasurementsRepository)),
91
- __param(3, (0, tsyringe_1.inject)(ContainerToken_1.ContainerToken.Logger)),
91
+ __param(3, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.Logger)),
92
92
  __metadata("design:paramtypes", [ChmuDatasource_1.default,
93
93
  MeasurementsTransformation_1.MeasurementsTransformation,
94
94
  MeasurementsRepository_1.MeasurementsRepository, Object])
@@ -1 +1 @@
1
- {"version":3,"file":"DownloadMeasurementsTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/DownloadMeasurementsTask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DownloadMeasurementsTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/DownloadMeasurementsTask.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { StationsRepository } from "../../data-access/StationsRepository";
2
+ import { MeasurementsRepository } from "../../data-access/MeasurementsRepository";
3
+ import OpendataDatasource from "../../datasources/OpendataDatasource";
4
+ import { OpendataMeasurementsTransformation } from "../../transformations/OpendataMeasurementsTransformation";
5
+ import { ILogger } from "@golemio/core/dist/helpers/logger/LoggerProvider";
6
+ import { AbstractTask } from "@golemio/core/dist/integration-engine";
7
+ import IDownloadOpendataMessage from "../interfaces/IDownloadOpendataMessage";
8
+ import { DownloadOpendataMessageSchema } from "./DownloadOpendataMessageSchema";
9
+ export default class DownloadOpendataMeasurementsTask extends AbstractTask<IDownloadOpendataMessage> {
10
+ private stationsRepository;
11
+ private datasource;
12
+ private transformation;
13
+ private repository;
14
+ private logger;
15
+ queueName: string;
16
+ protected schema: typeof DownloadOpendataMessageSchema;
17
+ constructor(stationsRepository: StationsRepository, datasource: OpendataDatasource, transformation: OpendataMeasurementsTransformation, repository: MeasurementsRepository, logger: ILogger);
18
+ protected execute: (data: IDownloadOpendataMessage) => Promise<void>;
19
+ private generateSubtasks;
20
+ private processStationMeasurements;
21
+ private validateMessageData;
22
+ }
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const StationsRepository_1 = require("../../data-access/StationsRepository");
19
+ const MeasurementsRepository_1 = require("../../data-access/MeasurementsRepository");
20
+ const OpendataDatasource_1 = __importDefault(require("../../datasources/OpendataDatasource"));
21
+ const ModuleContainerToken_1 = require("../../ioc/ModuleContainerToken");
22
+ const OpendataMeasurementsTransformation_1 = require("../../transformations/OpendataMeasurementsTransformation");
23
+ const integration_engine_1 = require("@golemio/core/dist/integration-engine");
24
+ const QueueManager_1 = require("@golemio/core/dist/integration-engine/queueprocessors/QueueManager");
25
+ const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
26
+ const luxon_1 = require("@golemio/core/dist/shared/luxon");
27
+ const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
28
+ const DownloadOpendataMessageSchema_1 = require("./DownloadOpendataMessageSchema");
29
+ const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
30
+ let DownloadOpendataMeasurementsTask = class DownloadOpendataMeasurementsTask extends integration_engine_1.AbstractTask {
31
+ constructor(stationsRepository, datasource, transformation, repository, logger) {
32
+ super(""); // queue prefix is set by the worker
33
+ this.stationsRepository = stationsRepository;
34
+ this.datasource = datasource;
35
+ this.transformation = transformation;
36
+ this.repository = repository;
37
+ this.logger = logger;
38
+ this.queueName = "downloadOpendataMeasurementsTask";
39
+ this.schema = DownloadOpendataMessageSchema_1.DownloadOpendataMessageSchema;
40
+ this.execute = async (data) => {
41
+ const { date } = this.validateMessageData(data);
42
+ try {
43
+ if (data.wsi && data.station_id) {
44
+ await this.processStationMeasurements(data.station_id, data.wsi, new Date(date));
45
+ }
46
+ else {
47
+ await this.generateSubtasks(date);
48
+ }
49
+ }
50
+ catch (error) {
51
+ if (error instanceof golemio_errors_1.AbstractGolemioError) {
52
+ throw error;
53
+ }
54
+ this.logger.error(error, `${this.constructor.name}: Unable to download chmu opendata measurements data.`);
55
+ }
56
+ };
57
+ }
58
+ async generateSubtasks(date) {
59
+ const stations = await this.stationsRepository.getStationsWithWsi();
60
+ if (stations.length === 0) {
61
+ this.logger.warn(`${this.constructor.name}: no stations with WSI found - skipping. Populate chmu.stations.wsi first.`);
62
+ return;
63
+ }
64
+ for (const station of stations) {
65
+ await QueueManager_1.QueueManager.sendMessageToExchange(this.queuePrefix, this.queueName, {
66
+ date,
67
+ station_id: station.station_id,
68
+ wsi: station.wsi,
69
+ });
70
+ }
71
+ this.logger.debug(`${this.constructor.name}: dispatched ${stations.length} subtasks for date ${date}.`);
72
+ }
73
+ async processStationMeasurements(stationId, wsi, date) {
74
+ let stationRecords;
75
+ try {
76
+ stationRecords = await this.datasource.getData(wsi, date);
77
+ }
78
+ catch (error) {
79
+ throw new golemio_errors_1.GeneralError(`${this.constructor.name}: failed to fetch data for station ${stationId} (WSI: ${wsi}).`);
80
+ }
81
+ if (stationRecords.length === 0) {
82
+ this.logger.warn(`${this.constructor.name}: no records fetched for station ${stationId} (WSI: ${wsi}).`);
83
+ return;
84
+ }
85
+ const records = stationRecords.map((r) => ({ ...r, station_id: stationId }));
86
+ const transformed = await this.transformation.transform(records);
87
+ await this.repository.bulkUpdate(transformed);
88
+ this.logger.debug(`${this.constructor.name}: upserted ${transformed.length} measurements for station ${stationId}.`);
89
+ }
90
+ validateMessageData(data) {
91
+ const dt = data.date ? luxon_1.DateTime.fromISO(data.date) : luxon_1.DateTime.now();
92
+ const ageInDays = luxon_1.DateTime.now().startOf("day").diff(dt.startOf("day"), "days").days;
93
+ if (ageInDays > 2) {
94
+ throw new Error(`Date "${data.date}" is outside the 3-day retention window`);
95
+ }
96
+ return { ...data, date: dt.toISODate() };
97
+ }
98
+ };
99
+ DownloadOpendataMeasurementsTask = __decorate([
100
+ (0, tsyringe_1.injectable)(),
101
+ __param(0, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.StationsRepository)),
102
+ __param(1, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.OpendataDatasource)),
103
+ __param(2, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.OpendataMeasurementsTransformation)),
104
+ __param(3, (0, tsyringe_1.inject)(ModuleContainerToken_1.ModuleContainerToken.MeasurementsRepository)),
105
+ __param(4, (0, tsyringe_1.inject)(CoreToken_1.CoreToken.Logger)),
106
+ __metadata("design:paramtypes", [StationsRepository_1.StationsRepository,
107
+ OpendataDatasource_1.default,
108
+ OpendataMeasurementsTransformation_1.OpendataMeasurementsTransformation,
109
+ MeasurementsRepository_1.MeasurementsRepository, Object])
110
+ ], DownloadOpendataMeasurementsTask);
111
+ exports.default = DownloadOpendataMeasurementsTask;
112
+ //# sourceMappingURL=DownloadOpendataMeasurementsTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DownloadOpendataMeasurementsTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/DownloadOpendataMeasurementsTask.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import IDownloadOpendataMessage from "../interfaces/IDownloadOpendataMessage";
2
+ export declare class DownloadOpendataMessageSchema implements IDownloadOpendataMessage {
3
+ date?: string;
4
+ wsi?: string;
5
+ station_id?: string;
6
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.DownloadOpendataMessageSchema = void 0;
13
+ const class_validator_1 = require("@golemio/core/dist/shared/class-validator");
14
+ class DownloadOpendataMessageSchema {
15
+ }
16
+ exports.DownloadOpendataMessageSchema = DownloadOpendataMessageSchema;
17
+ __decorate([
18
+ (0, class_validator_1.IsOptional)(),
19
+ (0, class_validator_1.IsString)(),
20
+ (0, class_validator_1.IsISO8601)(),
21
+ __metadata("design:type", String)
22
+ ], DownloadOpendataMessageSchema.prototype, "date", void 0);
23
+ __decorate([
24
+ (0, class_validator_1.IsOptional)(),
25
+ (0, class_validator_1.IsString)(),
26
+ __metadata("design:type", String)
27
+ ], DownloadOpendataMessageSchema.prototype, "wsi", void 0);
28
+ __decorate([
29
+ (0, class_validator_1.IsOptional)(),
30
+ (0, class_validator_1.IsString)(),
31
+ __metadata("design:type", String)
32
+ ], DownloadOpendataMessageSchema.prototype, "station_id", void 0);
33
+ //# sourceMappingURL=DownloadOpendataMessageSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DownloadOpendataMessageSchema.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/DownloadOpendataMessageSchema.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+EAA4F;AAG5F,MAAa,6BAA6B;CAazC;AAbD,sEAaC;AATG;IAHC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;IACV,IAAA,2BAAS,GAAE;;2DACE;AAId;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;0DACE;AAIb;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;iEACS"}
@@ -0,0 +1,55 @@
1
+ export default class OpendataSchemaProvider {
2
+ /**
3
+ * Validates the raw data.data object from the API response before column mapping.
4
+ * Ensures header and values are present and values rows contain only strings/numbers.
5
+ */
6
+ static getResponseSchema(): {
7
+ type: string;
8
+ required: string[];
9
+ properties: {
10
+ header: {
11
+ type: string;
12
+ };
13
+ values: {
14
+ type: string;
15
+ items: {
16
+ type: string;
17
+ minItems: number;
18
+ items: {
19
+ type: string[];
20
+ };
21
+ };
22
+ };
23
+ };
24
+ };
25
+ /**
26
+ * Validates the mapped IRawOpendataRecord[] after header-based column mapping.
27
+ */
28
+ static get(): {
29
+ type: string;
30
+ items: {
31
+ type: string;
32
+ required: string[];
33
+ properties: {
34
+ STATION: {
35
+ type: string;
36
+ };
37
+ ELEMENT: {
38
+ type: string;
39
+ };
40
+ DT: {
41
+ type: string;
42
+ };
43
+ VAL: {
44
+ type: string[];
45
+ };
46
+ FLAG: {
47
+ type: string;
48
+ };
49
+ QUALITY: {
50
+ type: string;
51
+ };
52
+ };
53
+ };
54
+ };
55
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class OpendataSchemaProvider {
4
+ /**
5
+ * Validates the raw data.data object from the API response before column mapping.
6
+ * Ensures header and values are present and values rows contain only strings/numbers.
7
+ */
8
+ static getResponseSchema() {
9
+ return {
10
+ type: "object",
11
+ required: ["header", "values"],
12
+ properties: {
13
+ header: { type: "string" },
14
+ values: {
15
+ type: "array",
16
+ items: {
17
+ type: "array",
18
+ minItems: 1,
19
+ items: { type: ["string", "number"] },
20
+ },
21
+ },
22
+ },
23
+ };
24
+ }
25
+ /**
26
+ * Validates the mapped IRawOpendataRecord[] after header-based column mapping.
27
+ */
28
+ static get() {
29
+ return {
30
+ type: "array",
31
+ items: {
32
+ type: "object",
33
+ required: ["STATION", "ELEMENT", "DT", "VAL", "FLAG", "QUALITY"],
34
+ properties: {
35
+ STATION: { type: "string" },
36
+ ELEMENT: { type: "string" },
37
+ DT: { type: "string" },
38
+ VAL: { type: ["number", "string"] },
39
+ FLAG: { type: "string" },
40
+ QUALITY: { type: "number" },
41
+ },
42
+ },
43
+ };
44
+ }
45
+ }
46
+ exports.default = OpendataSchemaProvider;
47
+ //# sourceMappingURL=OpendataSchemaProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpendataSchemaProvider.js","sourceRoot":"","sources":["../../../src/schema-definitions/datasources/OpendataSchemaProvider.ts"],"names":[],"mappings":";;AAAA,MAAqB,sBAAsB;IACvC;;;OAGG;IACI,MAAM,CAAC,iBAAiB;QAC3B,OAAO;YACH,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;YAC9B,UAAU,EAAE;gBACR,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,MAAM,EAAE;oBACJ,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE;wBACH,IAAI,EAAE,OAAO;wBACb,QAAQ,EAAE,CAAC;wBACX,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;qBACxC;iBACJ;aACJ;SACJ,CAAC;IACN,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,GAAG;QACb,OAAO;YACH,IAAI,EAAE,OAAO;YACb,KAAK,EAAE;gBACH,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;gBAChE,UAAU,EAAE;oBACR,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC3B,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBAC3B,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACtB,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;oBACnC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;oBACxB,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC9B;aACJ;SACJ,CAAC;IACN,CAAC;CACJ;AA3CD,yCA2CC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * One long-format record from the ČHMÚ opendata 10m API, after unpacking the values array.
3
+ * station_id is resolved from the WSI (STATION field) by the task before transformation.
4
+ *
5
+ * Real API response shape: { data: { type: "DataCollection", data: { header: "...", values: [[...]] } } }
6
+ * URL: https://opendata.chmi.cz/meteorology/climate/now/data/10m-{WSI}-{YYYYMMDD}.json
7
+ */
8
+ export default interface IInputOpendataRecord {
9
+ station_id: string;
10
+ ELEMENT: string;
11
+ DT: string;
12
+ VAL: number | "";
13
+ FLAG: string;
14
+ QUALITY: number;
15
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IInputOpendataRecord.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IInputOpendataRecord.js","sourceRoot":"","sources":["../../../../src/schema-definitions/datasources/interfaces/IInputOpendataRecord.ts"],"names":[],"mappings":""}
@@ -15,4 +15,22 @@ export interface IMeasurementDto {
15
15
  soil_hum_0_10: number | null;
16
16
  soil_hum_10_50: number | null;
17
17
  soil_hum_50_100: number | null;
18
+ air_temp_max: number | null;
19
+ air_temp_min: number | null;
20
+ air_temp_ground: number | null;
21
+ wind_speed_avg: number | null;
22
+ wind_dir_avg: number | null;
23
+ wind_gust: number | null;
24
+ wind_gust_dir: number | null;
25
+ wind_gust_time: number | null;
26
+ snow_depth: number | null;
27
+ snow_water: number | null;
28
+ radiation_glob: number | null;
29
+ radiation_uv: number | null;
30
+ soil_temp_5cm: number | null;
31
+ soil_temp_10cm: number | null;
32
+ soil_temp_20cm: number | null;
33
+ soil_temp_50cm: number | null;
34
+ soil_temp_100cm: number | null;
35
+ data_source: string;
18
36
  }
@@ -18,6 +18,24 @@ export declare class MeasurementModel extends Model<IMeasurementDto> implements
18
18
  soil_hum_0_10: number | null;
19
19
  soil_hum_10_50: number | null;
20
20
  soil_hum_50_100: number | null;
21
+ air_temp_max: number | null;
22
+ air_temp_min: number | null;
23
+ air_temp_ground: number | null;
24
+ wind_speed_avg: number | null;
25
+ wind_dir_avg: number | null;
26
+ wind_gust: number | null;
27
+ wind_gust_dir: number | null;
28
+ wind_gust_time: number | null;
29
+ snow_depth: number | null;
30
+ snow_water: number | null;
31
+ radiation_glob: number | null;
32
+ radiation_uv: number | null;
33
+ soil_temp_5cm: number | null;
34
+ soil_temp_10cm: number | null;
35
+ soil_temp_20cm: number | null;
36
+ soil_temp_50cm: number | null;
37
+ soil_temp_100cm: number | null;
38
+ data_source: string;
21
39
  static attributeModel: ModelAttributes<MeasurementModel, IMeasurementDto>;
22
40
  static jsonSchema: JSONSchemaType<IMeasurementDto[]>;
23
41
  }
@@ -22,6 +22,24 @@ MeasurementModel.attributeModel = {
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 },
25
+ air_temp_max: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
26
+ air_temp_min: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
27
+ air_temp_ground: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
28
+ wind_speed_avg: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
29
+ wind_dir_avg: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
30
+ wind_gust: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
31
+ wind_gust_dir: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
32
+ wind_gust_time: { type: sequelize_1.DataTypes.INTEGER, allowNull: true },
33
+ snow_depth: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
34
+ snow_water: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
35
+ radiation_glob: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
36
+ radiation_uv: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
37
+ soil_temp_5cm: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
38
+ soil_temp_10cm: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
39
+ soil_temp_20cm: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
40
+ soil_temp_50cm: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
41
+ soil_temp_100cm: { type: sequelize_1.DataTypes.FLOAT, allowNull: true },
42
+ data_source: { type: sequelize_1.DataTypes.STRING(10), primaryKey: true },
25
43
  };
26
44
  MeasurementModel.jsonSchema = {
27
45
  type: "array",
@@ -44,8 +62,26 @@ MeasurementModel.jsonSchema = {
44
62
  soil_hum_0_10: { oneOf: [{ type: "integer" }, { type: "null", nullable: true }] },
45
63
  soil_hum_10_50: { oneOf: [{ type: "integer" }, { type: "null", nullable: true }] },
46
64
  soil_hum_50_100: { oneOf: [{ type: "integer" }, { type: "null", nullable: true }] },
65
+ air_temp_max: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
66
+ air_temp_min: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
67
+ air_temp_ground: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
68
+ wind_speed_avg: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
69
+ wind_dir_avg: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
70
+ wind_gust: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
71
+ wind_gust_dir: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
72
+ wind_gust_time: { oneOf: [{ type: "integer" }, { type: "null", nullable: true }] },
73
+ snow_depth: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
74
+ snow_water: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
75
+ radiation_glob: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
76
+ radiation_uv: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
77
+ soil_temp_5cm: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
78
+ soil_temp_10cm: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
79
+ soil_temp_20cm: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
80
+ soil_temp_50cm: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
81
+ soil_temp_100cm: { oneOf: [{ type: "number" }, { type: "null", nullable: true }] },
82
+ data_source: { type: "string" },
47
83
  },
48
- required: ["measured_at", "station_id"],
84
+ required: ["measured_at", "station_id", "data_source"],
49
85
  },
50
86
  };
51
87
  //# sourceMappingURL=MeasurementModel.js.map
@@ -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,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACpD,OAAO,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACnD,MAAM,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IAClD,YAAY,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACxD,UAAU,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACtD,QAAQ,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACpD,QAAQ,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACpD,aAAa,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;IAC3D,cAAc,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;IAC5D,eAAe,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;CAChE,CAAC;AAEY,2BAAU,GAAsC;IAC1D,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC/B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACzB,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1B,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC3E,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC1E,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YACzE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC/E,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC7E,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC3E,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC3E,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YACjF,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAClF,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;SACtF;QACD,QAAQ,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC;KAC1C;CACJ,CAAC"}
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,4CAoHC;AAhFiB,+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,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACpD,OAAO,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACnD,MAAM,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IAClD,YAAY,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACxD,UAAU,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACtD,QAAQ,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACpD,QAAQ,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACpD,aAAa,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;IAC3D,cAAc,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;IAC5D,eAAe,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;IAC7D,YAAY,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACxD,YAAY,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACxD,eAAe,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IAC3D,cAAc,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IAC1D,YAAY,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACxD,SAAS,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACrD,aAAa,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACzD,cAAc,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;IAC5D,UAAU,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACtD,UAAU,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACtD,cAAc,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IAC1D,YAAY,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACxD,aAAa,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IACzD,cAAc,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IAC1D,cAAc,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IAC1D,cAAc,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IAC1D,eAAe,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE;IAC3D,WAAW,EAAE,EAAE,IAAI,EAAE,qBAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE;CAChE,CAAC;AAEY,2BAAU,GAAsC;IAC1D,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC/B,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACzB,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC1B,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC3E,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC1E,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YACzE,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC/E,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC7E,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC3E,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC3E,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YACjF,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAClF,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YACnF,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC/E,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC/E,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAClF,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YACjF,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC/E,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC5E,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAChF,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAClF,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC7E,UAAU,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC7E,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YACjF,YAAY,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAC/E,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAChF,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YACjF,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YACjF,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YACjF,eAAe,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE;YAClF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;SAClC;QACD,QAAQ,EAAE,CAAC,aAAa,EAAE,YAAY,EAAE,aAAa,CAAC;KACzD;CACJ,CAAC"}
@@ -1,12 +1,12 @@
1
1
  asyncapi: 3.0.0
2
2
  info:
3
3
  title: CHMU
4
- version: 1.0.0
5
- description: Downloads CHMU hourly aggregated data from FTP to csv files.
4
+ version: 1.2.0
5
+ description: Downloads CHMU meteorological data from FTP (hourly) and ČHMÚ opendata (10-minute).
6
6
  channels:
7
7
  chmu.downloadMeasurementsTask:
8
8
  address: dataplatform.chmu.downloadMeasurementsTask
9
- description: Downloads CHMU hourly aggregated data from FTP to csv files.
9
+ description: Downloads CHMU hourly aggregated data from FTP CSV files.
10
10
  bindings:
11
11
  amqp:
12
12
  is: queue
@@ -15,11 +15,26 @@ channels:
15
15
  messages:
16
16
  chmu.DownloadMeasurementsMessage:
17
17
  $ref: "#/components/messages/chmu.DownloadMeasurementsMessage"
18
+ chmu.downloadOpendataMeasurementsTask:
19
+ address: dataplatform.chmu.downloadOpendataMeasurementsTask
20
+ description: Downloads CHMU 10-minute data from opendata.chmi.cz for all stations with a WSI identifier.
21
+ bindings:
22
+ amqp:
23
+ is: queue
24
+ queue:
25
+ durable: true
26
+ messages:
27
+ chmu.DownloadOpendataMessage:
28
+ $ref: "#/components/messages/chmu.DownloadOpendataMessage"
18
29
  operations:
19
30
  chmu.downloadMeasurementsTask:
20
31
  action: "send"
21
32
  channel:
22
33
  $ref: "#/channels/chmu.downloadMeasurementsTask"
34
+ chmu.downloadOpendataMeasurementsTask:
35
+ action: "send"
36
+ channel:
37
+ $ref: "#/channels/chmu.downloadOpendataMeasurementsTask"
23
38
  components:
24
39
  messages:
25
40
  chmu.DownloadMeasurementsMessage:
@@ -33,3 +48,20 @@ components:
33
48
  type: string
34
49
  nullable: true
35
50
  additionalProperties: false
51
+ chmu.DownloadOpendataMessage:
52
+ payload:
53
+ type: object
54
+ properties:
55
+ "date":
56
+ type: string
57
+ nullable: true
58
+ description: ISO 8601 date to fetch opendata for. Defaults to today when omitted.
59
+ "station_id":
60
+ type: string
61
+ nullable: true
62
+ description: Station identifier.
63
+ "wsi":
64
+ type: string
65
+ nullable: true
66
+ description: ČHMÚ WSI station identifier.
67
+ additionalProperties: false