@golemio/fypr 1.7.2-dev.2608202800 → 1.8.0-dev.2614520446

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 (34) hide show
  1. package/db/example/06_information_panels_presets.sql +67 -0
  2. package/db/migrations/postgresql/20260618085629-add-information-panels-state-index.js +16 -0
  3. package/db/migrations/postgresql/sqls/20260618085629-add-information-panels-state-index-down.sql +2 -0
  4. package/db/migrations/postgresql/sqls/20260618085629-add-information-panels-state-index-up.sql +6 -0
  5. package/dist/output-gateway/fypr/controllers/v1/V1FyprElementKindsController.d.ts +1 -0
  6. package/dist/output-gateway/fypr/controllers/v1/V1FyprElementKindsController.js +17 -2
  7. package/dist/output-gateway/fypr/controllers/v1/V1FyprElementKindsController.js.map +1 -1
  8. package/dist/output-gateway/fypr/data-access/FyprElementRepository.d.ts +2 -2
  9. package/dist/output-gateway/fypr/data-access/FyprElementRepository.js.map +1 -1
  10. package/dist/output-gateway/fypr/routers/v1/V1FyprElementKindsRouter.d.ts +1 -0
  11. package/dist/output-gateway/fypr/routers/v1/V1FyprElementKindsRouter.js +27 -17
  12. package/dist/output-gateway/fypr/routers/v1/V1FyprElementKindsRouter.js.map +1 -1
  13. package/dist/output-gateway/fypr/routers/v1/validators/InformationPanelsOnlyValidator.d.ts +4 -0
  14. package/dist/output-gateway/fypr/routers/v1/validators/InformationPanelsOnlyValidator.js +16 -0
  15. package/dist/output-gateway/fypr/routers/v1/validators/InformationPanelsOnlyValidator.js.map +1 -0
  16. package/dist/schema-definitions/const.d.ts +4 -0
  17. package/dist/schema-definitions/const.js +4 -1
  18. package/dist/schema-definitions/const.js.map +1 -1
  19. package/dist/schema-definitions/data-sources/DBFYPRElementsJSONSchema.js +2 -2
  20. package/dist/schema-definitions/data-sources/DBFYPRElementsJSONSchema.js.map +1 -1
  21. package/dist/schema-definitions/data-sources/interfaces/IDBFYPRElement.d.ts +2 -1
  22. package/dist/schema-definitions/index.d.ts +2 -1
  23. package/dist/schema-definitions/index.js +3 -1
  24. package/dist/schema-definitions/index.js.map +1 -1
  25. package/dist/schema-definitions/models/AbstractElementModel.d.ts +4 -7
  26. package/dist/schema-definitions/models/AbstractElementModel.js +1 -1
  27. package/dist/schema-definitions/models/AbstractElementModel.js.map +1 -1
  28. package/dist/schema-definitions/models/interfaces/IElement.d.ts +2 -1
  29. package/dist/schema-definitions/models/interfaces/fyprElementStates.d.ts +2 -0
  30. package/dist/schema-definitions/models/interfaces/fyprElementStates.js +6 -0
  31. package/dist/schema-definitions/models/interfaces/fyprElementStates.js.map +1 -0
  32. package/docs/implementation_documentation.md +11 -1
  33. package/docs/openapi-output.yaml +477 -204
  34. package/package.json +1 -1
