@golemio/gardens 1.0.4-dev.568905056 → 1.0.4-dev.687605332

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 (76) hide show
  1. package/LICENSE +1 -1
  2. package/db/example/.config.json +3 -0
  3. package/db/example/00_truncate_tables.sql +1 -0
  4. package/db/example/01_gardens.sql +6 -0
  5. package/db/migrations/postgresql/.config.json +3 -0
  6. package/db/migrations/postgresql/20221027165643-init-mongo-to-pg.js +51 -0
  7. package/db/migrations/postgresql/package.json +3 -0
  8. package/db/migrations/postgresql/sqls/20221027165643-init-mongo-to-pg-down.sql +2 -0
  9. package/db/migrations/postgresql/sqls/20221027165643-init-mongo-to-pg-up.sql +37 -0
  10. package/db/migrations/postgresql/sqls/package.json +3 -0
  11. package/dist/index.d.ts +2 -0
  12. package/dist/index.js +3 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/integration-engine/datasources/GardensDataSourceFactory.d.ts +3 -0
  15. package/dist/integration-engine/datasources/GardensDataSourceFactory.js +22 -0
  16. package/dist/integration-engine/datasources/GardensDataSourceFactory.js.map +1 -0
  17. package/dist/integration-engine/index.d.ts +2 -3
  18. package/dist/integration-engine/index.js +4 -3
  19. package/dist/integration-engine/index.js.map +1 -1
  20. package/dist/integration-engine/repositories/GardensRepository.d.ts +6 -0
  21. package/dist/integration-engine/repositories/GardensRepository.js +39 -0
  22. package/dist/integration-engine/repositories/GardensRepository.js.map +1 -0
  23. package/dist/integration-engine/transformations/GardensTransformation.d.ts +9 -0
  24. package/dist/integration-engine/transformations/GardensTransformation.js +58 -0
  25. package/dist/integration-engine/transformations/GardensTransformation.js.map +1 -0
  26. package/dist/integration-engine/workers/GardensWorker.d.ts +5 -0
  27. package/dist/integration-engine/workers/GardensWorker.js +14 -0
  28. package/dist/integration-engine/workers/GardensWorker.js.map +1 -0
  29. package/dist/integration-engine/workers/index.d.ts +2 -0
  30. package/dist/integration-engine/workers/index.js +6 -0
  31. package/dist/integration-engine/workers/index.js.map +1 -0
  32. package/dist/integration-engine/workers/tasks/RefreshDataInDBTask.d.ts +10 -0
  33. package/dist/integration-engine/workers/tasks/RefreshDataInDBTask.js +35 -0
  34. package/dist/integration-engine/workers/tasks/RefreshDataInDBTask.js.map +1 -0
  35. package/dist/output-gateway/GardensRouter.d.ts +1 -8
  36. package/dist/output-gateway/GardensRouter.js +1 -19
  37. package/dist/output-gateway/GardensRouter.js.map +1 -1
  38. package/dist/output-gateway/index.d.ts +1 -1
  39. package/dist/output-gateway/index.js +1 -1
  40. package/dist/output-gateway/index.js.map +1 -1
  41. package/dist/output-gateway/repositories/FilterHelper.d.ts +8 -0
  42. package/dist/output-gateway/repositories/FilterHelper.js +47 -0
  43. package/dist/output-gateway/repositories/FilterHelper.js.map +1 -0
  44. package/dist/output-gateway/repositories/GardensRepository.d.ts +14 -0
  45. package/dist/output-gateway/repositories/GardensRepository.js +146 -0
  46. package/dist/output-gateway/repositories/GardensRepository.js.map +1 -0
  47. package/dist/schema-definitions/Gardens.d.ts +28 -0
  48. package/dist/schema-definitions/Gardens.js +8 -0
  49. package/dist/schema-definitions/Gardens.js.map +1 -0
  50. package/dist/schema-definitions/datasources/GardensJsonSchema.d.ts +27 -0
  51. package/dist/schema-definitions/datasources/GardensJsonSchema.js +45 -0
  52. package/dist/schema-definitions/datasources/GardensJsonSchema.js.map +1 -0
  53. package/dist/schema-definitions/index.d.ts +1 -11
  54. package/dist/schema-definitions/index.js +9 -59
  55. package/dist/schema-definitions/index.js.map +1 -1
  56. package/dist/schema-definitions/models/GardensModel.d.ts +28 -0
  57. package/dist/schema-definitions/models/GardensModel.js +67 -0
  58. package/dist/schema-definitions/models/GardensModel.js.map +1 -0
  59. package/docs/gardens_erd.png +0 -0
  60. package/docs/implementation_documentation.md +69 -0
  61. package/docs/openapi.yaml +264 -0
  62. package/package.json +65 -60
  63. package/db/example/mongo_data/dataplatform/gardens.bson +0 -0
  64. package/db/example/mongo_data/dataplatform/gardens.metadata.json +0 -1
  65. package/dist/integration-engine/GardensTransformation.d.ts +0 -7
  66. package/dist/integration-engine/GardensTransformation.js +0 -88
  67. package/dist/integration-engine/GardensTransformation.js.map +0 -1
  68. package/dist/integration-engine/GardensWorker.d.ts +0 -8
  69. package/dist/integration-engine/GardensWorker.js +0 -58
  70. package/dist/integration-engine/GardensWorker.js.map +0 -1
  71. package/dist/integration-engine/queueDefinitions.d.ts +0 -3
  72. package/dist/integration-engine/queueDefinitions.js +0 -26
  73. package/dist/integration-engine/queueDefinitions.js.map +0 -1
  74. package/dist/output-gateway/GardensModel.d.ts +0 -7
  75. package/dist/output-gateway/GardensModel.js +0 -17
  76. package/dist/output-gateway/GardensModel.js.map +0 -1
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2019 Operátor ICT, a.s.
3
+ Copyright (c) 2022 Operátor ICT, a.s.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
6
6
 
