@golemio/municipal-libraries 1.3.8-dev.2528319308 → 1.3.8-dev.2562069026
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/db/example/01_libraries.sql +22 -22
- package/db/migrations/postgresql/20260521145623-migrate-to-json-api.js +45 -0
- package/db/migrations/postgresql/20260527131433-add-opening-hours-type.js +45 -0
- package/db/migrations/postgresql/sqls/20260521145623-migrate-to-json-api-down.sql +31 -0
- package/db/migrations/postgresql/sqls/20260521145623-migrate-to-json-api-up.sql +16 -0
- package/db/migrations/postgresql/sqls/20260527131433-add-opening-hours-type-down.sql +1 -0
- package/db/migrations/postgresql/sqls/20260527131433-add-opening-hours-type-up.sql +1 -0
- package/dist/integration-engine/datasources/MunicipalLibrariesDataSource.d.ts +1 -2
- package/dist/integration-engine/datasources/MunicipalLibrariesDataSource.js +2 -29
- package/dist/integration-engine/datasources/MunicipalLibrariesDataSource.js.map +1 -1
- package/dist/integration-engine/repositories/MunicipalLibrariesRepository.js.map +1 -1
- package/dist/integration-engine/transformations/MunicipalLibrariesTransformation.d.ts +3 -2
- package/dist/integration-engine/transformations/MunicipalLibrariesTransformation.js +24 -12
- package/dist/integration-engine/transformations/MunicipalLibrariesTransformation.js.map +1 -1
- package/dist/integration-engine/transformations/helpers/TransformationHelper.d.ts +8 -10
- package/dist/integration-engine/transformations/helpers/TransformationHelper.js +66 -79
- package/dist/integration-engine/transformations/helpers/TransformationHelper.js.map +1 -1
- package/dist/integration-engine/workers/schemas/UpdateDistrictSchema.d.ts +2 -2
- package/dist/integration-engine/workers/schemas/UpdateDistrictSchema.js +2 -2
- package/dist/integration-engine/workers/schemas/UpdateDistrictSchema.js.map +1 -1
- package/dist/output-gateway/repositories/MunicipalLibrariesRepository.js +1 -1
- package/dist/output-gateway/repositories/MunicipalLibrariesRepository.js.map +1 -1
- package/dist/schema-definitions/Libraries.d.ts +1 -1
- package/dist/schema-definitions/LibraryServices.d.ts +1 -1
- package/dist/schema-definitions/OpeningHours.d.ts +2 -1
- package/dist/schema-definitions/OpeningHours.js.map +1 -1
- package/dist/schema-definitions/datasources/MunicipalLibrariesJsonSchema.d.ts +42 -51
- package/dist/schema-definitions/datasources/MunicipalLibrariesJsonSchema.js +96 -146
- package/dist/schema-definitions/datasources/MunicipalLibrariesJsonSchema.js.map +1 -1
- package/dist/schema-definitions/models/LibrariesModel.d.ts +1 -1
- package/dist/schema-definitions/models/LibrariesModel.js +2 -2
- package/dist/schema-definitions/models/LibrariesModel.js.map +1 -1
- package/dist/schema-definitions/models/LibraryServicesModel.d.ts +1 -1
- package/dist/schema-definitions/models/LibraryServicesModel.js +2 -2
- package/dist/schema-definitions/models/LibraryServicesModel.js.map +1 -1
- package/dist/schema-definitions/models/OpeningHoursModel.d.ts +2 -1
- package/dist/schema-definitions/models/OpeningHoursModel.js +5 -3
- package/dist/schema-definitions/models/OpeningHoursModel.js.map +1 -1
- package/docs/implementation_documentation.md +8 -3
- package/docs/openapi.yaml +8 -4
- package/package.json +4 -4
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
INSERT INTO libraries (id, name, geometry, address, district, web, email, telephone, create_batch_id, created_at, created_by, update_batch_id, updated_at, updated_by) VALUES
|
|
2
|
-
(
|
|
3
|
-
(
|
|
2
|
+
('ustredni-knihovna', 'Ústřední knihovna', '0101000020E61000004B02D4D4B2D52C40892991442F0B4940', '{"address_country":"Česko","address_formatted":"Mariánské náměstí 98/1, 115 72 Praha 1, Česko","address_locality":"Praha 1","postal_code":"115 72","street_address":"Mariánské náměstí 98/1"}', 'praha-1', 'https://www.mlp.cz/cz/pobocky/ustredni-knihovna/', 'knihovna@mlp.cz', '+420 222 113 555', NULL, '2022-09-22 21:51:55.3+00', NULL, NULL, '2022-09-22 22:37:59.792+00', NULL),
|
|
3
|
+
('barrandov', 'Barrandov', '0101000020E610000078280AF489BC2C400C923EADA2034940', '{"address_country":"Česko","address_formatted":"Wassermannova 926/16, 152 00 Praha 5, Česko","address_locality":"Praha 5","postal_code":"152 00","street_address":"Wassermannova 926/16"}', 'praha-6', 'https://www.mlp.cz/cz/pobocky/barrandov/', 'knihovna@mlp.cz', '+420 770 130 262', NULL, '2022-09-21 21:51:55.298+00', NULL, NULL, '2022-09-21 22:37:59.79+00', NULL);
|
|
4
4
|
|
|
5
5
|
INSERT INTO services (id, name, description, create_batch_id, created_at, created_by, update_batch_id, updated_at, updated_by) VALUES
|
|
6
6
|
(1, 'Kopírování', 'Kopírujeme černobíle formáty A3, A4 z fondu knihovny', NULL, '2022-09-21 21:51:56.252+00', NULL, NULL, '2022-09-21 22:37:59.879+00', NULL),
|
|
@@ -11,24 +11,24 @@ INSERT INTO services (id, name, description, create_batch_id, created_at, create
|
|
|
11
11
|
(6, 'Digitální piano', 'Můžete si zahrát na digitální piano značky Yamaha.', NULL, '2022-09-21 21:51:56.247+00', NULL, NULL, '2022-09-21 22:37:59.879+00', NULL);
|
|
12
12
|
|
|
13
13
|
INSERT INTO library_services (library_id, service_id, updated_at, created_at) VALUES
|
|
14
|
-
(
|
|
15
|
-
(
|
|
16
|
-
(
|
|
17
|
-
(
|
|
18
|
-
(
|
|
19
|
-
(
|
|
20
|
-
(
|
|
21
|
-
(
|
|
14
|
+
('ustredni-knihovna', 1, '2022-09-21 06:09:07.644+00', '2022-09-21 06:09:07.644+00'),
|
|
15
|
+
('ustredni-knihovna', 2, '2022-09-21 06:09:07.644+00', '2022-09-21 06:09:07.644+00'),
|
|
16
|
+
('ustredni-knihovna', 3, '2022-09-21 06:09:07.644+00', '2022-09-21 06:09:07.644+00'),
|
|
17
|
+
('ustredni-knihovna', 4, '2022-09-21 06:09:07.644+00', '2022-09-21 06:09:07.644+00'),
|
|
18
|
+
('ustredni-knihovna', 5, '2022-09-21 06:09:07.644+00', '2022-09-21 06:09:07.644+00'),
|
|
19
|
+
('ustredni-knihovna', 6, '2022-09-21 06:09:07.644+00', '2022-09-21 06:09:07.644+00'),
|
|
20
|
+
('barrandov', 3, '2022-09-21 06:09:07.641+00', '2022-09-21 06:09:07.641+00'),
|
|
21
|
+
('barrandov', 4, '2022-09-21 06:09:07.641+00', '2022-09-21 06:09:07.641+00');
|
|
22
22
|
|
|
23
|
-
INSERT INTO opening_hours (id, library_id, day_of_week, opens, closes, description, is_default, valid_from, valid_through, create_batch_id, created_at, created_by, update_batch_id, updated_at, updated_by) VALUES
|
|
24
|
-
(1,
|
|
25
|
-
(2,
|
|
26
|
-
(3,
|
|
27
|
-
(4,
|
|
28
|
-
(5,
|
|
29
|
-
(200,
|
|
30
|
-
(201,
|
|
31
|
-
(202,
|
|
32
|
-
(203,
|
|
33
|
-
(204,
|
|
34
|
-
(205,
|
|
23
|
+
INSERT INTO opening_hours (id, library_id, day_of_week, opens, closes, description, is_default, valid_from, valid_through, type, create_batch_id, created_at, created_by, update_batch_id, updated_at, updated_by) VALUES
|
|
24
|
+
(1, 'barrandov', 'Monday', '13:00', '19:00', 'Základní provozní doba', true, NULL, NULL, 'standard', NULL, '2022-09-21 06:21:02.193+00', NULL, NULL, '2022-09-21 06:21:02.193+00', NULL),
|
|
25
|
+
(2, 'barrandov', 'Tuesday', '09:00', '16:00', 'Základní provozní doba', true, NULL, NULL, 'standard', NULL, '2022-09-21 06:21:02.193+00', NULL, NULL, '2022-09-21 06:21:02.193+00', NULL),
|
|
26
|
+
(3, 'barrandov', 'Wednesday', '12:00', '19:00', 'Základní provozní doba', true, NULL, NULL, 'standard', NULL, '2022-09-21 06:21:02.193+00', NULL, NULL, '2022-09-21 06:21:02.193+00', NULL),
|
|
27
|
+
(4, 'barrandov', 'Thursday', '12:00', '19:00', 'Základní provozní doba', true, NULL, NULL, 'standard', NULL, '2022-09-21 06:21:02.193+00', NULL, NULL, '2022-09-21 06:21:02.193+00', NULL),
|
|
28
|
+
(5, 'barrandov', 'Friday', '09:00', '16:00', 'Základní provozní doba', true, NULL, NULL, 'standard', NULL, '2022-09-21 06:21:02.193+00', NULL, NULL, '2022-09-21 06:21:02.193+00', NULL),
|
|
29
|
+
(200, 'ustredni-knihovna', 'Monday', '13:00', '20:00', 'Základní provozní doba', true, NULL, NULL, 'standard', NULL, '2022-09-21 06:21:02.193+00', NULL, NULL, '2022-09-21 06:21:02.193+00', NULL),
|
|
30
|
+
(201, 'ustredni-knihovna', 'Tuesday', '09:00', '20:00', 'Základní provozní doba', true, NULL, NULL, 'standard', NULL, '2022-09-21 06:21:02.193+00', NULL, NULL, '2022-09-21 06:21:02.193+00', NULL),
|
|
31
|
+
(202, 'ustredni-knihovna', 'Wednesday', '09:00', '20:00', 'Základní provozní doba', true, NULL, NULL, 'standard', NULL, '2022-09-21 06:21:02.193+00', NULL, NULL, '2022-09-21 06:21:02.193+00', NULL),
|
|
32
|
+
(203, 'ustredni-knihovna', 'Thursday', '09:00', '20:00', 'Základní provozní doba', true, NULL, NULL, 'standard', NULL, '2022-09-21 06:21:02.193+00', NULL, NULL, '2022-09-21 06:21:02.193+00', NULL),
|
|
33
|
+
(204, 'ustredni-knihovna', 'Friday', '09:00', '20:00', 'Základní provozní doba', true, NULL, NULL, 'standard', NULL, '2022-09-21 06:21:02.193+00', NULL, NULL, '2022-09-21 06:21:02.193+00', NULL),
|
|
34
|
+
(205, 'ustredni-knihovna', 'Saturday', '13:00', '18:00', 'Základní provozní doba', true, NULL, NULL, 'standard', NULL, '2022-09-21 06:21:02.193+00', NULL, NULL, '2022-09-21 06:21:02.193+00', NULL);
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
+
exports.setup = function(options, seedLink) {
|
|
11
|
+
dbm = options.dbmigrate;
|
|
12
|
+
type = dbm.dataType;
|
|
13
|
+
seed = seedLink;
|
|
14
|
+
Promise = options.Promise;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
exports.up = function(db) {
|
|
18
|
+
var filePath = path.join(__dirname, 'sqls', '20260521145623-migrate-to-json-api-up.sql');
|
|
19
|
+
return new Promise(function(resolve, reject) {
|
|
20
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err, data) {
|
|
21
|
+
if (err) return reject(err);
|
|
22
|
+
console.log('received data: ' + data);
|
|
23
|
+
resolve(data);
|
|
24
|
+
});
|
|
25
|
+
}).then(function(data) {
|
|
26
|
+
return db.runSql(data);
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
exports.down = function(db) {
|
|
31
|
+
var filePath = path.join(__dirname, 'sqls', '20260521145623-migrate-to-json-api-down.sql');
|
|
32
|
+
return new Promise(function(resolve, reject) {
|
|
33
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err, data) {
|
|
34
|
+
if (err) return reject(err);
|
|
35
|
+
console.log('received data: ' + data);
|
|
36
|
+
resolve(data);
|
|
37
|
+
});
|
|
38
|
+
}).then(function(data) {
|
|
39
|
+
return db.runSql(data);
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
exports._meta = {
|
|
44
|
+
"version": 1
|
|
45
|
+
};
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
+
exports.setup = function(options, seedLink) {
|
|
11
|
+
dbm = options.dbmigrate;
|
|
12
|
+
type = dbm.dataType;
|
|
13
|
+
seed = seedLink;
|
|
14
|
+
Promise = options.Promise;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
exports.up = function(db) {
|
|
18
|
+
var filePath = path.join(__dirname, 'sqls', '20260527131433-add-opening-hours-type-up.sql');
|
|
19
|
+
return new Promise(function(resolve, reject) {
|
|
20
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err, data) {
|
|
21
|
+
if (err) return reject(err);
|
|
22
|
+
console.log('received data: ' + data);
|
|
23
|
+
resolve(data);
|
|
24
|
+
});
|
|
25
|
+
}).then(function(data) {
|
|
26
|
+
return db.runSql(data);
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
exports.down = function(db) {
|
|
31
|
+
var filePath = path.join(__dirname, 'sqls', '20260527131433-add-opening-hours-type-down.sql');
|
|
32
|
+
return new Promise(function(resolve, reject) {
|
|
33
|
+
fs.readFile(filePath, {encoding: 'utf-8'}, function(err, data) {
|
|
34
|
+
if (err) return reject(err);
|
|
35
|
+
console.log('received data: ' + data);
|
|
36
|
+
resolve(data);
|
|
37
|
+
});
|
|
38
|
+
}).then(function(data) {
|
|
39
|
+
return db.runSql(data);
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
exports._meta = {
|
|
44
|
+
"version": 1
|
|
45
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
ALTER TABLE library_services DROP CONSTRAINT libraries_fk;
|
|
2
|
+
ALTER TABLE opening_hours DROP CONSTRAINT opening_hours_fk;
|
|
3
|
+
|
|
4
|
+
-- Assign sequential integer IDs to libraries and propagate to FK tables
|
|
5
|
+
ALTER TABLE libraries ADD COLUMN new_id SERIAL;
|
|
6
|
+
|
|
7
|
+
UPDATE library_services SET library_id = l.new_id::text
|
|
8
|
+
FROM libraries l WHERE library_services.library_id = l.id;
|
|
9
|
+
|
|
10
|
+
UPDATE opening_hours SET library_id = l.new_id::text
|
|
11
|
+
FROM libraries l WHERE opening_hours.library_id = l.id;
|
|
12
|
+
|
|
13
|
+
UPDATE libraries SET id = new_id::text;
|
|
14
|
+
ALTER TABLE libraries DROP COLUMN new_id;
|
|
15
|
+
|
|
16
|
+
-- Convert columns back to INTEGER
|
|
17
|
+
ALTER TABLE library_services ALTER COLUMN library_id TYPE INTEGER USING library_id::integer;
|
|
18
|
+
ALTER TABLE opening_hours ALTER COLUMN library_id TYPE INTEGER USING library_id::integer;
|
|
19
|
+
ALTER TABLE libraries ALTER COLUMN id TYPE INTEGER USING id::integer;
|
|
20
|
+
|
|
21
|
+
-- Restore sequences
|
|
22
|
+
CREATE SEQUENCE IF NOT EXISTS libraries_id_seq;
|
|
23
|
+
SELECT setval('libraries_id_seq', (SELECT COALESCE(MAX(id), 1) FROM libraries));
|
|
24
|
+
ALTER TABLE libraries ALTER COLUMN id SET DEFAULT nextval('libraries_id_seq');
|
|
25
|
+
|
|
26
|
+
CREATE SEQUENCE IF NOT EXISTS services_id_seq;
|
|
27
|
+
SELECT setval('services_id_seq', (SELECT COALESCE(MAX(id), 1) FROM services));
|
|
28
|
+
ALTER TABLE services ALTER COLUMN id SET DEFAULT nextval('services_id_seq');
|
|
29
|
+
|
|
30
|
+
ALTER TABLE library_services ADD CONSTRAINT libraries_fk FOREIGN KEY ("library_id") REFERENCES libraries("id") ON DELETE CASCADE;
|
|
31
|
+
ALTER TABLE opening_hours ADD CONSTRAINT opening_hours_fk FOREIGN KEY ("library_id") REFERENCES libraries("id") ON DELETE CASCADE;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
-- IDs are now provided by the application (URL slug), not by the DB sequence.
|
|
2
|
+
ALTER TABLE libraries ALTER COLUMN id DROP DEFAULT;
|
|
3
|
+
DROP SEQUENCE IF EXISTS libraries_id_seq;
|
|
4
|
+
|
|
5
|
+
ALTER TABLE services ALTER COLUMN id DROP DEFAULT;
|
|
6
|
+
DROP SEQUENCE IF EXISTS services_id_seq;
|
|
7
|
+
|
|
8
|
+
ALTER TABLE library_services DROP CONSTRAINT libraries_fk;
|
|
9
|
+
ALTER TABLE opening_hours DROP CONSTRAINT opening_hours_fk;
|
|
10
|
+
|
|
11
|
+
ALTER TABLE libraries ALTER COLUMN id TYPE VARCHAR(255);
|
|
12
|
+
ALTER TABLE opening_hours ALTER COLUMN library_id TYPE VARCHAR(255);
|
|
13
|
+
ALTER TABLE library_services ALTER COLUMN library_id TYPE VARCHAR(255);
|
|
14
|
+
|
|
15
|
+
ALTER TABLE library_services ADD CONSTRAINT libraries_fk FOREIGN KEY ("library_id") REFERENCES libraries("id") ON DELETE CASCADE;
|
|
16
|
+
ALTER TABLE opening_hours ADD CONSTRAINT opening_hours_fk FOREIGN KEY ("library_id") REFERENCES libraries("id") ON DELETE CASCADE;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE opening_hours DROP COLUMN "type";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE opening_hours ADD COLUMN "type" varchar(255) NOT NULL DEFAULT 'standard';
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { DataSource } from "@golemio/core/dist/integration-engine/datasources";
|
|
2
2
|
export declare class MunicipalLibrariesDataSourceFactory {
|
|
3
|
-
private url;
|
|
3
|
+
private readonly url;
|
|
4
4
|
constructor();
|
|
5
5
|
getDataSource(): Promise<DataSource>;
|
|
6
|
-
private getHeadersWithCookie;
|
|
7
6
|
}
|
|
@@ -6,7 +6,6 @@ const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
|
|
|
6
6
|
const datasources_1 = require("@golemio/core/dist/integration-engine/datasources");
|
|
7
7
|
const HTTPFetchProtocolStrategy_1 = require("@golemio/core/dist/integration-engine/datasources/protocol-strategy/HTTPFetchProtocolStrategy");
|
|
8
8
|
const Di_1 = require("@golemio/core/dist/integration-engine/ioc/Di");
|
|
9
|
-
const golemio_errors_1 = require("@golemio/core/dist/shared/golemio-errors");
|
|
10
9
|
const golemio_validator_1 = require("@golemio/core/dist/shared/golemio-validator");
|
|
11
10
|
class MunicipalLibrariesDataSourceFactory {
|
|
12
11
|
constructor() {
|
|
@@ -15,36 +14,10 @@ class MunicipalLibrariesDataSourceFactory {
|
|
|
15
14
|
}
|
|
16
15
|
async getDataSource() {
|
|
17
16
|
return new datasources_1.DataSource(_sch_1.MunicipalLibraries.datasources.municipalLibrariesDatasource.name, new HTTPFetchProtocolStrategy_1.HTTPFetchProtocolStrategy({
|
|
18
|
-
headers: {
|
|
19
|
-
Cookie: await this.getHeadersWithCookie(),
|
|
20
|
-
},
|
|
21
17
|
method: "GET",
|
|
22
|
-
responseType: "
|
|
18
|
+
responseType: "json",
|
|
23
19
|
url: this.url,
|
|
24
|
-
}), new datasources_1.
|
|
25
|
-
resultsPath: "pobocky.pobocka",
|
|
26
|
-
xml2jsParams: { explicitArray: false, ignoreAttrs: true, trim: true, normalize: true, emptyTag: () => null },
|
|
27
|
-
}), new golemio_validator_1.JSONSchemaValidator(_sch_1.MunicipalLibraries.datasources.municipalLibrariesDatasource.name + "Validator", _sch_1.MunicipalLibraries.datasources.municipalLibrariesDatasource.jsonSchema));
|
|
28
|
-
}
|
|
29
|
-
async getHeadersWithCookie() {
|
|
30
|
-
try {
|
|
31
|
-
const result = await fetch(this.url, {
|
|
32
|
-
redirect: "manual",
|
|
33
|
-
});
|
|
34
|
-
const result2 = await fetch(result.headers.get("location"), {
|
|
35
|
-
redirect: "manual",
|
|
36
|
-
headers: {
|
|
37
|
-
Cookie: result.headers.get("set-cookie"),
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
const headers = new Headers();
|
|
41
|
-
headers.append("Cookie", result.headers.get("set-cookie"));
|
|
42
|
-
headers.append("Cookie", result2.headers.get("set-cookie"));
|
|
43
|
-
return headers.get("Cookie");
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
throw new golemio_errors_1.GeneralError("Error while getting headers with cookie", this.constructor.name, error);
|
|
47
|
-
}
|
|
20
|
+
}), new datasources_1.JSONDataTypeStrategy({ resultsPath: "" }), new golemio_validator_1.JSONSchemaValidator(_sch_1.MunicipalLibraries.datasources.municipalLibrariesDatasource.name + "Validator", _sch_1.MunicipalLibraries.datasources.municipalLibrariesDatasource.jsonSchema));
|
|
48
21
|
}
|
|
49
22
|
}
|
|
50
23
|
exports.MunicipalLibrariesDataSourceFactory = MunicipalLibrariesDataSourceFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MunicipalLibrariesDataSource.js","sourceRoot":"","sources":["../../../src/integration-engine/datasources/MunicipalLibrariesDataSource.ts"],"names":[],"mappings":";;;AAAA,mDAA0C;AAE1C,wEAAqE;AACrE,
|
|
1
|
+
{"version":3,"file":"MunicipalLibrariesDataSource.js","sourceRoot":"","sources":["../../../src/integration-engine/datasources/MunicipalLibrariesDataSource.ts"],"names":[],"mappings":";;;AAAA,mDAA0C;AAE1C,wEAAqE;AACrE,mFAAqG;AACrG,6IAA0I;AAC1I,qEAA0F;AAC1F,mFAAkF;AAElF,MAAa,mCAAmC;IAG5C;QACI,MAAM,YAAY,GAAG,+BAA0B,CAAC,OAAO,CAAgB,qBAAS,CAAC,YAAY,CAAC,CAAC;QAC/F,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IAClE,CAAC;IAEM,KAAK,CAAC,aAAa;QACtB,OAAO,IAAI,wBAAU,CACjB,yBAAkB,CAAC,WAAW,CAAC,4BAA4B,CAAC,IAAI,EAChE,IAAI,qDAAyB,CAAC;YAC1B,MAAM,EAAE,KAAK;YACb,YAAY,EAAE,MAAM;YACpB,GAAG,EAAE,IAAI,CAAC,GAAG;SAChB,CAAC,EACF,IAAI,kCAAoB,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,EAC7C,IAAI,uCAAmB,CACnB,yBAAkB,CAAC,WAAW,CAAC,4BAA4B,CAAC,IAAI,GAAG,WAAW,EAC9E,yBAAkB,CAAC,WAAW,CAAC,4BAA4B,CAAC,UAAU,CACzE,CACJ,CAAC;IACN,CAAC;CACJ;AAvBD,kFAuBC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MunicipalLibrariesRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/repositories/MunicipalLibrariesRepository.ts"],"names":[],"mappings":";;;AAAA,yEAAqF;AACrF,8EAA0E;AAC1E,mFAAkF;AAClF,mEAAsE;AACtE,qCAAyG;AAEzG,mDAA0C;AAC1C,4DAAqG;
|
|
1
|
+
{"version":3,"file":"MunicipalLibrariesRepository.js","sourceRoot":"","sources":["../../../src/integration-engine/repositories/MunicipalLibrariesRepository.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,18 +6,19 @@ import { AbstractTransformation } from "@golemio/core/dist/helpers/transformatio
|
|
|
6
6
|
export interface ILibrariesTransformation {
|
|
7
7
|
libraries: ILibraries[];
|
|
8
8
|
services: Array<IServices & {
|
|
9
|
-
library_id:
|
|
9
|
+
library_id: string;
|
|
10
10
|
}>;
|
|
11
11
|
opening_hours: Array<Omit<IOpeningHours, "id">>;
|
|
12
12
|
}
|
|
13
13
|
interface ILibraryItemTransformation extends ILibraries {
|
|
14
14
|
services: Array<IServices & {
|
|
15
|
-
library_id:
|
|
15
|
+
library_id: string;
|
|
16
16
|
}>;
|
|
17
17
|
opening_hours: Array<Omit<IOpeningHours, "id">>;
|
|
18
18
|
}
|
|
19
19
|
export declare class MunicipalLibrariesTransformation extends AbstractTransformation<ILibrariesInput, ILibraryItemTransformation> {
|
|
20
20
|
name: string;
|
|
21
|
+
private readonly transformationHelper;
|
|
21
22
|
constructor();
|
|
22
23
|
transformCollection: (data: ILibrariesInput[]) => ILibrariesTransformation;
|
|
23
24
|
protected transformInternal: (element: ILibrariesInput) => ILibraryItemTransformation;
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MunicipalLibrariesTransformation = void 0;
|
|
4
|
+
const CoreToken_1 = require("@golemio/core/dist/helpers/ioc/CoreToken");
|
|
5
|
+
const Di_1 = require("@golemio/core/dist/integration-engine/ioc/Di");
|
|
4
6
|
const _sch_1 = require("../../schema-definitions");
|
|
5
7
|
const TransformationHelper_1 = require("./helpers/TransformationHelper");
|
|
6
8
|
const AbstractTransformation_1 = require("@golemio/core/dist/helpers/transformation/AbstractTransformation");
|
|
9
|
+
const BARRIER_FREE_SERVICE_ID = 3;
|
|
7
10
|
class MunicipalLibrariesTransformation extends AbstractTransformation_1.AbstractTransformation {
|
|
8
11
|
constructor() {
|
|
9
12
|
super();
|
|
@@ -14,7 +17,7 @@ class MunicipalLibrariesTransformation extends AbstractTransformation_1.Abstract
|
|
|
14
17
|
opening_hours: [],
|
|
15
18
|
};
|
|
16
19
|
for (const item of data) {
|
|
17
|
-
if (
|
|
20
|
+
if (this.transformationHelper.shouldProcess(item)) {
|
|
18
21
|
const { services, opening_hours, ...library } = this.transformElement(item);
|
|
19
22
|
result.libraries.push(library);
|
|
20
23
|
result.opening_hours.push(...opening_hours);
|
|
@@ -24,25 +27,34 @@ class MunicipalLibrariesTransformation extends AbstractTransformation_1.Abstract
|
|
|
24
27
|
return result;
|
|
25
28
|
};
|
|
26
29
|
this.transformInternal = (element) => {
|
|
27
|
-
const id =
|
|
28
|
-
const gps = element.adresa.gps.split(",").map((e) => parseFloat(e.trim()));
|
|
30
|
+
const id = this.transformationHelper.slugFromUrl(new URL(element.website_url));
|
|
29
31
|
return {
|
|
30
32
|
id,
|
|
31
|
-
name: element.
|
|
33
|
+
name: element.title,
|
|
32
34
|
geometry: {
|
|
33
|
-
coordinates: [
|
|
35
|
+
coordinates: [element.location.geo.lng, element.location.geo.lat],
|
|
34
36
|
type: "Point",
|
|
35
37
|
},
|
|
36
|
-
address:
|
|
37
|
-
email: element.
|
|
38
|
-
opening_hours:
|
|
39
|
-
telephone: element.
|
|
40
|
-
web: element.
|
|
41
|
-
district: null
|
|
42
|
-
services: element.
|
|
38
|
+
address: this.transformationHelper.getAddress(element.location),
|
|
39
|
+
email: element.contact.email,
|
|
40
|
+
opening_hours: this.transformationHelper.transformOpeningHours(element.opening_hours, id),
|
|
41
|
+
telephone: element.contact.phone,
|
|
42
|
+
web: element.website_url,
|
|
43
|
+
district: null /** @see UpdateDistrictsTask */,
|
|
44
|
+
services: element.barrier_free
|
|
45
|
+
? [
|
|
46
|
+
{
|
|
47
|
+
id: BARRIER_FREE_SERVICE_ID,
|
|
48
|
+
library_id: id,
|
|
49
|
+
name: "Bezbariérový přístup",
|
|
50
|
+
description: "Bezbariérový přístup pro vozíčkáře i rodiče s kočárky",
|
|
51
|
+
},
|
|
52
|
+
]
|
|
53
|
+
: [],
|
|
43
54
|
};
|
|
44
55
|
};
|
|
45
56
|
this.name = _sch_1.MunicipalLibraries.name;
|
|
57
|
+
this.transformationHelper = new TransformationHelper_1.TransformationHelper(Di_1.IntegrationEngineContainer.resolve(CoreToken_1.CoreToken.Logger));
|
|
46
58
|
}
|
|
47
59
|
}
|
|
48
60
|
exports.MunicipalLibrariesTransformation = MunicipalLibrariesTransformation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MunicipalLibrariesTransformation.js","sourceRoot":"","sources":["../../../src/integration-engine/transformations/MunicipalLibrariesTransformation.ts"],"names":[],"mappings":";;;AACA,mDAA0C;AAG1C,yEAAwF;AAGxF,6GAA0G;
|
|
1
|
+
{"version":3,"file":"MunicipalLibrariesTransformation.js","sourceRoot":"","sources":["../../../src/integration-engine/transformations/MunicipalLibrariesTransformation.ts"],"names":[],"mappings":";;;AACA,wEAAqE;AAErE,qEAA0F;AAC1F,mDAA0C;AAG1C,yEAAwF;AAGxF,6GAA0G;AAE1G,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAalC,MAAa,gCAAiC,SAAQ,+CAAmE;IAIrH;QACI,KAAK,EAAE,CAAC;QAKL,wBAAmB,GAAG,CAAC,IAAuB,EAA4B,EAAE;YAC/E,MAAM,MAAM,GAA6B;gBACrC,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE,EAAE;gBACZ,aAAa,EAAE,EAAE;aACpB,CAAC;YAEF,KAAK,MAAM,IAAI,IAAI,IAAI,EAAE;gBACrB,IAAI,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;oBAC/C,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;oBAC5E,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC/B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;oBAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;iBACrC;aACJ;YAED,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;QAEQ,sBAAiB,GAAG,CAAC,OAAwB,EAA8B,EAAE;YACnF,MAAM,EAAE,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;YAE/E,OAAO;gBACH,EAAE;gBACF,IAAI,EAAE,OAAO,CAAC,KAAK;gBACnB,QAAQ,EAAE;oBACN,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;oBACjE,IAAI,EAAE,OAAO;iBACP;gBACV,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC;gBAC/D,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;gBAC5B,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;gBACzF,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;gBAChC,GAAG,EAAE,OAAO,CAAC,WAAW;gBACxB,QAAQ,EAAE,IAAI,CAAC,+BAA+B;gBAC9C,QAAQ,EAAE,OAAO,CAAC,YAAY;oBAC1B,CAAC,CAAC;wBACI;4BACI,EAAE,EAAE,uBAAuB;4BAC3B,UAAU,EAAE,EAAE;4BACd,IAAI,EAAE,sBAAsB;4BAC5B,WAAW,EAAE,uDAAuD;yBACvE;qBACJ;oBACH,CAAC,CAAC,EAAE;aACX,CAAC;QACN,CAAC,CAAC;QAlDE,IAAI,CAAC,IAAI,GAAG,yBAAkB,CAAC,IAAI,CAAC;QACpC,IAAI,CAAC,oBAAoB,GAAG,IAAI,2CAAoB,CAAC,+BAA0B,CAAC,OAAO,CAAU,qBAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IACxH,CAAC;CAiDJ;AAzDD,4EAyDC"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { IPostalAddress } from "@golemio/core/dist/integration-engine";
|
|
2
|
-
import {
|
|
2
|
+
import { ILogger } from "@golemio/core/dist/helpers/logger";
|
|
3
|
+
import { ILibrariesInput, ILocation } from "../../../schema-definitions/datasources/MunicipalLibrariesJsonSchema";
|
|
3
4
|
import { IOpeningHours } from "../../../schema-definitions/OpeningHours";
|
|
4
|
-
import { IServices } from "../../../schema-definitions/Services";
|
|
5
5
|
export declare class TransformationHelper {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
library_id: number;
|
|
13
|
-
}>;
|
|
6
|
+
private readonly logger;
|
|
7
|
+
constructor(logger: ILogger);
|
|
8
|
+
slugFromUrl(url: URL): string;
|
|
9
|
+
shouldProcess(library: ILibrariesInput): boolean;
|
|
10
|
+
getAddress(location: ILocation): IPostalAddress;
|
|
11
|
+
transformOpeningHours(openingHours: ILibrariesInput["opening_hours"], libraryId: string): Array<Omit<IOpeningHours, "id">>;
|
|
14
12
|
}
|
|
@@ -1,91 +1,78 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var _a;
|
|
3
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
3
|
exports.TransformationHelper = void 0;
|
|
5
|
-
const integration_engine_1 = require("@golemio/core/dist/integration-engine");
|
|
6
|
-
const MunicipalLibrariesJsonSchema_1 = require("../../../schema-definitions/datasources/MunicipalLibrariesJsonSchema");
|
|
7
4
|
const helpers_1 = require("@golemio/core/dist/helpers");
|
|
5
|
+
const DAY_NAMES = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
|
|
8
6
|
class TransformationHelper {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
_a = TransformationHelper;
|
|
12
|
-
TransformationHelper.shouldProcess = (library) => {
|
|
13
|
-
if (library.id === null) {
|
|
14
|
-
return false;
|
|
7
|
+
constructor(logger) {
|
|
8
|
+
this.logger = logger;
|
|
15
9
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return false;
|
|
10
|
+
slugFromUrl(url) {
|
|
11
|
+
const parts = url.pathname.split("/").filter(Boolean);
|
|
12
|
+
return parts[parts.length - 1];
|
|
20
13
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
14
|
+
shouldProcess(library) {
|
|
15
|
+
if (!library.website_url) {
|
|
16
|
+
this.logger.warn(`Library '${library.title}' is missing website_url and will be skipped.`);
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
if (!library.show_in_list) {
|
|
20
|
+
this.logger.debug(`Library '${library.title}' was filtered out (show_in_list=false).`);
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
if (library.location.geo.lat === 0 || library.location.geo.lng === 0) {
|
|
24
|
+
this.logger.debug(`Library '${library.title}' was filtered out (missing GPS).`);
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
26
28
|
}
|
|
27
|
-
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
29
|
+
getAddress(location) {
|
|
30
|
+
const { street, street_number, district, postal_code } = location.details;
|
|
31
|
+
return {
|
|
32
|
+
address_country: "Česko",
|
|
33
|
+
address_formatted: `${street} ${street_number}, ${postal_code} ${district}, Česko`,
|
|
34
|
+
address_locality: district,
|
|
35
|
+
postal_code: postal_code,
|
|
36
|
+
street_address: `${street} ${street_number}`,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
transformOpeningHours(openingHours, libraryId) {
|
|
40
|
+
const result = [];
|
|
41
|
+
for (const [i, timetable] of openingHours.timetables.entries()) {
|
|
42
|
+
const common = {
|
|
43
|
+
library_id: libraryId,
|
|
44
|
+
description: timetable.label,
|
|
45
|
+
is_default: openingHours.active_timetable === i,
|
|
46
|
+
valid_from: timetable.validity_range.from
|
|
47
|
+
? helpers_1.DateTime.fromFormat(timetable.validity_range.from, "yyyy-LL-dd", {
|
|
48
|
+
timeZone: "Europe/Prague",
|
|
49
|
+
}).toISOString()
|
|
50
|
+
: null,
|
|
51
|
+
valid_through: timetable.validity_range.to
|
|
52
|
+
? helpers_1.DateTime.fromFormat(timetable.validity_range.to, "yyyy-LL-dd", {
|
|
53
|
+
timeZone: "Europe/Prague",
|
|
54
|
+
}).toISOString()
|
|
55
|
+
: null,
|
|
56
|
+
};
|
|
57
|
+
for (const [day, daySlots] of timetable.days.entries()) {
|
|
58
|
+
if (!daySlots)
|
|
59
|
+
continue;
|
|
60
|
+
for (const slot of daySlots) {
|
|
61
|
+
if (slot.type !== "standard" && slot.type !== "self_service") {
|
|
62
|
+
this.logger.warn(`Unknown opening hours slot type '${slot.type}' for library '${libraryId}'.`);
|
|
63
|
+
}
|
|
64
|
+
result.push({
|
|
65
|
+
opens: slot.from.formatted,
|
|
66
|
+
closes: slot.to.formatted,
|
|
67
|
+
day_of_week: DAY_NAMES[day],
|
|
68
|
+
type: slot.type,
|
|
69
|
+
...common,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
68
72
|
}
|
|
69
73
|
}
|
|
74
|
+
return result;
|
|
70
75
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
TransformationHelper.transformOpeningHours = (openingHours, libraryId) => {
|
|
74
|
-
return openingHours instanceof Array
|
|
75
|
-
? openingHours.flatMap((o) => _a.getOpeningHours(o, libraryId))
|
|
76
|
-
: _a.getOpeningHours(openingHours, libraryId);
|
|
77
|
-
};
|
|
78
|
-
TransformationHelper.getService = (service, libraryId) => {
|
|
79
|
-
return {
|
|
80
|
-
id: parseInt(service.id, 10),
|
|
81
|
-
library_id: libraryId,
|
|
82
|
-
name: service.nazev,
|
|
83
|
-
description: service.popis,
|
|
84
|
-
};
|
|
85
|
-
};
|
|
86
|
-
TransformationHelper.transformServices = (services, libraryId) => {
|
|
87
|
-
return services.sluzba instanceof Array
|
|
88
|
-
? services.sluzba.map((s) => _a.getService(s, libraryId))
|
|
89
|
-
: [_a.getService(services.sluzba, libraryId)];
|
|
90
|
-
};
|
|
76
|
+
}
|
|
77
|
+
exports.TransformationHelper = TransformationHelper;
|
|
91
78
|
//# sourceMappingURL=TransformationHelper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransformationHelper.js","sourceRoot":"","sources":["../../../../src/integration-engine/transformations/helpers/TransformationHelper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TransformationHelper.js","sourceRoot":"","sources":["../../../../src/integration-engine/transformations/helpers/TransformationHelper.ts"],"names":[],"mappings":"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"}
|