@@ -25,6 +25,7 @@ INSERT INTO fypr.information_panels (
25
25
  asw_stop_id,
26
26
  construction_type,
27
27
  panel_size,
28
+ device_id,
28
29
  jis_graphic
29
30
  ) VALUES (
30
31
  'cfcdf084-bcf4-4507-9b7f-94d55d8acbec'::uuid,
@@ -53,6 +54,7 @@ INSERT INTO fypr.information_panels (
53
54
  'thmp32',
54
55
  'V přístřešku',
55
56
  'v6',
57
+ 'DEV-HRADCANSKA-B',
56
58
  true
57
59
  ), (
58
60
  'eb92aede-2ec6-48d9-a7ef-865b774e1270'::uuid,
@@ -81,9 +83,74 @@ INSERT INTO fypr.information_panels (
81
83
  NULL,
82
84
  'Ostatní',
83
85
  NULL,
86
+ NULL,
84
87
  true
85
88
  );
86
89
 
90
+ -- Rows without presets, used by the state / hasDeviceId filter tests. Cover the remaining state
91
+ -- enum values and a mix of device_id presence (two non-null, one null).
92
+ INSERT INTO fypr.information_panels (
93
+ id,
94
+ document_id,
95
+ uid,
96
+ kind,
97
+ "name",
98
+ state,
99
+ source_created_at,
100
+ source_updated_at,
101
+ source_published_at,
102
+ created_at,
103
+ updated_at,
104
+ stop_name,
105
+ device_id,
106
+ jis_graphic
107
+ ) VALUES (
108
+ 'b1aa0001-0000-4000-8000-000000000001'::uuid,
109
+ 'filter0001unplanned00000',
110
+ 'b1aa0001-0000-4000-8000-aaaaaaaaaaa1',
111
+ 'informační panel',
112
+ 'Filtr Neplánováno',
113
+ 'Neplánováno',
114
+ '2026-05-07 10:00:00.000',
115
+ '2026-05-07 10:00:00.000',
116
+ '2026-05-07 10:00:00.000',
117
+ '2026-05-07 10:00:00.000',
118
+ '2026-05-07 10:00:00.000',
119
+ 'Filtr Neplánováno',
120
+ 'DEV-NEPLAN-001',
121
+ false
122
+ ), (
123
+ 'b1aa0002-0000-4000-8000-000000000002'::uuid,
124
+ 'filter0002cancelled00000',
125
+ 'b1aa0002-0000-4000-8000-aaaaaaaaaaa2',
126
+ 'informační panel',
127
+ 'Filtr Zrušeno',
128
+ 'Zrušeno',
129
+ '2026-05-07 10:01:00.000',
130
+ '2026-05-07 10:01:00.000',
131
+ '2026-05-07 10:01:00.000',
132
+ '2026-05-07 10:01:00.000',
133
+ '2026-05-07 10:01:00.000',
134
+ 'Filtr Zrušeno',
135
+ 'DEV-ZRUSENO-002',
136
+ false
137
+ ), (
138
+ 'b1aa0003-0000-4000-8000-000000000003'::uuid,
139
+ 'filter0003inprep00000000',
140
+ 'b1aa0003-0000-4000-8000-aaaaaaaaaaa3',
141
+ 'informační panel',
142
+ 'Filtr V přípravě',
143
+ 'V přípravě',
144
+ '2026-05-07 10:02:00.000',
145
+ '2026-05-07 10:02:00.000',
146
+ '2026-05-07 10:02:00.000',
147
+ '2026-05-07 10:02:00.000',
148
+ '2026-05-07 10:02:00.000',
149
+ 'Filtr V přípravě',
150
+ NULL,
151
+ false
152
+ );
153
+
87
154
  INSERT INTO fypr.information_panels_presets (
88
155
  id,
89
156
  route_name,
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+
3
+ const fs = require('fs/promises');
4
+ const path = require('path');
5
+
6
+ const runSql = (db, name) =>
7
+ fs.readFile(path.join(__dirname, 'sqls', name), 'utf-8').then((sql) => {
8
+ console.log('received data: ' + sql);
9
+ return db.runSql(sql);
10
+ });
11
+
12
+ exports.up = (db) => runSql(db, '20260618085629-add-information-panels-state-index-up.sql');
13
+
14
+ exports.down = (db) => runSql(db, '20260618085629-add-information-panels-state-index-down.sql');
15
+
16
+ exports._meta = { version: 1 };
@@ -0,0 +1,2 @@
1
+ DROP INDEX information_panels_state_idx;
2
+ DROP INDEX information_panels_device_id_idx;
@@ -0,0 +1,6 @@
1
+ CREATE INDEX information_panels_state_idx
2
+ ON information_panels USING btree (state);
3
+
4
+ CREATE INDEX information_panels_device_id_idx
5
+ ON information_panels USING btree (device_id)
6
+ WHERE device_id IS NOT NULL;
@@ -12,5 +12,6 @@ export declare class V1FyprElementKindsController {
12
12
  private getRepositoryByKind;
13
13
  getIndex(basePath: string): RequestHandler;
14
14
  getAll: (req: Request, res: Response, next: NextFunction) => Promise<void>;
15
+ private buildInformationPanelWhere;
15
16
  getOne: (req: Request, res: Response, next: NextFunction) => Promise<void>;
16
17
  }
@@ -19,6 +19,7 @@ const _sch_1 = require("../../../../schema-definitions");
19
19
  const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
20
20
  const express_validator_1 = require("@golemio/core/dist/shared/express-validator");
21
21
  const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
22
+ const sequelize_1 = require("@golemio/core/dist/shared/sequelize");
22
23
  const tsyringe_1 = require("@golemio/core/dist/shared/tsyringe");
23
24
  let V1FyprElementKindsController = class V1FyprElementKindsController {
24
25
  constructor(repositories, informationPanelOutputTransformation, config) {
@@ -26,9 +27,9 @@ let V1FyprElementKindsController = class V1FyprElementKindsController {
26
27
  this.informationPanelOutputTransformation = informationPanelOutputTransformation;
27
28
  this.getAll = async (req, res, next) => {
28
29
  try {
29
- const { kind, limit, offset, jis, scopes } = (0, express_validator_1.matchedData)(req);
30
+ const { kind, limit, offset, jis, scopes, state, hasDeviceId } = (0, express_validator_1.matchedData)(req);
30
31
  const effectiveLimit = req.query.limit !== undefined ? Number(limit) : this.defaultLimit;
31
- const where = jis !== undefined && kind === "information-panels" ? { jis_graphic: jis } : undefined;
32
+ const where = kind === "information-panels" ? this.buildInformationPanelWhere({ jis, state, hasDeviceId }) : {};
32
33
  const embeds = scopes ? [scopes] : undefined;
33
34
  const data = await this.getRepositoryByKind(kind).getAll({
34
35
  limit: effectiveLimit,
@@ -87,6 +88,20 @@ let V1FyprElementKindsController = class V1FyprElementKindsController {
87
88
  };
88
89
  return (_req, res) => res.status(200).json(response);
89
90
  }
91
+ buildInformationPanelWhere(filters) {
92
+ const where = {};
93
+ if (filters.jis !== undefined) {
94
+ where.jis_graphic = filters.jis;
95
+ }
96
+ if (filters.state !== undefined) {
97
+ const states = Array.isArray(filters.state) ? filters.state : [filters.state];
98
+ where.state = { [sequelize_1.Op.in]: states };
99
+ }
100
+ if (filters.hasDeviceId !== undefined) {
101
+ where.device_id = filters.hasDeviceId ? { [sequelize_1.Op.not]: null } : { [sequelize_1.Op.is]: null };
102
+ }
103
+ return where;
104
+ }
90
105
  };
91
106
  exports.V1FyprElementKindsController = V1FyprElementKindsController;
92
107
  exports.V1FyprElementKindsController = V1FyprElementKindsController = __decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"V1FyprElementKindsController.js","sourceRoot":"","sources":["../../../../../src/output-gateway/fypr/controllers/v1/V1FyprElementKindsController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"V1FyprElementKindsController.js","sourceRoot":"","sources":["../../../../../src/output-gateway/fypr/controllers/v1/V1FyprElementKindsController.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { FyprEmbedConfig } from "../../../schema-definitions/index";
2
2
  import { ILogger } from "@golemio/core/dist/helpers";
3
3
  import { IDatabaseConnector } from "@golemio/core/dist/helpers/data-access/postgres/IDatabaseConnector";
4
4
  import { AbstractBasicRepository } from "@golemio/core/dist/helpers/data-access/postgres/repositories/AbstractBasicRepository";
5
- import { ModelAttributes } from "@golemio/core/dist/shared/sequelize";
5
+ import { ModelAttributes, WhereOptions } from "@golemio/core/dist/shared/sequelize";
6
6
  export declare class FyprElementRepository<T> extends AbstractBasicRepository {
7
7
  readonly schema = "fypr";
8
8
  readonly tableName: string;
@@ -17,7 +17,7 @@ export declare class FyprElementRepository<T> extends AbstractBasicRepository {
17
17
  getAll(options?: {
18
18
  limit?: number;
19
19
  offset?: number;
20
- where?: Record<string, unknown>;
20
+ where?: WhereOptions;
21
21
  embeds?: string[];
22
22
  }): Promise<T[]>;
23
23
  getOne(id: string): Promise<T | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"FyprElementRepository.js","sourceRoot":"","sources":["../../../../src/output-gateway/fypr/data-access/FyprElementRepository.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FyprElementRepository.js","sourceRoot":"","sources":["../../../../src/output-gateway/fypr/data-access/FyprElementRepository.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,6 @@ export declare class V1FyprElementKindsRouter extends AbstractRouter {
6
6
  private controller;
7
7
  constructor();
8
8
  protected initRoutes(): void;
9
+ private informationPanelsQueryMiddleware;
9
10
  }
10
11
  export declare const v1FyprElementKindsRouter: AbstractRouter;
@@ -4,12 +4,14 @@ exports.v1FyprElementKindsRouter = exports.V1FyprElementKindsRouter = void 0;
4
4
  const Di_1 = require("../../../ioc/Di");
5
5
  const FYPROGContainerTokens_1 = require("../../../ioc/FYPROGContainerTokens");
6
6
  const constants_1 = require("../../../shared/constants");
7
+ const index_1 = require("../../../../schema-definitions/index");
7
8
  const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
8
9
  const AbstractRouter_1 = require("@golemio/core/dist/helpers/routing/AbstractRouter");
9
10
  const Validation_1 = require("@golemio/core/dist/output-gateway/Validation");
10
11
  const ioc_1 = require("@golemio/core/dist/output-gateway/ioc");
11
12
  const express_1 = require("@golemio/core/dist/shared/express");
12
13
  const express_validator_1 = require("@golemio/core/dist/shared/express-validator");
14
+ const InformationPanelsOnlyValidator_1 = require("./validators/InformationPanelsOnlyValidator");
13
15
  class V1FyprElementKindsRouter extends AbstractRouter_1.AbstractRouter {
14
16
  constructor() {
15
17
  super("v1", "fypr/elements");
@@ -26,32 +28,40 @@ class V1FyprElementKindsRouter extends AbstractRouter_1.AbstractRouter {
26
28
  const kindParamMiddleware = (0, express_validator_1.param)("kind")
27
29
  .isIn(constants_1.fyprElementKinds)
28
30
  .withMessage(`kind must be one of: ${constants_1.fyprElementKinds.join(", ")}`);
29
- const jisQueryMiddleware = (0, express_validator_1.query)("jis")
31
+ this.router.get("/", cacheMiddleware, this.controller.getIndex(`/${this.version}/${this.path}`));
32
+ this.router.get("/:kind", kindParamMiddleware, ...this.informationPanelsQueryMiddleware(), (0, Validation_1.paginationLimitMiddleware)("FyprElementKindsRouter"), Validation_1.checkErrors, cacheMiddleware, this.controller.getAll);
33
+ this.router.get("/:kind/:id", kindParamMiddleware, (0, express_validator_1.param)("id").isUUID(), Validation_1.checkErrors, cacheMiddleware, this.controller.getOne);
34
+ }
35
+ // Optional query filters that only apply to the information-panels listing. checkExact (in
36
+ // checkErrors) registers them so they pass the no-unknown-params guard once validated.
37
+ informationPanelsQueryMiddleware() {
38
+ const jis = (0, express_validator_1.query)("jis")
30
39
  .optional()
31
- .custom((_value, { req }) => {
32
- if (req.params?.["kind"] !== "information-panels") {
33
- throw new Error("jis is only supported for information-panels");
34
- }
35
- return true;
36
- })
40
+ .custom(InformationPanelsOnlyValidator_1.InformationPanelsOnlyValidator.field("jis"))
37
41
  .bail()
38
42
  .isBoolean({ strict: false })
39
43
  .withMessage("jis must be a boolean")
40
44
  .toBoolean();
41
- const scopesQueryMiddleware = (0, express_validator_1.query)("scopes")
45
+ const scopes = (0, express_validator_1.query)("scopes")
42
46
  .optional()
43
- .custom((_value, { req }) => {
44
- if (req.params?.["kind"] !== "information-panels") {
45
- throw new Error("scopes is only supported for information-panels");
46
- }
47
- return true;
48
- })
47
+ .custom(InformationPanelsOnlyValidator_1.InformationPanelsOnlyValidator.field("scopes"))
49
48
  .bail()
50
49
  .isIn(["routes"])
51
50
  .withMessage("scopes must be one of: routes");
52
- this.router.get("/", cacheMiddleware, this.controller.getIndex(`/${this.version}/${this.path}`));
53
- this.router.get("/:kind", kindParamMiddleware, jisQueryMiddleware, scopesQueryMiddleware, (0, Validation_1.paginationLimitMiddleware)("FyprElementKindsRouter"), Validation_1.checkErrors, cacheMiddleware, this.controller.getAll);
54
- this.router.get("/:kind/:id", kindParamMiddleware, (0, express_validator_1.param)("id").isUUID(), Validation_1.checkErrors, cacheMiddleware, this.controller.getOne);
51
+ const state = (0, express_validator_1.query)("state")
52
+ .optional()
53
+ .custom(InformationPanelsOnlyValidator_1.InformationPanelsOnlyValidator.field("state"))
54
+ .bail()
55
+ .isIn(index_1.fyprElementStates)
56
+ .withMessage(`state must be one of: ${index_1.fyprElementStates.join(", ")}`);
57
+ const hasDeviceId = (0, express_validator_1.query)("hasDeviceId")
58
+ .optional()
59
+ .custom(InformationPanelsOnlyValidator_1.InformationPanelsOnlyValidator.field("hasDeviceId"))
60
+ .bail()
61
+ .isBoolean({ strict: false })
62
+ .withMessage("hasDeviceId must be a boolean")
63
+ .toBoolean();
64
+ return [jis, scopes, state, hasDeviceId];
55
65
  }
56
66
  }
57
67
  exports.V1FyprElementKindsRouter = V1FyprElementKindsRouter;
@@ -1 +1 @@
1
- {"version":3,"file":"V1FyprElementKindsRouter.js","sourceRoot":"","sources":["../../../../../src/output-gateway/fypr/routers/v1/V1FyprElementKindsRouter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"V1FyprElementKindsRouter.js","sourceRoot":"","sources":["../../../../../src/output-gateway/fypr/routers/v1/V1FyprElementKindsRouter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { CustomValidator } from "@golemio/core/dist/shared/express-validator";
2
+ export declare class InformationPanelsOnlyValidator {
3
+ static field(paramName: string): CustomValidator;
4
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InformationPanelsOnlyValidator = void 0;
4
+ // Filters jis/scopes/state/hasDeviceId only make sense for information-panels; reject them on other kinds.
5
+ class InformationPanelsOnlyValidator {
6
+ static field(paramName) {
7
+ return (_value, { req }) => {
8
+ if (req.params?.["kind"] !== "information-panels") {
9
+ throw new Error(`${paramName} is only supported for information-panels`);
10
+ }
11
+ return true;
12
+ };
13
+ }
14
+ }
15
+ exports.InformationPanelsOnlyValidator = InformationPanelsOnlyValidator;
16
+ //# sourceMappingURL=InformationPanelsOnlyValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InformationPanelsOnlyValidator.js","sourceRoot":"","sources":["../../../../../../src/output-gateway/fypr/routers/v1/validators/InformationPanelsOnlyValidator.ts"],"names":[],"mappings":";;;AAEA,2GAA2G;AAC3G,MAAa,8BAA8B;IAChC,MAAM,CAAC,KAAK,CAAC,SAAiB;QACjC,OAAO,CAAC,MAAe,EAAE,EAAE,GAAG,EAAQ,EAAW,EAAE;YAC/C,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,KAAK,oBAAoB,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CAAC,GAAG,SAAS,2CAA2C,CAAC,CAAC;YAC7E,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;IACN,CAAC;CACJ;AATD,wEASC"}
@@ -44,3 +44,7 @@ export declare const nullableStringArray: {
44
44
  readonly nullable: true;
45
45
  }];
46
46
  };
47
+ export declare const stateEnum: {
48
+ readonly type: "string";
49
+ readonly enum: readonly ["Plánováno", "V přípravě", "Hotovo", "Zrušeno", "Neplánováno"];
50
+ };
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.nullableStringArray = exports.nullableDateString = exports.nullableBoolean = exports.nullableNumber = exports.nullableString = exports.STALE_ROW_THRESHOLD = exports.PG_SCHEMA = void 0;
3
+ exports.stateEnum = exports.nullableStringArray = exports.nullableDateString = exports.nullableBoolean = exports.nullableNumber = exports.nullableString = exports.STALE_ROW_THRESHOLD = exports.PG_SCHEMA = void 0;
4
+ const fyprElementStates_1 = require("./models/interfaces/fyprElementStates");
4
5
  exports.PG_SCHEMA = "fypr";
5
6
  exports.STALE_ROW_THRESHOLD = "NOW() - INTERVAL '1 minute'";
6
7
  // Reusable JSON schema fragments for nullable properties
@@ -19,4 +20,6 @@ exports.nullableStringArray = {
19
20
  { type: "null", nullable: true },
20
21
  ],
21
22
  };
23
+ // Required `state` / source `stav_prvku` enum fragment (non-null).
24
+ exports.stateEnum = { type: "string", enum: fyprElementStates_1.fyprElementStates };
22
25
  //# sourceMappingURL=const.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"const.js","sourceRoot":"","sources":["../../src/schema-definitions/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,MAAM,CAAC;AACnB,QAAA,mBAAmB,GAAG,6BAA6B,CAAC;AAEjE,yDAAyD;AAC5C,QAAA,cAAc,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAW,CAAC;AAC5F,QAAA,cAAc,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAW,CAAC;AAC5F,QAAA,eAAe,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAW,CAAC;AAC9F,QAAA,kBAAkB,GAAG;IAC9B,KAAK,EAAE;QACH,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;QAClC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;KACnC;CACK,CAAC;AACE,QAAA,mBAAmB,GAAG;IAC/B,KAAK,EAAE;QACH,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAC5C,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;KACnC;CACK,CAAC"}
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../src/schema-definitions/const.ts"],"names":[],"mappings":";;;AAAA,6EAA0E;AAE7D,QAAA,SAAS,GAAG,MAAM,CAAC;AACnB,QAAA,mBAAmB,GAAG,6BAA6B,CAAC;AAEjE,yDAAyD;AAC5C,QAAA,cAAc,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAW,CAAC;AAC5F,QAAA,cAAc,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAW,CAAC;AAC5F,QAAA,eAAe,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAW,CAAC;AAC9F,QAAA,kBAAkB,GAAG;IAC9B,KAAK,EAAE;QACH,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;QAClC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;KACnC;CACK,CAAC;AACE,QAAA,mBAAmB,GAAG;IAC/B,KAAK,EAAE;QACH,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAC5C,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;KACnC;CACK,CAAC;AAEX,mEAAmE;AACtD,QAAA,SAAS,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,qCAAiB,EAAW,CAAC"}
@@ -12,7 +12,7 @@ exports.dbfyprElementsJSONSchema = {
12
12
  uid_prvku: const_1.nullableString,
13
13
  typ_prvku: const_1.nullableString,
14
14
  nazev_prvku: const_1.nullableString,
15
- stav_prvku: const_1.nullableString,
15
+ stav_prvku: const_1.stateEnum,
16
16
  vlastnik_prvku: const_1.nullableString,
17
17
  spravce_prvku: const_1.nullableString,
18
18
  umisteni_mestska_cast: const_1.nullableString,
@@ -27,7 +27,7 @@ exports.dbfyprElementsJSONSchema = {
27
27
  updatedAt: { type: "string", format: "date-time" },
28
28
  publishedAt: { type: "string", format: "date-time" },
29
29
  },
30
- required: ["id", "documentId", "createdAt", "updatedAt", "publishedAt"],
30
+ required: ["id", "documentId", "stav_prvku", "createdAt", "updatedAt", "publishedAt"],
31
31
  additionalProperties: false,
32
32
  },
33
33
  };
@@ -1 +1 @@
1
- {"version":3,"file":"DBFYPRElementsJSONSchema.js","sourceRoot":"","sources":["../../../src/schema-definitions/data-sources/DBFYPRElementsJSONSchema.ts"],"names":[],"mappings":";;;AACA,oCAAiF;AAGpE,QAAA,wBAAwB,GAAqC;IACtE,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACvB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,SAAS,EAAE,sBAAc;YACzB,SAAS,EAAE,sBAAc;YACzB,WAAW,EAAE,sBAAc;YAC3B,UAAU,EAAE,sBAAc;YAC1B,cAAc,EAAE,sBAAc;YAC9B,aAAa,EAAE,sBAAc;YAC7B,qBAAqB,EAAE,sBAAc;YACrC,uBAAuB,EAAE,sBAAc;YACvC,uBAAuB,EAAE,sBAAc;YACvC,UAAU,EAAE,sBAAc;YAC1B,uBAAuB,EAAE,sBAAc;YACvC,gBAAgB,EAAE,sBAAc;YAChC,iBAAiB,EAAE,uBAAe;YAClC,uBAAuB,EAAE,0BAAkB;YAC3C,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;YAClD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;YAClD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;SACvD;QACD,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC;QACvE,oBAAoB,EAAE,KAAK;KAC9B;CACJ,CAAC"}
1
+ {"version":3,"file":"DBFYPRElementsJSONSchema.js","sourceRoot":"","sources":["../../../src/schema-definitions/data-sources/DBFYPRElementsJSONSchema.ts"],"names":[],"mappings":";;;AACA,oCAA4F;AAG/E,QAAA,wBAAwB,GAAqC;IACtE,IAAI,EAAE,OAAO;IACb,KAAK,EAAE;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YACvB,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC9B,SAAS,EAAE,sBAAc;YACzB,SAAS,EAAE,sBAAc;YACzB,WAAW,EAAE,sBAAc;YAC3B,UAAU,EAAE,iBAAS;YACrB,cAAc,EAAE,sBAAc;YAC9B,aAAa,EAAE,sBAAc;YAC7B,qBAAqB,EAAE,sBAAc;YACrC,uBAAuB,EAAE,sBAAc;YACvC,uBAAuB,EAAE,sBAAc;YACvC,UAAU,EAAE,sBAAc;YAC1B,uBAAuB,EAAE,sBAAc;YACvC,gBAAgB,EAAE,sBAAc;YAChC,iBAAiB,EAAE,uBAAe;YAClC,uBAAuB,EAAE,0BAAkB;YAC3C,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;YAClD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;YAClD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE;SACvD;QACD,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC;QACrF,oBAAoB,EAAE,KAAK;KAC9B;CACJ,CAAC"}
@@ -1,10 +1,11 @@
1
+ import { FyprElementState } from "../../models/interfaces/fyprElementStates";
1
2
  export interface IDBFYPRElement {
2
3
  id: number;
3
4
  documentId: string;
4
5
  uid_prvku: string | null;
5
6
  typ_prvku: string | null;
6
7
  nazev_prvku: string | null;
7
- stav_prvku: string | null;
8
+ stav_prvku: FyprElementState;
8
9
  vlastnik_prvku: string | null;
9
10
  spravce_prvku: string | null;
10
11
  umisteni_mestska_cast: string | null;
@@ -1,4 +1,6 @@
1
1
  import { Model, ModelAttributes } from "@golemio/core/dist/shared/sequelize";
2
+ export { AnyFyprElement } from "./FyprElementTypes";
3
+ export { fyprElementStates, FyprElementState } from "./models/interfaces/fyprElementStates";
2
4
  export type FyprEmbedConfig = {
3
5
  tableName: string;
4
6
  as: string;
@@ -23,4 +25,3 @@ export declare const FyprElementsConfig: {
23
25
  };
24
26
  export type FyprElementKind = keyof typeof FyprElementsConfig;
25
27
  export declare const fyprElementKinds: FyprElementKind[];
26
- export { AnyFyprElement } from "./FyprElementTypes";
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.fyprElementKinds = exports.FyprElementsConfig = void 0;
3
+ exports.fyprElementKinds = exports.FyprElementsConfig = exports.fyprElementStates = void 0;
4
4
  const DisplayCaseModel_1 = require("./models/DisplayCaseModel");
5
5
  const InformationPanelModel_1 = require("./models/InformationPanelModel");
6
6
  const InformationPanelPresetsRoutesAggModel_1 = require("./models/InformationPanelPresetsRoutesAggModel");
7
7
  const ObeliskModel_1 = require("./models/ObeliskModel");
8
8
  const SignpostModel_1 = require("./models/SignpostModel");
9
9
  const TotemModel_1 = require("./models/TotemModel");
10
+ var fyprElementStates_1 = require("./models/interfaces/fyprElementStates");
11
+ Object.defineProperty(exports, "fyprElementStates", { enumerable: true, get: function () { return fyprElementStates_1.fyprElementStates; } });
10
12
  exports.FyprElementsConfig = {
11
13
  "display-cases": {
12
14
  cs_singular: "vitrína",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema-definitions/index.ts"],"names":[],"mappings":";;;AACA,gEAA6D;AAC7D,0EAAuE;AACvE,0GAAuG;AACvG,wDAAqD;AACrD,0DAAuD;AACvD,oDAAiD;AAmBpC,QAAA,kBAAkB,GAM3B;IACA,eAAe,EAAE;QACb,WAAW,EAAE,SAAS;QACtB,EAAE,EAAE,SAAS;QACb,SAAS,EAAE,eAAe;QAC1B,SAAS,EAAE,mCAAgB,CAAC,SAAS;QACrC,cAAc,EAAE,mCAAgB,CAAC,cAAc;KAClD;IACD,oBAAoB,EAAE;QAClB,WAAW,EAAE,kBAAkB;QAC/B,EAAE,EAAE,mBAAmB;QACvB,SAAS,EAAE,oBAAoB;QAC/B,SAAS,EAAE,6CAAqB,CAAC,SAAS;QAC1C,cAAc,EAAE,6CAAqB,CAAC,cAAc;QACpD,MAAM,EAAE;YACJ,MAAM,EAAE;gBACJ,SAAS,EAAE,6EAAqC,CAAC,SAAS;gBAC1D,EAAE,EAAE,kBAAkB;gBACtB,UAAU,EAAE,+BAA+B;gBAC3C,SAAS,EAAE,aAAa;gBACxB,cAAc,EAAE,6EAAqC,CAAC,cAAc;aACvE;SACJ;KACJ;IACD,QAAQ,EAAE;QACN,WAAW,EAAE,SAAS;QACtB,EAAE,EAAE,UAAU;QACd,SAAS,EAAE,UAAU;QACrB,SAAS,EAAE,2BAAY,CAAC,SAAS;QACjC,cAAc,EAAE,2BAAY,CAAC,cAAc;KAC9C;IACD,SAAS,EAAE;QACP,WAAW,EAAE,WAAW;QACxB,EAAE,EAAE,YAAY;QAChB,SAAS,EAAE,WAAW;QACtB,SAAS,EAAE,6BAAa,CAAC,SAAS;QAClC,cAAc,EAAE,6BAAa,CAAC,cAAc;KAC/C;IACD,MAAM,EAAE;QACJ,WAAW,EAAE,OAAO;QACpB,EAAE,EAAE,QAAQ;QACZ,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,uBAAU,CAAC,SAAS;QAC/B,cAAc,EAAE,uBAAU,CAAC,cAAc;KAC5C;CACJ,CAAC;AAIW,QAAA,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,0BAAkB,CAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schema-definitions/index.ts"],"names":[],"mappings":";;;AACA,gEAA6D;AAC7D,0EAAuE;AACvE,0GAAuG;AACvG,wDAAqD;AACrD,0DAAuD;AACvD,oDAAiD;AAGjD,2EAA4F;AAAnF,sHAAA,iBAAiB,OAAA;AAmBb,QAAA,kBAAkB,GAM3B;IACA,eAAe,EAAE;QACb,WAAW,EAAE,SAAS;QACtB,EAAE,EAAE,SAAS;QACb,SAAS,EAAE,eAAe;QAC1B,SAAS,EAAE,mCAAgB,CAAC,SAAS;QACrC,cAAc,EAAE,mCAAgB,CAAC,cAAc;KAClD;IACD,oBAAoB,EAAE;QAClB,WAAW,EAAE,kBAAkB;QAC/B,EAAE,EAAE,mBAAmB;QACvB,SAAS,EAAE,oBAAoB;QAC/B,SAAS,EAAE,6CAAqB,CAAC,SAAS;QAC1C,cAAc,EAAE,6CAAqB,CAAC,cAAc;QACpD,MAAM,EAAE;YACJ,MAAM,EAAE;gBACJ,SAAS,EAAE,6EAAqC,CAAC,SAAS;gBAC1D,EAAE,EAAE,kBAAkB;gBACtB,UAAU,EAAE,+BAA+B;gBAC3C,SAAS,EAAE,aAAa;gBACxB,cAAc,EAAE,6EAAqC,CAAC,cAAc;aACvE;SACJ;KACJ;IACD,QAAQ,EAAE;QACN,WAAW,EAAE,SAAS;QACtB,EAAE,EAAE,UAAU;QACd,SAAS,EAAE,UAAU;QACrB,SAAS,EAAE,2BAAY,CAAC,SAAS;QACjC,cAAc,EAAE,2BAAY,CAAC,cAAc;KAC9C;IACD,SAAS,EAAE;QACP,WAAW,EAAE,WAAW;QACxB,EAAE,EAAE,YAAY;QAChB,SAAS,EAAE,WAAW;QACtB,SAAS,EAAE,6BAAa,CAAC,SAAS;QAClC,cAAc,EAAE,6BAAa,CAAC,cAAc;KAC/C;IACD,MAAM,EAAE;QACJ,WAAW,EAAE,OAAO;QACpB,EAAE,EAAE,QAAQ;QACZ,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,uBAAU,CAAC,SAAS;QAC/B,cAAc,EAAE,uBAAU,CAAC,cAAc;KAC5C;CACJ,CAAC;AAIW,QAAA,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,0BAAkB,CAAsB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { CreationOptional, InferAttributes, InferCreationAttributes, Model, ModelAttributes } from "@golemio/core/dist/shared/sequelize";
2
+ import { FyprElementState } from "./interfaces/fyprElementStates";
2
3
  import { IElement } from "./interfaces/IElement";
3
4
  export declare abstract class AbstractElementModel extends Model<InferAttributes<AbstractElementModel>, InferCreationAttributes<AbstractElementModel>> implements IElement {
4
5
  id: CreationOptional<string>;
@@ -6,7 +7,7 @@ export declare abstract class AbstractElementModel extends Model<InferAttributes
6
7
  uid: string | null;
7
8
  kind: string | null;
8
9
  name: string | null;
9
- state: string | null;
10
+ state: FyprElementState;
10
11
  owner: string | null;
11
12
  manager: string | null;
12
13
  city_district: string | null;
@@ -55,12 +56,8 @@ export declare abstract class AbstractElementModel extends Model<InferAttributes
55
56
  }];
56
57
  };
57
58
  readonly state: {
58
- readonly oneOf: readonly [{
59
- readonly type: "string";
60
- }, {
61
- readonly type: "null";
62
- readonly nullable: true;
63
- }];
59
+ readonly type: "string";
60
+ readonly enum: readonly ["Plánováno", "V přípravě", "Hotovo", "Zrušeno", "Neplánováno"];
64
61
  };
65
62
  readonly owner: {
66
63
  readonly oneOf: readonly [{
@@ -54,7 +54,7 @@ AbstractElementModel.elementJSONSchemaProperties = {
54
54
  },
55
55
  kind: const_1.nullableString,
56
56
  name: const_1.nullableString,
57
- state: const_1.nullableString,
57
+ state: const_1.stateEnum,
58
58
  owner: const_1.nullableString,
59
59
  manager: const_1.nullableString,
60
60
  city_district: const_1.nullableString,
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractElementModel.js","sourceRoot":"","sources":["../../../src/schema-definitions/models/AbstractElementModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AbstractElementModel.js","sourceRoot":"","sources":["../../../src/schema-definitions/models/AbstractElementModel.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
+ import { FyprElementState } from "./fyprElementStates";
1
2
  export interface IElement {
2
3
  document_id: string;
3
4
  uid: string | null;
4
5
  kind: string | null;
5
6
  name: string | null;
6
- state: string | null;
7
+ state: FyprElementState;
7
8
  owner: string | null;
8
9
  manager: string | null;
9
10
  city_district: string | null;
@@ -0,0 +1,2 @@
1
+ export declare const fyprElementStates: readonly ["Plánováno", "V přípravě", "Hotovo", "Zrušeno", "Neplánováno"];
2
+ export type FyprElementState = typeof fyprElementStates[number];
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fyprElementStates = void 0;
4
+ // Values of the `state` column (Czech `stav_prvku`), shared by all FYPR element kinds.
5
+ exports.fyprElementStates = ["Plánováno", "V přípravě", "Hotovo", "Zrušeno", "Neplánováno"];
6
+ //# sourceMappingURL=fyprElementStates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fyprElementStates.js","sourceRoot":"","sources":["../../../../src/schema-definitions/models/interfaces/fyprElementStates.ts"],"names":[],"mappings":";;;AAAA,uFAAuF;AAC1E,QAAA,iBAAiB,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAU,CAAC"}
@@ -288,8 +288,18 @@ Výsledky jsou řazeny dle `source_created_at ASC` (nejstarší záznamy první,
288
288
  | `signposts` | `fypr.signposts` | [`SignpostModel`](../src/schema-definitions/models/SignpostModel.ts) |
289
289
  | `totems` | `fypr.totems` | [`TotemModel`](../src/schema-definitions/models/TotemModel.ts) |
290
290
 
291
+ - volitelné filtrovací query parametry (pouze pro `information-panels`, jinak `400`):
292
+ - `jis` (boolean) — filtruje dle příznaku `jis_graphic`
293
+ - `state` (enum, lze opakovat) — filtruje dle stavu prvku; opakováním se vytvoří podmínka `IN`
294
+ (`state=Hotovo&state=Plánováno`); platné hodnoty: `Plánováno`, `V přípravě`, `Hotovo`, `Zrušeno`, `Neplánováno`
295
+ - `hasDeviceId` (boolean) — `true` vrátí infopanely s vyplněným `device_id`, `false` infopanely bez něj
296
+
297
+ - volitelné query parametry pro připojení souvisejících dat (embed/join, pouze pro `information-panels`):
298
+ - `scopes=routes` — připojí k infopanelům související linky (`routes`) z navázaných tabulek presetů
299
+
291
300
  - chybové stavové kódy:
292
- - `400` — neznámý `:kind`, neplatný `limit` (mimo rozsah 1–10000) nebo záporný `offset`
301
+ - `400` — neznámý `:kind`, neplatný `limit` (mimo rozsah 1–10000), záporný `offset`,
302
+ neplatná hodnota filtru nebo filtr použitý na jiný `:kind` než `information-panels`
293
303
  - `413` — `limit` překročí maximum (> 10000)
294
304
 
295
305
  #### `GET /v1/fypr/elements/:kind/:id`