@@ -0,0 +1,3 @@
1
+ {
2
+ "schema": "gardens"
3
+ }
@@ -0,0 +1 @@
1
+ TRUNCATE "gardens";
@@ -0,0 +1,6 @@
1
+ -- INSERT INTO gardens ...
2
+
3
+ INSERT INTO gardens (id, geometry, "name", image, description, url, address, district, restaurace, brusle, cesty, doba, hriste, kolo, mhd, misto, parking, provoz, sport, wc, create_batch_id, created_at, created_by, update_batch_id, updated_at, updated_by) VALUES('bertramka', 'SRID=4326;POINT (14.395004 50.070894)'::public.geometry, 'Bertramka', 'http://www.praha.eu/public/5c/7c/31/96820_4_bertramka_08.jpg', 'Mozartova busta v zahradě legendární usedlosti stojí na vyvýšeném místě.', 'http://www.praha.eu/jnp/cz/co_delat_v_praze/parky/bertramka/bertramka_text.html', 'Mozartova 844/14, 15000 Praha, Česko', 'praha-5', '', 'NE', 'Dlažba', 'Celoročně duben až říjen 9-18 hod., listopad až březen 9:30-16 hod.', 'NE', 'ANO', 'Bertramka tram č. 4, 7, 9, 10, 58, 59', 'Kulturní památka, koncerty vážné hudby, společenské akce, muzeum W. A. Mozarta', 'ANO, v podzemním parkingu OC Smíchov', 'Městská část Praha 5 a spol. Comenius', 'NE', 'ANO', NULL, '2022-10-27 16:26:14.685', NULL, NULL, '2022-10-27 16:26:14.685', NULL);
4
+ INSERT INTO gardens (id, geometry, "name", image, description, url, address, district, restaurace, brusle, cesty, doba, hriste, kolo, mhd, misto, parking, provoz, sport, wc, create_batch_id, created_at, created_by, update_batch_id, updated_at, updated_by) VALUES('frantiskanska-zahrada', 'SRID=4326;POINT (14.423701 50.082386)'::public.geometry, 'Františkánská zahrada', 'http://www.praha.eu/public/8f/95/1/159114_24036_frantiskanska_3.jpg', 'V samém centru Prahy, mezi Václavským a Jungmannovým náměstím, se ukrývá jedna z nejpříjemnějších zahrad otevřených pro veřejnost, kde je možné usednout na lavičku, přečíst si knihu nebo si pohrát s dětmi.', 'http://www.praha.eu/jnp/cz/co_delat_v_praze/parky/frantiskanska_zahrada/frantiskanska_text.html', 'Jungmannovo nám. 751/19, 11000 Praha, Česko', 'praha-1', 'Občerstvení: V bezprostředním okolí – pasáž Alfa, Václavské i Jungmannovo náměstí, Národní třída', 'NE', 'Dlažba, v dětském koutku speciální povrch', 'Celoročně, uzavírá se na noc', 'ANO', 'ANO', 'Václavské nám. Tram. Č. 3, 9, 14, 24, 51, 52, 54, 55, 56, 58, metro A, B Můstek', 'Příjemné posezení v samém centru města, vhodné pro děti i seniory, psi NE, v sousedství kostel P. Marie Sněžné', 'NE', 'Hlavní město Praha', 'NE', 'ANO, bezbariérové', NULL, '2022-10-27 16:26:14.685', NULL, NULL, '2022-10-27 16:26:14.685', NULL);
5
+ INSERT INTO gardens (id, geometry, "name", image, description, url, address, district, restaurace, brusle, cesty, doba, hriste, kolo, mhd, misto, parking, provoz, sport, wc, create_batch_id, created_at, created_by, update_batch_id, updated_at, updated_by) VALUES('obora-hvezda', 'SRID=4326;POINT (14.326214 50.08337)'::public.geometry, 'Obora Hvězda', 'http://www.praha.eu/public/59/28/a7/96946_4_hvezda2.jpg', 'Nadšení běžkaři, hledající v zimě po Praze terény pro svoji zálibu, i děti, které stále ještě chodí na podzim pouštět draky, znají rozlehlou planinu obklopující ze všech stran křižovatku na Vypichu velmi dobře. Jak Ladronka, tak protější předpolí obory Hvězda i obora sama totiž skýtají množství prostoru pro rekreační aktivity.', 'http://www.praha.eu/jnp/cz/co_delat_v_praze/parky/hvezda/obora_hvezda.html', 'Obora Hvězda 445, 16000 Praha, Česko', 'praha-6', 'Občerstvení:', 'NE', 'Zpevněné mlatové a lesní', 'Celoročně obora, letohrádek duben 10-17, květen až září 10-18 hod., říjen 10-17 hod.', 'ANO 2 x', 'Možnost jízdy na kole po pěšinách, v zimě běžky', 'Nad Markétou, bus č. 179, 184, 191, 510, Libocká - bus č.179, 510, Vypich, tram č. 15, 22, 25, 57', 'Vhodné pro rodiny s dětmi i turisty, psi ano, památné stromy, naučná stezka, přírodní zajímavosti.', 'Cca 8 míst před Libockou bránou, nebo volně v ul. U Hvězdy', 'Památník národního písemnictví a Hlavní město Praha', 'NE, za oborou dětské a dopravní hřiště a Dům dětí a mládeže Vypich (www.ddmp6.cz/kontakt/)', 'Mobilní buňky v oboře, během sezony (duben až říjen) také WC v letohrádku', NULL, '2022-10-27 16:26:14.685', NULL, NULL, '2022-10-27 16:26:14.685', NULL);
6
+ INSERT INTO gardens (id, geometry, "name", image, description, url, address, district, restaurace, brusle, cesty, doba, hriste, kolo, mhd, misto, parking, provoz, sport, wc, create_batch_id, created_at, created_by, update_batch_id, updated_at, updated_by) VALUES('kampa', 'SRID=4326;POINT (14.408009 50.0854372)'::public.geometry, 'Kampa', 'http://www.praha.eu/public/93/88/91/113755_4_kampa_namesti.jpg', 'Cestou od Karlova mostu přes náměstí Na Kampě se na jeho konci rozevře pohled do nevelkého parčíku, který však na relativně malé ploše necelé tři hektary poskytuje velké množství potěchy, ať už jde o tělo, či o duši.', 'http://www.praha.eu/jnp/cz/co_delat_v_praze/parky/kampa/kampa_text.html', 'U Sovových mlýnů 501/7, 11000 Praha, Česko', 'praha-1', 'Občerstvení: Rybí restaurace, kavárna Mlýnská tel: 608 444 490, restaurace a kavárna Sovovy mlýny', 'ANO', 'asfalt', 'Celoročně volný přístup', 'ANO v sousedství Komunitní a mateřské centrum Kampa', 'ANO', 'Hellichova tram. č. 12, 20, 22, 23, 57, Újezd tram. č. 6, 9, 22, 23, 57, 58, 59', 'Výhled na Vltavu, galerie Sovovy Mlýny, Čertovka, Karlův most, Werichův dům, památné stromy', 'NE', 'Městská část Praha 1', 'NE, možnost pohybu na travnatých plochách', 'ANO', NULL, '2022-10-27 16:26:14.685', NULL, NULL, '2022-10-27 16:26:14.685', NULL);
@@ -0,0 +1,3 @@
1
+ {
2
+ "schema": "gardens, public"
3
+ }
@@ -0,0 +1,51 @@
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", "20221027165643-init-mongo-to-pg-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
+ }).then(function (data) {
31
+ return db.runSql(data);
32
+ });
33
+ };
34
+
35
+ exports.down = function (db) {
36
+ var filePath = path.join(__dirname, "sqls", "20221027165643-init-mongo-to-pg-down.sql");
37
+ return new Promise(function (resolve, reject) {
38
+ fs.readFile(filePath, { encoding: "utf-8" }, function (err, data) {
39
+ if (err) return reject(err);
40
+ console.log("received data: " + data);
41
+
42
+ resolve(data);
43
+ });
44
+ }).then(function (data) {
45
+ return db.runSql(data);
46
+ });
47
+ };
48
+
49
+ exports._meta = {
50
+ version: 1,
51
+ };
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,2 @@
1
+ DROP TABLE IF EXISTS gardens;
2
+
@@ -0,0 +1,37 @@
1
+ CREATE TABLE IF NOT EXISTS gardens (
2
+ "id" varchar(150) NOT NULL,
3
+ "geometry" geometry NOT NULL,
4
+ "name" varchar(150) NOT NULL,
5
+ "image" text,
6
+ "description" text,
7
+ "url" text,
8
+ "address" text,
9
+ "district" varchar(150),
10
+ "restaurace" text,
11
+ "brusle" text,
12
+ "cesty" text,
13
+ "doba" text,
14
+ "hriste" text,
15
+ "kolo" text,
16
+ "mhd" text,
17
+ "misto" text,
18
+ "parking" text,
19
+ "provoz" text,
20
+ "sport" text,
21
+ "wc" text,
22
+
23
+
24
+ -- audit fields,
25
+ create_batch_id int8,
26
+ created_at timestamptz,
27
+ created_by varchar(150),
28
+ update_batch_id int8,
29
+ updated_at timestamptz,
30
+ updated_by varchar(150),
31
+
32
+ CONSTRAINT gardens_pkey PRIMARY KEY ("id")
33
+ );
34
+
35
+ CREATE INDEX idx_gardens_geom ON gardens USING gist ("geometry");
36
+ CREATE INDEX gardens_district_idx ON gardens USING btree ("district");
37
+ CREATE INDEX gardens_updated_at_idx ON gardens USING btree ("updated_at");
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
package/dist/index.d.ts CHANGED
@@ -1 +1,3 @@
1
+ export * as IntegrationEngine from "./integration-engine/index";
1
2
  export * as OutputGateway from "./output-gateway/index";
3
+ export * as SchemaDefinitions from "./schema-definitions/index";
package/dist/index.js CHANGED
@@ -23,7 +23,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.OutputGateway = void 0;
26
+ exports.SchemaDefinitions = exports.OutputGateway = exports.IntegrationEngine = void 0;
27
27
  // Library exports
28
+ exports.IntegrationEngine = __importStar(require("./integration-engine/index"));
28
29
  exports.OutputGateway = __importStar(require("./output-gateway/index"));
30
+ exports.SchemaDefinitions = __importStar(require("./schema-definitions/index"));
29
31
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kBAAkB;AAClB,wEAA2C"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kBAAkB;AAClB,gFAA+C;AAC/C,wEAA2C;AAC3C,gFAAgD"}
@@ -0,0 +1,3 @@
1
+ import { DataSource } from "@golemio/core/dist/integration-engine/datasources";
2
+ declare const gardensDataSource: DataSource;
3
+ export { gardensDataSource };
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.gardensDataSource = void 0;
4
+ const datasources_1 = require("@golemio/core/dist/integration-engine/datasources");
5
+ const config_1 = require("@golemio/core/dist/integration-engine/config");
6
+ const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
7
+ const _sch_1 = require("../../schema-definitions");
8
+ class GardensDataSourceFactory {
9
+ constructor() {
10
+ this.gardensDataSource = new datasources_1.DataSource(_sch_1.Gardens.datasources.gardensDatasource.name, new datasources_1.HTTPProtocolStrategy({
11
+ headers: {
12
+ Authorization: "Basic " + config_1.config.datasources.OICTEndpointApikey,
13
+ },
14
+ method: "GET",
15
+ url: config_1.config.datasources.Gardens,
16
+ }), new datasources_1.JSONDataTypeStrategy({ resultsPath: "" }), new golemio_validator_1.JSONSchemaValidator(_sch_1.Gardens.datasources.gardensDatasource.name + "Validator", _sch_1.Gardens.datasources.gardensDatasource.jsonSchema));
17
+ }
18
+ }
19
+ const gardensDataSourceFactory = new GardensDataSourceFactory();
20
+ const gardensDataSource = gardensDataSourceFactory.gardensDataSource;
21
+ exports.gardensDataSource = gardensDataSource;
22
+ //# sourceMappingURL=GardensDataSourceFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GardensDataSourceFactory.js","sourceRoot":"","sources":["../../../src/integration-engine/datasources/GardensDataSourceFactory.ts"],"names":[],"mappings":";;;AAAA,mFAA2H;AAC3H,yEAAsE;AACtE,mFAAkF;AAClF,mDAA+B;AAE/B,MAAM,wBAAwB;IAG1B;QACI,IAAI,CAAC,iBAAiB,GAAG,IAAI,wBAAU,CACnC,cAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAC1C,IAAI,kCAAoB,CAAC;YACrB,OAAO,EAAE;gBACL,aAAa,EAAE,QAAQ,GAAG,eAAM,CAAC,WAAW,CAAC,kBAAkB;aAClE;YACD,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,eAAM,CAAC,WAAW,CAAC,OAAO;SAClC,CAAC,EACF,IAAI,kCAAoB,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAC7C,IAAI,uCAAmB,CACnB,cAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,IAAI,GAAG,WAAW,EACxD,cAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,UAAU,CACnD,CACJ,CAAC;IACN,CAAC;CACJ;AAED,MAAM,wBAAwB,GAAG,IAAI,wBAAwB,EAAE,CAAC;AAChE,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,iBAAiB,CAAC;AAE5D,8CAAiB"}
@@ -1,3 +1,2 @@
1
- export * from "./GardensTransformation";
2
- export * from "./GardensWorker";
3
- export * from "./queueDefinitions";
1
+ export * from "./transformations/GardensTransformation";
2
+ export { workers } from "./workers";
@@ -14,8 +14,9 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.workers = void 0;
17
18
  /* ie/index.ts */
18
- __exportStar(require("./GardensTransformation"), exports);
19
- __exportStar(require("./GardensWorker"), exports);
20
- __exportStar(require("./queueDefinitions"), exports);
19
+ __exportStar(require("./transformations/GardensTransformation"), exports);
20
+ var workers_1 = require("./workers");
21
+ Object.defineProperty(exports, "workers", { enumerable: true, get: function () { return workers_1.workers; } });
21
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integration-engine/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iBAAiB;AACjB,0DAAwC;AACxC,kDAAgC;AAChC,qDAAmC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integration-engine/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,iBAAiB;AACjB,0EAAwD;AACxD,qCAAoC;AAA3B,kGAAA,OAAO,OAAA"}
@@ -0,0 +1,6 @@
1
+ import { IModel, PostgresModel } from "@golemio/core/dist/integration-engine/models";
2
+ import { IGarden } from "../../schema-definitions/Gardens";
3
+ export declare class GardensRepository extends PostgresModel implements IModel {
4
+ constructor();
5
+ saveBulk: (data: IGarden[]) => Promise<void>;
6
+ }
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.GardensRepository = void 0;
13
+ const models_1 = require("@golemio/core/dist/integration-engine/models");
14
+ const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
15
+ const _sch_1 = require("../../schema-definitions");
16
+ const GardensModel_1 = require("../../schema-definitions/models/GardensModel");
17
+ class GardensRepository extends models_1.PostgresModel {
18
+ constructor() {
19
+ super("GardensRepository", {
20
+ outputSequelizeAttributes: GardensModel_1.GardensModel.attributeModel,
21
+ pgTableName: _sch_1.Gardens.definitions.gardens.pgTableName,
22
+ pgSchema: _sch_1.Gardens.pgSchema,
23
+ savingType: "insertOrUpdate",
24
+ }, new golemio_validator_1.JSONSchemaValidator("GardensRepositoryValidator", GardensModel_1.GardensModel.jsonSchema));
25
+ this.saveBulk = (data) => __awaiter(this, void 0, void 0, function* () {
26
+ if (data && data.length && (yield this.validate(data))) {
27
+ const fieldsToUpdate = Object.getOwnPropertyNames(data[0])
28
+ .filter((el) => el !== "id")
29
+ .map((el) => el);
30
+ fieldsToUpdate.push("updated_at");
31
+ yield this.sequelizeModel.bulkCreate(data, {
32
+ updateOnDuplicate: fieldsToUpdate,
33
+ });
34
+ }
35
+ });
36
+ }
37
+ }
38
+ exports.GardensRepository = GardensRepository;
39
+ //# sourceMappingURL=GardensRepository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GardensRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/repositories/GardensRepository.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yEAAqF;AACrF,mFAAkF;AAClF,mDAA+B;AAC/B,+EAAwD;AAGxD,MAAa,iBAAkB,SAAQ,sBAAa;IAChD;QACI,KAAK,CACD,mBAAmB,EACnB;YACI,yBAAyB,EAAE,2BAAY,CAAC,cAAc;YACtD,WAAW,EAAE,cAAO,CAAC,WAAW,CAAC,OAAO,CAAC,WAAW;YACpD,QAAQ,EAAE,cAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,gBAAgB;SAC/B,EACD,IAAI,uCAAmB,CAAC,4BAA4B,EAAE,2BAAY,CAAC,UAAU,CAAC,CACjF,CAAC;QAGC,aAAQ,GAAG,CAAO,IAAe,EAAE,EAAE;YACxC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;gBACpD,MAAM,cAAc,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBACrD,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;qBAC3B,GAAG,CAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,EAAmB,CAAC,CAAC;gBACrD,cAAc,CAAC,IAAI,CAAC,YAAmB,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAe,IAAI,EAAE;oBACrD,iBAAiB,EAAE,cAAc;iBACpC,CAAC,CAAC;aACN;QACL,CAAC,CAAA,CAAC;IAZF,CAAC;CAaJ;AAzBD,8CAyBC"}
@@ -0,0 +1,9 @@
1
+ import { BaseTransformation, ITransformation } from "@golemio/core/dist/integration-engine/transformations";
2
+ import { IGarden } from "../../schema-definitions/Gardens";
3
+ import { IGardensInput } from "../../schema-definitions/datasources/GardensJsonSchema";
4
+ export declare class GardensTransformation extends BaseTransformation implements ITransformation {
5
+ name: string;
6
+ constructor();
7
+ transform: (data: IGardensInput[]) => Promise<IGarden[]>;
8
+ protected transformElement: (element: IGardensInput) => IGarden;
9
+ }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.GardensTransformation = void 0;
13
+ const transformations_1 = require("@golemio/core/dist/integration-engine/transformations");
14
+ const _sch_1 = require("../../schema-definitions");
15
+ class GardensTransformation extends transformations_1.BaseTransformation {
16
+ constructor() {
17
+ super();
18
+ this.transform = (data) => __awaiter(this, void 0, void 0, function* () {
19
+ const gardens = [];
20
+ for (const item of data) {
21
+ const transformedData = yield this.transformElement(item);
22
+ gardens.push(transformedData);
23
+ }
24
+ return gardens;
25
+ });
26
+ this.transformElement = (element) => {
27
+ const res = {
28
+ id: element.slug,
29
+ geometry: {
30
+ coordinates: element.coordinates,
31
+ type: "Point",
32
+ },
33
+ name: element.name,
34
+ image: element.image,
35
+ description: element.description,
36
+ url: element.url,
37
+ address: element.address,
38
+ district: element.district,
39
+ restaurace: element.properties_restaurace,
40
+ brusle: element.properties_brusle,
41
+ cesty: element.properties_cesty,
42
+ doba: element.properties_doba,
43
+ hriste: element.properties_hriste,
44
+ kolo: element.properties_kolo,
45
+ mhd: element.properties_mhd,
46
+ misto: element.properties_misto,
47
+ parking: element.properties_parking,
48
+ provoz: element.properties_provoz,
49
+ sport: element.properties_sport,
50
+ wc: element.properties_wc,
51
+ };
52
+ return res;
53
+ };
54
+ this.name = _sch_1.Gardens.name;
55
+ }
56
+ }
57
+ exports.GardensTransformation = GardensTransformation;
58
+ //# sourceMappingURL=GardensTransformation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GardensTransformation.js","sourceRoot":"","sources":["../../../src/integration-engine/transformations/GardensTransformation.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2FAA4G;AAC5G,mDAA+B;AAI/B,MAAa,qBAAsB,SAAQ,oCAAkB;IAGzD;QACI,KAAK,EAAE,CAAC;QAIL,cAAS,GAAG,CAAO,IAAqB,EAAsB,EAAE;YACnE,MAAM,OAAO,GAAc,EAAE,CAAC;YAE9B,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;gBACrB,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;gBAC1D,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aACjC;YAED,OAAO,OAAO,CAAC;QACnB,CAAC,CAAA,CAAC;QAEQ,qBAAgB,GAAG,CAAC,OAAsB,EAAW,EAAE;YAC7D,MAAM,GAAG,GAAY;gBACjB,EAAE,EAAE,OAAO,CAAC,IAAI;gBAChB,QAAQ,EAAE;oBACN,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,IAAI,EAAE,OAAO;iBAChB;gBACD,IAAI,EAAE,OAAO,CAAC,IAAI;gBAElB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAE1B,UAAU,EAAE,OAAO,CAAC,qBAAqB;gBACzC,MAAM,EAAE,OAAO,CAAC,iBAAiB;gBACjC,KAAK,EAAE,OAAO,CAAC,gBAAgB;gBAC/B,IAAI,EAAE,OAAO,CAAC,eAAe;gBAC7B,MAAM,EAAE,OAAO,CAAC,iBAAiB;gBACjC,IAAI,EAAE,OAAO,CAAC,eAAe;gBAC7B,GAAG,EAAE,OAAO,CAAC,cAAc;gBAC3B,KAAK,EAAE,OAAO,CAAC,gBAAgB;gBAC/B,OAAO,EAAE,OAAO,CAAC,kBAAkB;gBACnC,MAAM,EAAE,OAAO,CAAC,iBAAiB;gBACjC,KAAK,EAAE,OAAO,CAAC,gBAAgB;gBAC/B,EAAE,EAAE,OAAO,CAAC,aAAa;aAC5B,CAAC;YACF,OAAO,GAAG,CAAC;QACf,CAAC,CAAC;QA3CE,IAAI,CAAC,IAAI,GAAG,cAAO,CAAC,IAAI,CAAC;IAC7B,CAAC;CA2CJ;AAjDD,sDAiDC"}
@@ -0,0 +1,5 @@
1
+ import { AbstractWorker } from "@golemio/core/dist/integration-engine/workers";
2
+ export declare class GardensWorker extends AbstractWorker {
3
+ protected readonly name = "Gardens";
4
+ constructor();
5
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GardensWorker = void 0;
4
+ const workers_1 = require("@golemio/core/dist/integration-engine/workers");
5
+ const RefreshDataInDBTask_1 = require("./tasks/RefreshDataInDBTask");
6
+ class GardensWorker extends workers_1.AbstractWorker {
7
+ constructor() {
8
+ super();
9
+ this.name = "Gardens";
10
+ this.registerTask(new RefreshDataInDBTask_1.RefreshDataInDBTask(this.getQueuePrefix()));
11
+ }
12
+ }
13
+ exports.GardensWorker = GardensWorker;
14
+ //# sourceMappingURL=GardensWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GardensWorker.js","sourceRoot":"","sources":["../../../src/integration-engine/workers/GardensWorker.ts"],"names":[],"mappings":";;;AAAA,2EAA+E;AAC/E,qEAA4E;AAE5E,MAAa,aAAc,SAAQ,wBAAc;IAG7C;QACI,KAAK,EAAE,CAAC;QAHO,SAAI,GAAG,SAAS,CAAC;QAIhC,IAAI,CAAC,YAAY,CAAC,IAAI,yCAAmB,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IACtE,CAAC;CACJ;AAPD,sCAOC"}
@@ -0,0 +1,2 @@
1
+ import { GardensWorker } from "./GardensWorker";
2
+ export declare const workers: (typeof GardensWorker)[];
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.workers = void 0;
4
+ const GardensWorker_1 = require("./GardensWorker");
5
+ exports.workers = [GardensWorker_1.GardensWorker];
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/integration-engine/workers/index.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAEnC,QAAA,OAAO,GAAG,CAAC,6BAAa,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { AbstractEmptyTask } from "@golemio/core/dist/integration-engine";
2
+ export declare class RefreshDataInDBTask extends AbstractEmptyTask {
3
+ readonly queueName = "refreshDataInDB";
4
+ readonly queueTtl: number;
5
+ private dataSource;
6
+ private transformation;
7
+ private repository;
8
+ constructor(queuePrefix: string);
9
+ protected execute(): Promise<void>;
10
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RefreshDataInDBTask = void 0;
13
+ const integration_engine_1 = require("@golemio/core/dist/integration-engine");
14
+ const GardensDataSourceFactory_1 = require("../../datasources/GardensDataSourceFactory");
15
+ const _ie_1 = require("../..");
16
+ const GardensRepository_1 = require("../../repositories/GardensRepository");
17
+ class RefreshDataInDBTask extends integration_engine_1.AbstractEmptyTask {
18
+ constructor(queuePrefix) {
19
+ super(queuePrefix);
20
+ this.queueName = "refreshDataInDB";
21
+ this.queueTtl = 23 * 60 * 60 * 1000; // 23 hours
22
+ this.dataSource = GardensDataSourceFactory_1.gardensDataSource;
23
+ this.transformation = new _ie_1.GardensTransformation();
24
+ this.repository = new GardensRepository_1.GardensRepository();
25
+ }
26
+ execute() {
27
+ return __awaiter(this, void 0, void 0, function* () {
28
+ const data = yield this.dataSource.getAll();
29
+ const transformedData = yield this.transformation.transform(data);
30
+ yield this.repository.saveBulk(transformedData);
31
+ });
32
+ }
33
+ }
34
+ exports.RefreshDataInDBTask = RefreshDataInDBTask;
35
+ //# sourceMappingURL=RefreshDataInDBTask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RefreshDataInDBTask.js","sourceRoot":"","sources":["../../../../src/integration-engine/workers/tasks/RefreshDataInDBTask.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8EAA0E;AAG1E,yFAA6E;AAC7E,+BAA4C;AAC5C,4EAAuE;AAEvE,MAAa,mBAAoB,SAAQ,sCAAiB;IAQtD,YAAY,WAAmB;QAC3B,KAAK,CAAC,WAAW,CAAC,CAAC;QARP,cAAS,GAAG,iBAAiB,CAAC;QAC9B,aAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;QAQvD,IAAI,CAAC,UAAU,GAAG,4CAAiB,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,IAAI,2BAAqB,EAAE,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,IAAI,qCAAiB,EAAE,CAAC;IAC9C,CAAC;IAEe,OAAO;;YACnB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;YAC5C,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QACpD,CAAC;KAAA;CACJ;AApBD,kDAoBC"}
@@ -1,15 +1,8 @@
1
- /**
2
- * GardensRouter.ts
3
- *
4
- * Router /WEB LAYER/: maps routes to specific controller functions, passes request parameters and handles responses.
5
- * Handles web logic (http request, response). Sets response headers, handles error responses.
6
- */
7
1
  /// <reference types="express" />
8
- import { NextFunction, Request, Response, Router } from "@golemio/core/dist/shared/express";
2
+ import { Router } from "@golemio/core/dist/shared/express";
9
3
  import { GeoJsonRouter } from "@golemio/core/dist/output-gateway/routes";
10
4
  export declare class GardensRouter extends GeoJsonRouter {
11
5
  constructor();
12
- GetProperties: (req: Request, res: Response, next: NextFunction) => void;
13
6
  }
14
7
  declare const gardensRouter: Router;
15
8
  export { gardensRouter };
@@ -1,30 +1,12 @@
1
1
  "use strict";
2
- /**
3
- * GardensRouter.ts
4
- *
5
- * Router /WEB LAYER/: maps routes to specific controller functions, passes request parameters and handles responses.
6
- * Handles web logic (http request, response). Sets response headers, handles error responses.
7
- */
8
2
  Object.defineProperty(exports, "__esModule", { value: true });
9
3
  exports.gardensRouter = exports.GardensRouter = void 0;
10
- const redis_1 = require("@golemio/core/dist/output-gateway/redis");
11
4
  const routes_1 = require("@golemio/core/dist/output-gateway/routes");
12
5
  const _1 = require(".");
13
6
  class GardensRouter extends routes_1.GeoJsonRouter {
14
7
  constructor() {
15
- super(new _1.GardensModel());
16
- this.GetProperties = (req, res, next) => {
17
- this.model
18
- .GetProperties()
19
- .then((data) => {
20
- res.status(200).send(data);
21
- })
22
- .catch((err) => {
23
- next(err);
24
- });
25
- };
8
+ super(new _1.GardensRepository());
26
9
  this.initRoutes();
27
- this.router.get("/properties", (0, redis_1.useCacheMiddleware)(), this.GetProperties);
28
10
  }
29
11
  }
30
12
  exports.GardensRouter = GardensRouter;
@@ -1 +1 @@
1
- {"version":3,"file":"GardensRouter.js","sourceRoot":"","sources":["../../src/output-gateway/GardensRouter.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAGH,mEAA6E;AAC7E,qEAAyE;AACzE,wBAAiC;AAEjC,MAAa,aAAc,SAAQ,sBAAa;IAC5C;QACI,KAAK,CAAC,IAAI,eAAY,EAAE,CAAC,CAAC;QAKvB,kBAAa,GAAG,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;YACvE,IAAI,CAAC,KAAK;iBACL,aAAa,EAAE;iBACf,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACX,IAAI,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACX,CAAC,CAAC;QAbE,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,IAAA,0BAAkB,GAAE,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC7E,CAAC;CAYJ;AAjBD,sCAiBC;AAED,MAAM,aAAa,GAAW,IAAI,aAAa,EAAE,CAAC,MAAM,CAAC;AAEhD,sCAAa"}
1
+ {"version":3,"file":"GardensRouter.js","sourceRoot":"","sources":["../../src/output-gateway/GardensRouter.ts"],"names":[],"mappings":";;;AACA,qEAAyE;AACzE,wBAAsC;AAEtC,MAAa,aAAc,SAAQ,sBAAa;IAC5C;QACI,KAAK,CAAC,IAAI,oBAAiB,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;IACtB,CAAC;CACJ;AALD,sCAKC;AAED,MAAM,aAAa,GAAW,IAAI,aAAa,EAAE,CAAC,MAAM,CAAC;AAEhD,sCAAa"}
@@ -1,2 +1,2 @@
1
- export * from "./GardensModel";
1
+ export * from "./repositories/GardensRepository";
2
2
  export * from "./GardensRouter";
@@ -14,6 +14,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./GardensModel"), exports);
17
+ __exportStar(require("./repositories/GardensRepository"), exports);
18
18
  __exportStar(require("./GardensRouter"), exports);
19
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/output-gateway/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,kDAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/output-gateway/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mEAAiD;AACjD,kDAAgC"}
@@ -0,0 +1,8 @@
1
+ import { IGeoJsonAllFilterParameters } from "@golemio/core/dist/output-gateway";
2
+ import Sequelize, { WhereOptions } from "@golemio/core/dist/shared/sequelize";
3
+ export declare class FilterHelper {
4
+ static prepareFilterForDistricts(options: IGeoJsonAllFilterParameters): WhereOptions[];
5
+ static prepareFilterForUpdateSince(options: IGeoJsonAllFilterParameters): WhereOptions[];
6
+ static prepareFilterForLocation(options: IGeoJsonAllFilterParameters): WhereOptions[];
7
+ static prepareOrderFunction(options: IGeoJsonAllFilterParameters | undefined): Sequelize.Order | undefined;
8
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FilterHelper = void 0;
7
+ const sequelize_1 = __importDefault(require("@golemio/core/dist/shared/sequelize"));
8
+ class FilterHelper {
9
+ static prepareFilterForDistricts(options) {
10
+ return options.districts && options.districts.length > 0
11
+ ? [
12
+ {
13
+ district: {
14
+ [sequelize_1.default.Op.in]: options.districts,
15
+ },
16
+ },
17
+ ]
18
+ : [];
19
+ }
20
+ static prepareFilterForUpdateSince(options) {
21
+ return options.updatedSince
22
+ ? [
23
+ {
24
+ updated_at: {
25
+ [sequelize_1.default.Op.gt]: options === null || options === void 0 ? void 0 : options.updatedSince,
26
+ },
27
+ },
28
+ ]
29
+ : [];
30
+ }
31
+ static prepareFilterForLocation(options) {
32
+ return options.lat && options.lng && options.range
33
+ ? [
34
+ sequelize_1.default.fn("ST_DWithin", sequelize_1.default.col("geometry"), sequelize_1.default.cast(sequelize_1.default.fn("ST_SetSRID", sequelize_1.default.fn("ST_MakePoint", options.lng, options.lat), 4326), "geography"), options.range),
35
+ ]
36
+ : [];
37
+ }
38
+ static prepareOrderFunction(options) {
39
+ return (options === null || options === void 0 ? void 0 : options.lat) && options.lng
40
+ ? [
41
+ sequelize_1.default.fn("ST_Distance", sequelize_1.default.col("geometry"), sequelize_1.default.cast(sequelize_1.default.fn("ST_SetSRID", sequelize_1.default.fn("ST_MakePoint", options.lng, options.lat), 4326), "geography")),
42
+ ]
43
+ : undefined;
44
+ }
45
+ }
46
+ exports.FilterHelper = FilterHelper;
47
+ //# sourceMappingURL=FilterHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterHelper.js","sourceRoot":"","sources":["../../../src/output-gateway/repositories/FilterHelper.ts"],"names":[],"mappings":";;;;;;AACA,oFAA8E;AAE9E,MAAa,YAAY;IACd,MAAM,CAAC,yBAAyB,CAAC,OAAoC;QACxE,OAAO,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACpD,CAAC,CAAC;gBACI;oBACI,QAAQ,EAAE;wBACN,CAAC,mBAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,SAAS;qBACvC;iBACJ;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;IACb,CAAC;IAEM,MAAM,CAAC,2BAA2B,CAAC,OAAoC;QAC1E,OAAO,OAAO,CAAC,YAAY;YACvB,CAAC,CAAC;gBACI;oBACI,UAAU,EAAE;wBACR,CAAC,mBAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,YAAY;qBAC3C;iBACJ;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;IACb,CAAC;IAEM,MAAM,CAAC,wBAAwB,CAAC,OAAoC;QACvE,OAAO,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,KAAK;YAC9C,CAAC,CAAC;gBACI,mBAAS,CAAC,EAAE,CACR,YAAY,EACZ,mBAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EACzB,mBAAS,CAAC,IAAI,CACV,mBAAS,CAAC,EAAE,CAAC,YAAY,EAAE,mBAAS,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EACxF,WAAW,CACd,EACD,OAAO,CAAC,KAAK,CAChB;aACJ;YACH,CAAC,CAAC,EAAE,CAAC;IACb,CAAC;IAEM,MAAM,CAAC,oBAAoB,CAAC,OAAgD;QAC/E,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,KAAI,OAAO,CAAC,GAAG;YAC9B,CAAC,CAAC;gBACI,mBAAS,CAAC,EAAE,CACR,aAAa,EACb,mBAAS,CAAC,GAAG,CAAC,UAAU,CAAC,EACzB,mBAAS,CAAC,IAAI,CACV,mBAAS,CAAC,EAAE,CAAC,YAAY,EAAE,mBAAS,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EACxF,WAAW,CACd,CACJ;aACJ;YACH,CAAC,CAAC,SAAS,CAAC;IACpB,CAAC;CACJ;AAvDD,oCAuDC"}
@@ -0,0 +1,14 @@
1
+ import { SequelizeModel } from "@golemio/core/dist/output-gateway";
2
+ import { IGeoJsonModel } from "@golemio/core/dist/output-gateway/models/interfaces/IGeoJsonModel";
3
+ import { IGeoJsonAllFilterParameters, IGeoJSONFeature, IGeoJSONFeatureCollection } from "@golemio/core/dist/output-gateway";
4
+ export declare class GardensRepository extends SequelizeModel implements IGeoJsonModel {
5
+ constructor();
6
+ IsPrimaryIdNumber(idKey: string): Promise<boolean>;
7
+ PrimaryIdentifierSelection(id: string): object;
8
+ GetProperties: () => Promise<any>;
9
+ GetAll: (options?: IGeoJsonAllFilterParameters) => Promise<IGeoJSONFeatureCollection>;
10
+ GetOne: (id: string) => Promise<IGeoJSONFeature | undefined>;
11
+ private formatOutput;
12
+ private formatOutputProperties;
13
+ private getPropertyDescription;
14
+ }