text-to-map 1.0.8 → 1.1.0
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/dist/bin/clear-all.js +21 -4
- package/dist/bin/init-db.d.ts +1 -0
- package/dist/bin/init-db.js +18 -0
- package/dist/bin/parse-ordinance.js +55 -42
- package/dist/bin/schools.js +1 -1
- package/dist/db/address-points.d.ts +11 -11
- package/dist/db/address-points.js +88 -76
- package/dist/db/db.d.ts +19 -10
- package/dist/db/db.js +124 -52
- package/dist/db/founders.d.ts +6 -6
- package/dist/db/founders.js +165 -134
- package/dist/db/meta.d.ts +3 -4
- package/dist/db/meta.js +23 -16
- package/dist/db/migrations/20230704125715_initial.d.ts +3 -0
- package/dist/db/migrations/20230704125715_initial.js +251 -0
- package/dist/db/regions.d.ts +5 -5
- package/dist/db/regions.js +40 -28
- package/dist/db/schools.d.ts +1 -1
- package/dist/db/schools.js +24 -12
- package/dist/db/street-sync.d.ts +4 -4
- package/dist/db/street-sync.js +26 -17
- package/dist/index.d.ts +3 -2
- package/dist/index.js +4 -2
- package/dist/open-data-sync/address-points.d.ts +0 -1
- package/dist/open-data-sync/address-points.js +35 -25
- package/dist/open-data-sync/regions.js +13 -5
- package/dist/open-data-sync/schools.js +19 -15
- package/dist/open-data-sync/streets.js +46 -33
- package/dist/street-markdown/municipality.d.ts +2 -2
- package/dist/street-markdown/municipality.js +18 -9
- package/dist/street-markdown/smd-line-parser.js +8 -5
- package/dist/street-markdown/smd.d.ts +4 -5
- package/dist/street-markdown/smd.js +72 -78
- package/dist/utils/helpers.d.ts +0 -1
- package/dist/utils/helpers.js +1 -8
- package/package.json +9 -5
package/dist/db/meta.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const setMetaValue: (key: string, value: any) => import("better-sqlite3").RunResult;
|
|
1
|
+
export declare const getMetaValue: (key: string) => Promise<string | undefined>;
|
|
2
|
+
export declare const setMetaValue: (key: string, value: any) => Promise<void>;
|
|
4
3
|
export declare const setCurrentDatetimeMetaValue: (key: string) => void;
|
|
5
|
-
export declare const getDatetimeMetaValue: (key: string) => Date | undefined
|
|
4
|
+
export declare const getDatetimeMetaValue: (key: string) => Promise<Date | undefined>;
|
package/dist/db/meta.js
CHANGED
|
@@ -1,27 +1,34 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
6
9
|
};
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
import { getKnexDb } from "./db";
|
|
11
|
+
export const getMetaValue = (key) => __awaiter(void 0, void 0, void 0, function* () {
|
|
12
|
+
const knex = getKnexDb();
|
|
13
|
+
const result = yield knex.pluck("value").from("meta").where({ key });
|
|
14
|
+
return result.length > 0 ? result[0] : undefined;
|
|
15
|
+
});
|
|
16
|
+
export const setMetaValue = (key, value) => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
|
+
const knex = getKnexDb();
|
|
18
|
+
if ((yield getMetaValue(key)) === undefined) {
|
|
19
|
+
yield knex.from("meta").insert({ key, value });
|
|
12
20
|
}
|
|
13
21
|
else {
|
|
14
|
-
|
|
15
|
-
return statement.run(value.toString(), key);
|
|
22
|
+
yield knex.from("meta").update({ value }).where({ key });
|
|
16
23
|
}
|
|
17
|
-
};
|
|
24
|
+
});
|
|
18
25
|
export const setCurrentDatetimeMetaValue = (key) => {
|
|
19
26
|
setMetaValue(key, new Date().toISOString());
|
|
20
27
|
};
|
|
21
|
-
export const getDatetimeMetaValue = (key) => {
|
|
22
|
-
const value = getMetaValue(key);
|
|
28
|
+
export const getDatetimeMetaValue = (key) => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
|
+
const value = yield getMetaValue(key);
|
|
23
30
|
if (value === undefined) {
|
|
24
31
|
return undefined;
|
|
25
32
|
}
|
|
26
33
|
return new Date(value);
|
|
27
|
-
};
|
|
34
|
+
});
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { isPostgres, isSqlite } from "../db";
|
|
11
|
+
export function up(knex) {
|
|
12
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
13
|
+
yield knex.schema.createTable("prague_district", function (table_10) {
|
|
14
|
+
table_10.integer("code").primary().notNullable();
|
|
15
|
+
table_10.text("name").notNullable();
|
|
16
|
+
});
|
|
17
|
+
yield knex.schema.createTable("school", function (table_12) {
|
|
18
|
+
table_12.text("izo").primary();
|
|
19
|
+
table_12.text("redizo").notNullable();
|
|
20
|
+
table_12.text("name").notNullable();
|
|
21
|
+
table_12.integer("capacity").notNullable();
|
|
22
|
+
});
|
|
23
|
+
yield knex.schema.createTable("founder_type", function (table_5) {
|
|
24
|
+
table_5.integer("code").primary().notNullable();
|
|
25
|
+
table_5.text("name").notNullable();
|
|
26
|
+
});
|
|
27
|
+
yield knex.schema.createTable("meta", function (table_6) {
|
|
28
|
+
table_6.text("key").primary().notNullable();
|
|
29
|
+
table_6.text("value").notNullable();
|
|
30
|
+
});
|
|
31
|
+
yield knex.schema.createTable("municipality_part", function (table_7) {
|
|
32
|
+
table_7.integer("code").primary().notNullable();
|
|
33
|
+
table_7.text("name").notNullable();
|
|
34
|
+
});
|
|
35
|
+
yield knex.schema.createTable("object_type", function (table_8) {
|
|
36
|
+
table_8.integer("id").primary().notNullable();
|
|
37
|
+
table_8.text("name").notNullable();
|
|
38
|
+
});
|
|
39
|
+
yield knex.schema.createTable("street_sync", function (table_16) {
|
|
40
|
+
table_16.text("feed_url").primary().notNullable();
|
|
41
|
+
});
|
|
42
|
+
yield knex.schema.createTable("region", function (table_11) {
|
|
43
|
+
table_11.integer("code").primary().notNullable();
|
|
44
|
+
table_11.text("name").notNullable();
|
|
45
|
+
table_11.text("short_name").notNullable();
|
|
46
|
+
table_11.integer("csu_code_100").notNullable();
|
|
47
|
+
table_11.text("csu_code_108_nuts").notNullable();
|
|
48
|
+
});
|
|
49
|
+
yield knex.schema.createTable("county", function (table_3) {
|
|
50
|
+
table_3.integer("code").primary().notNullable();
|
|
51
|
+
table_3.text("name").notNullable();
|
|
52
|
+
table_3.integer("csu_code_101_lau").notNullable();
|
|
53
|
+
table_3.text("csu_code_109_nuts").notNullable();
|
|
54
|
+
table_3
|
|
55
|
+
.integer("region_code")
|
|
56
|
+
.references("code")
|
|
57
|
+
.inTable("region")
|
|
58
|
+
.notNullable();
|
|
59
|
+
});
|
|
60
|
+
yield knex.schema.createTable("orp", function (table_9) {
|
|
61
|
+
table_9.integer("code").primary().notNullable();
|
|
62
|
+
table_9.text("name").notNullable();
|
|
63
|
+
table_9.integer("csu_code_65").notNullable();
|
|
64
|
+
table_9
|
|
65
|
+
.integer("region_code")
|
|
66
|
+
.references("code")
|
|
67
|
+
.inTable("region")
|
|
68
|
+
.notNullable();
|
|
69
|
+
table_9
|
|
70
|
+
.integer("county_code")
|
|
71
|
+
.references("code")
|
|
72
|
+
.inTable("county")
|
|
73
|
+
.notNullable();
|
|
74
|
+
});
|
|
75
|
+
yield knex.schema.createTable("city", function (table_1) {
|
|
76
|
+
table_1.integer("code").primary().notNullable();
|
|
77
|
+
table_1.text("name").notNullable();
|
|
78
|
+
table_1.integer("region_code").references("code").inTable("region");
|
|
79
|
+
table_1.integer("county_code").references("code").inTable("county");
|
|
80
|
+
table_1.integer("orp_code").references("code").inTable("orp");
|
|
81
|
+
});
|
|
82
|
+
yield knex.schema.createTable("city_district", function (table_2) {
|
|
83
|
+
table_2.integer("code").primary().notNullable();
|
|
84
|
+
table_2
|
|
85
|
+
.integer("city_code")
|
|
86
|
+
.references("code")
|
|
87
|
+
.inTable("city")
|
|
88
|
+
.notNullable();
|
|
89
|
+
table_2.text("name").notNullable();
|
|
90
|
+
});
|
|
91
|
+
yield knex.schema.createTable("street", function (table_15) {
|
|
92
|
+
table_15.integer("code").primary().notNullable();
|
|
93
|
+
table_15
|
|
94
|
+
.integer("city_code")
|
|
95
|
+
.references("code")
|
|
96
|
+
.inTable("city")
|
|
97
|
+
.notNullable();
|
|
98
|
+
table_15.text("name").notNullable();
|
|
99
|
+
});
|
|
100
|
+
yield knex.schema.createTable("founder", function (table_4) {
|
|
101
|
+
table_4.increments("id");
|
|
102
|
+
table_4.text("name").notNullable();
|
|
103
|
+
table_4.text("short_name").notNullable();
|
|
104
|
+
table_4.text("ico").notNullable();
|
|
105
|
+
table_4
|
|
106
|
+
.integer("founder_type_code")
|
|
107
|
+
.references("code")
|
|
108
|
+
.inTable("founder_type")
|
|
109
|
+
.notNullable();
|
|
110
|
+
table_4.integer("city_code").references("code").inTable("city");
|
|
111
|
+
table_4
|
|
112
|
+
.integer("city_district_code")
|
|
113
|
+
.references("code")
|
|
114
|
+
.inTable("city_district");
|
|
115
|
+
table_4.unique(["name", "ico"]);
|
|
116
|
+
});
|
|
117
|
+
yield knex.schema.createTable("school_founder", function (table_13) {
|
|
118
|
+
table_13.increments("id");
|
|
119
|
+
table_13
|
|
120
|
+
.text("school_izo")
|
|
121
|
+
.references("izo")
|
|
122
|
+
.inTable("school")
|
|
123
|
+
.notNullable();
|
|
124
|
+
table_13
|
|
125
|
+
.integer("founder_id")
|
|
126
|
+
.references("id")
|
|
127
|
+
.inTable("founder")
|
|
128
|
+
.notNullable();
|
|
129
|
+
});
|
|
130
|
+
yield knex.schema.createTable("address_point", function (table) {
|
|
131
|
+
table.increments("id");
|
|
132
|
+
table.integer("street_code").references("code").inTable("street");
|
|
133
|
+
table
|
|
134
|
+
.integer("object_type_id")
|
|
135
|
+
.references("id")
|
|
136
|
+
.inTable("object_type")
|
|
137
|
+
.notNullable();
|
|
138
|
+
table.integer("descriptive_number");
|
|
139
|
+
table.integer("orientational_number");
|
|
140
|
+
table.text("orientational_number_letter");
|
|
141
|
+
table.integer("city_code").references("code").inTable("city").notNullable();
|
|
142
|
+
table
|
|
143
|
+
.integer("city_district_code")
|
|
144
|
+
.references("code")
|
|
145
|
+
.inTable("city_district");
|
|
146
|
+
table
|
|
147
|
+
.integer("municipality_part_code")
|
|
148
|
+
.references("code")
|
|
149
|
+
.inTable("municipality_part");
|
|
150
|
+
table
|
|
151
|
+
.integer("prague_district_code")
|
|
152
|
+
.references("code")
|
|
153
|
+
.inTable("prague_district");
|
|
154
|
+
table.text("postal_code").notNullable();
|
|
155
|
+
table.double("jtsk_x");
|
|
156
|
+
table.double("jtsk_y");
|
|
157
|
+
table.double("wgs84_latitude");
|
|
158
|
+
table.double("wgs84_longitude");
|
|
159
|
+
});
|
|
160
|
+
yield knex.schema.createTable("school_location", function (table_14) {
|
|
161
|
+
table_14.increments("id");
|
|
162
|
+
table_14
|
|
163
|
+
.text("school_izo")
|
|
164
|
+
.references("izo")
|
|
165
|
+
.inTable("school")
|
|
166
|
+
.notNullable();
|
|
167
|
+
table_14
|
|
168
|
+
.integer("address_point_id")
|
|
169
|
+
.references("id")
|
|
170
|
+
.inTable("address_point")
|
|
171
|
+
.notNullable()
|
|
172
|
+
.onDelete("CASCADE");
|
|
173
|
+
table_14.unique(["school_izo", "address_point_id"]);
|
|
174
|
+
});
|
|
175
|
+
yield knex("founder_type").insert([
|
|
176
|
+
{ code: 0, name: "Zatím neurčeno" },
|
|
177
|
+
{ code: 101, name: "Fyzická osoba" },
|
|
178
|
+
{ code: 161, name: "Ústav" },
|
|
179
|
+
{ code: 211, name: "Ústřední orgány státní správy" },
|
|
180
|
+
{ code: 212, name: "Územní orgány státní správy" },
|
|
181
|
+
{ code: 221, name: "Veřejná obchodní společnost" },
|
|
182
|
+
{ code: 222, name: "Komanditní společnost" },
|
|
183
|
+
{ code: 223, name: "Akciová společnost" },
|
|
184
|
+
{ code: 224, name: "Společnost s ručením omezeným" },
|
|
185
|
+
{ code: 225, name: "Družstvo" },
|
|
186
|
+
{ code: 226, name: "Státní podnik" },
|
|
187
|
+
{ code: 227, name: "Evropská společnost" },
|
|
188
|
+
{ code: 228, name: "Evropské hospodářské zájmové sdružení" },
|
|
189
|
+
{ code: 231, name: "Nadace" },
|
|
190
|
+
{ code: 232, name: "Zájmové sdružení právnických osob" },
|
|
191
|
+
{ code: 233, name: "Nadační fond" },
|
|
192
|
+
{ code: 241, name: "Církev, náboženská společnost" },
|
|
193
|
+
{ code: 242, name: "Církevní organizace" },
|
|
194
|
+
{ code: 251, name: "Občanské sdružení" },
|
|
195
|
+
{
|
|
196
|
+
code: 252,
|
|
197
|
+
name: "Organizační jednotka občanského sdružení s právní subjektivitou",
|
|
198
|
+
},
|
|
199
|
+
{ code: 261, name: "Obec" },
|
|
200
|
+
{ code: 262, name: "Obecní podnik" },
|
|
201
|
+
{ code: 263, name: "Městská část / městský obvod" },
|
|
202
|
+
{ code: 264, name: "Svazek obcí" },
|
|
203
|
+
{ code: 266, name: "Kraj" },
|
|
204
|
+
{ code: 271, name: "Politická strana, politické hnutí" },
|
|
205
|
+
{ code: 281, name: "Obecně prospěšná společnost" },
|
|
206
|
+
{ code: 291, name: "Veřejná vysoká škola" },
|
|
207
|
+
{ code: 301, name: "Fyzická osoba s bydlištěm v zahraničí" },
|
|
208
|
+
{ code: 302, name: "Právnická osoba se sídlem v zahraničí" },
|
|
209
|
+
{ code: 706, name: "Spolek" },
|
|
210
|
+
{ code: 736, name: "Pobočný spolek" },
|
|
211
|
+
]);
|
|
212
|
+
yield knex("object_type").insert([
|
|
213
|
+
{ id: 1, name: "č.p." },
|
|
214
|
+
{ id: 2, name: "č.ev." },
|
|
215
|
+
]);
|
|
216
|
+
yield knex.schema.raw("CREATE INDEX city_code ON address_point (city_code);");
|
|
217
|
+
yield knex.schema.raw("CREATE INDEX city_district_code ON address_point (city_district_code);");
|
|
218
|
+
yield knex.schema.raw("CREATE INDEX municipality_part_code ON address_point (municipality_part_code);");
|
|
219
|
+
yield knex.schema.raw("CREATE INDEX object_type_id ON address_point (object_type_id);");
|
|
220
|
+
yield knex.schema.raw("CREATE INDEX street_code ON address_point (street_code);");
|
|
221
|
+
yield knex.schema.raw(`CREATE INDEX street_name ON street (name${isSqlite() ? " COLLATE NOCASE" : ""});`);
|
|
222
|
+
yield knex.schema.raw("CREATE INDEX street_sync_feed_url ON street_sync (feed_url);");
|
|
223
|
+
if (isPostgres()) {
|
|
224
|
+
yield knex.schema.raw("CREATE EXTENSION IF NOT EXISTS CITEXT");
|
|
225
|
+
yield knex.schema.alterTable("street", (t) => {
|
|
226
|
+
t.specificType("name", "CITEXT").notNullable().alter();
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
export function down(knex) {
|
|
232
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
233
|
+
yield knex.schema.dropTableIfExists("school_location");
|
|
234
|
+
yield knex.schema.dropTableIfExists("address_point");
|
|
235
|
+
yield knex.schema.dropTableIfExists("founder");
|
|
236
|
+
yield knex.schema.dropTableIfExists("city_district");
|
|
237
|
+
yield knex.schema.dropTableIfExists("street");
|
|
238
|
+
yield knex.schema.dropTableIfExists("city");
|
|
239
|
+
yield knex.schema.dropTableIfExists("orp");
|
|
240
|
+
yield knex.schema.dropTableIfExists("county");
|
|
241
|
+
yield knex.schema.dropTableIfExists("region");
|
|
242
|
+
yield knex.schema.dropTableIfExists("school_founder");
|
|
243
|
+
yield knex.schema.dropTableIfExists("founder_type");
|
|
244
|
+
yield knex.schema.dropTableIfExists("meta");
|
|
245
|
+
yield knex.schema.dropTableIfExists("municipality_part");
|
|
246
|
+
yield knex.schema.dropTableIfExists("object_type");
|
|
247
|
+
yield knex.schema.dropTableIfExists("prague_district");
|
|
248
|
+
yield knex.schema.dropTableIfExists("school");
|
|
249
|
+
yield knex.schema.dropTableIfExists("street_sync");
|
|
250
|
+
});
|
|
251
|
+
}
|
package/dist/db/regions.d.ts
CHANGED
|
@@ -23,9 +23,9 @@ export interface RegionsTableSchema {
|
|
|
23
23
|
}[];
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
|
-
export declare const insertRegionsAndOrps: (data: string[][], schema: RegionsTableSchema) => number
|
|
27
|
-
export declare const insertRegions: (buffer: string[][], columnIndex: RegionsColumn) => number
|
|
28
|
-
export declare const insertCounties: (buffer: string[][], columnIndex: RegionsColumn) => number
|
|
29
|
-
export declare const insertOrps: (buffer: string[][], columnIndex: RegionsColumn) => number
|
|
30
|
-
export declare const insertCities: (buffer: string[][], columnIndex: RegionsColumn) => number
|
|
26
|
+
export declare const insertRegionsAndOrps: (data: string[][], schema: RegionsTableSchema) => Promise<number>;
|
|
27
|
+
export declare const insertRegions: (buffer: string[][], columnIndex: RegionsColumn) => Promise<number>;
|
|
28
|
+
export declare const insertCounties: (buffer: string[][], columnIndex: RegionsColumn) => Promise<number>;
|
|
29
|
+
export declare const insertOrps: (buffer: string[][], columnIndex: RegionsColumn) => Promise<number>;
|
|
30
|
+
export declare const insertCities: (buffer: string[][], columnIndex: RegionsColumn) => Promise<number>;
|
|
31
31
|
export {};
|
package/dist/db/regions.js
CHANGED
|
@@ -1,51 +1,63 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { extractKeyValuesPairs, getKnexDb, insertMultipleRows } from "./db";
|
|
11
|
+
export const insertRegionsAndOrps = (data, schema) => __awaiter(void 0, void 0, void 0, function* () {
|
|
3
12
|
const columnIndex = getColumnIndexFromSchema(schema);
|
|
4
13
|
let changes = 0;
|
|
5
|
-
changes += insertRegions(data, columnIndex);
|
|
6
|
-
changes += insertCounties(data, columnIndex);
|
|
7
|
-
changes += insertOrps(data, columnIndex);
|
|
14
|
+
changes += yield insertRegions(data, columnIndex);
|
|
15
|
+
changes += yield insertCounties(data, columnIndex);
|
|
16
|
+
changes += yield insertOrps(data, columnIndex);
|
|
8
17
|
// cities are most likely already inserted, but in case they're not,
|
|
9
18
|
// we need to insert them before updating them with region data
|
|
10
|
-
changes += insertCities(data, columnIndex);
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
changes += yield insertCities(data, columnIndex);
|
|
20
|
+
const knex = getKnexDb();
|
|
21
|
+
for (const row of data) {
|
|
22
|
+
yield knex
|
|
23
|
+
.from("city")
|
|
24
|
+
.update({
|
|
25
|
+
region_code: row[columnIndex.regionRuianCode],
|
|
26
|
+
county_code: row[columnIndex.countyRuianCode],
|
|
27
|
+
orp_code: row[columnIndex.orpRuianCode],
|
|
28
|
+
})
|
|
29
|
+
.where({ code: row[columnIndex.cityCode] });
|
|
30
|
+
changes++;
|
|
31
|
+
}
|
|
20
32
|
return changes;
|
|
21
|
-
};
|
|
22
|
-
export const insertRegions = (buffer, columnIndex) => {
|
|
23
|
-
return insertMultipleRows(extractKeyValuesPairs(buffer, columnIndex.regionRuianCode, [
|
|
33
|
+
});
|
|
34
|
+
export const insertRegions = (buffer, columnIndex) => __awaiter(void 0, void 0, void 0, function* () {
|
|
35
|
+
return yield insertMultipleRows(extractKeyValuesPairs(buffer, columnIndex.regionRuianCode, [
|
|
24
36
|
columnIndex.regionName,
|
|
25
37
|
columnIndex.regionShortName,
|
|
26
38
|
columnIndex.regionCsuCode100,
|
|
27
39
|
columnIndex.regionCsuCode108Nuts,
|
|
28
40
|
]), "region", ["code", "name", "short_name", "csu_code_100", "csu_code_108_nuts"]);
|
|
29
|
-
};
|
|
30
|
-
export const insertCounties = (buffer, columnIndex) => {
|
|
31
|
-
return insertMultipleRows(extractKeyValuesPairs(buffer, columnIndex.countyRuianCode, [
|
|
41
|
+
});
|
|
42
|
+
export const insertCounties = (buffer, columnIndex) => __awaiter(void 0, void 0, void 0, function* () {
|
|
43
|
+
return yield insertMultipleRows(extractKeyValuesPairs(buffer, columnIndex.countyRuianCode, [
|
|
32
44
|
columnIndex.countyName,
|
|
33
45
|
columnIndex.countyCsuCode101Lau,
|
|
34
46
|
columnIndex.countyCsuCode109Nuts,
|
|
35
47
|
columnIndex.regionRuianCode,
|
|
36
48
|
]), "county", ["code", "name", "csu_code_101_lau", "csu_code_109_nuts", "region_code"]);
|
|
37
|
-
};
|
|
38
|
-
export const insertOrps = (buffer, columnIndex) => {
|
|
39
|
-
return insertMultipleRows(extractKeyValuesPairs(buffer, columnIndex.orpRuianCode, [
|
|
49
|
+
});
|
|
50
|
+
export const insertOrps = (buffer, columnIndex) => __awaiter(void 0, void 0, void 0, function* () {
|
|
51
|
+
return yield insertMultipleRows(extractKeyValuesPairs(buffer, columnIndex.orpRuianCode, [
|
|
40
52
|
columnIndex.orpName,
|
|
41
53
|
columnIndex.orpCsuCode65,
|
|
42
54
|
columnIndex.regionRuianCode,
|
|
43
55
|
columnIndex.countyRuianCode,
|
|
44
56
|
]), "orp", ["code", "name", "csu_code_65", "region_code", "county_code"]);
|
|
45
|
-
};
|
|
46
|
-
export const insertCities = (buffer, columnIndex) => {
|
|
47
|
-
return insertMultipleRows(extractKeyValuesPairs(buffer, columnIndex.cityCode, [columnIndex.cityName]), "city", ["code", "name"]);
|
|
48
|
-
};
|
|
57
|
+
});
|
|
58
|
+
export const insertCities = (buffer, columnIndex) => __awaiter(void 0, void 0, void 0, function* () {
|
|
59
|
+
return yield insertMultipleRows(extractKeyValuesPairs(buffer, columnIndex.cityCode, [columnIndex.cityName]), "city", ["code", "name"]);
|
|
60
|
+
});
|
|
49
61
|
const getColumnIndexFromSchema = (schema) => {
|
|
50
62
|
const names = schema.tableSchema.columns.map((column) => column.name);
|
|
51
63
|
const columnIndex = {
|
package/dist/db/schools.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SmdError } from "../street-markdown/types";
|
|
2
2
|
import { School } from "./types";
|
|
3
|
-
export declare const insertSchools: (schools: School[]) => number
|
|
3
|
+
export declare const insertSchools: (schools: School[]) => Promise<number>;
|
|
4
4
|
export declare const findSchool: (name: string, schools: School[]) => {
|
|
5
5
|
school: School | null;
|
|
6
6
|
errors: SmdError[];
|
package/dist/db/schools.js
CHANGED
|
@@ -1,16 +1,28 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
1
10
|
import { wholeLineError } from "../street-markdown/smd";
|
|
2
11
|
import { findClosestString } from "../utils/helpers";
|
|
3
|
-
import {
|
|
4
|
-
export const insertSchools = (schools) => {
|
|
5
|
-
const
|
|
12
|
+
import { getKnexDb, insertMultipleRows } from "./db";
|
|
13
|
+
export const insertSchools = (schools) => __awaiter(void 0, void 0, void 0, function* () {
|
|
14
|
+
const knex = getKnexDb();
|
|
6
15
|
const uniqueSchools = filterOutDuplicates(schools);
|
|
7
|
-
const existingIzo =
|
|
16
|
+
const existingIzo = (yield knex.select("izo").from("school")).map((row) => row.izo);
|
|
8
17
|
const toInsert = uniqueSchools.filter((school) => !existingIzo.includes(school.izo));
|
|
9
18
|
const toUpdate = uniqueSchools.filter((school) => existingIzo.includes(school.izo));
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
19
|
+
for (const school of toUpdate) {
|
|
20
|
+
yield knex.from("school").where("izo", school.izo).update({
|
|
21
|
+
name: school.name,
|
|
22
|
+
capacity: school.capacity,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
const insertedSchools = yield insertMultipleRows(toInsert.map((school) => [
|
|
14
26
|
school.izo,
|
|
15
27
|
school.redizo,
|
|
16
28
|
school.name,
|
|
@@ -24,16 +36,16 @@ export const insertSchools = (schools) => {
|
|
|
24
36
|
]);
|
|
25
37
|
let insertedLocations = 0;
|
|
26
38
|
// plus filter out duplicate locations (same address id + izo)
|
|
27
|
-
|
|
39
|
+
for (const location of locations) {
|
|
28
40
|
try {
|
|
29
|
-
insertedLocations += insertMultipleRows([location], "school_location", ["school_izo", "address_point_id"], false);
|
|
41
|
+
insertedLocations += yield insertMultipleRows([location], "school_location", ["school_izo", "address_point_id"], false);
|
|
30
42
|
}
|
|
31
43
|
catch (error) {
|
|
32
44
|
console.log(`Cannot add location with RUIAN code ${location[1]} (school IZO = ${location[0]}): code does not exist.`);
|
|
33
45
|
}
|
|
34
|
-
}
|
|
46
|
+
}
|
|
35
47
|
return insertedSchools + insertedLocations;
|
|
36
|
-
};
|
|
48
|
+
});
|
|
37
49
|
export const findSchool = (name, schools) => {
|
|
38
50
|
if (schools.length === 0) {
|
|
39
51
|
return {
|
package/dist/db/street-sync.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DbfStreet } from "./types";
|
|
2
|
-
export declare const setStreetAsSynced: (streetFeedUrl: string) => void
|
|
3
|
-
export declare const getAllSyncedStreets: () => Set<string
|
|
4
|
-
export declare const deleteStreets: (streetUrls: string[]) => void
|
|
5
|
-
export declare const insertStreetsFromDbf: (data: DbfStreet[]) => number
|
|
2
|
+
export declare const setStreetAsSynced: (streetFeedUrl: string) => Promise<void>;
|
|
3
|
+
export declare const getAllSyncedStreets: () => Promise<Set<string>>;
|
|
4
|
+
export declare const deleteStreets: (streetUrls: string[]) => Promise<void>;
|
|
5
|
+
export declare const insertStreetsFromDbf: (data: DbfStreet[]) => Promise<number>;
|
package/dist/db/street-sync.js
CHANGED
|
@@ -1,18 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
.prepare("SELECT * FROM street_sync")
|
|
10
|
-
.all()
|
|
11
|
-
.map((row) => row.feed_url));
|
|
12
|
-
};
|
|
13
|
-
export const deleteStreets = (streetUrls) => {
|
|
14
|
-
deleteMultipleRows(streetUrls, "street_sync", "feed_url");
|
|
15
|
-
};
|
|
16
|
-
export const insertStreetsFromDbf = (data) => {
|
|
17
|
-
return insertMultipleRows(data.map((street) => [street.KOD, street.OBEC_KOD, street.NAZEV]), "street", ["code", "city_code", "name"]);
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
18
9
|
};
|
|
10
|
+
import { deleteMultipleRowsKnex, getKnexDb, insertMultipleRows } from "./db";
|
|
11
|
+
export const setStreetAsSynced = (streetFeedUrl) => __awaiter(void 0, void 0, void 0, function* () {
|
|
12
|
+
yield getKnexDb()("street_sync")
|
|
13
|
+
.insert({ feed_url: streetFeedUrl })
|
|
14
|
+
.onConflict("feed_url")
|
|
15
|
+
.ignore();
|
|
16
|
+
});
|
|
17
|
+
export const getAllSyncedStreets = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
return new Set(yield getKnexDb()("street_sync")
|
|
19
|
+
.select("feed_url")
|
|
20
|
+
.then((rows) => rows.map((row) => row.feed_url)));
|
|
21
|
+
});
|
|
22
|
+
export const deleteStreets = (streetUrls) => __awaiter(void 0, void 0, void 0, function* () {
|
|
23
|
+
yield deleteMultipleRowsKnex(streetUrls, "street_sync", "feed_url");
|
|
24
|
+
});
|
|
25
|
+
export const insertStreetsFromDbf = (data) => __awaiter(void 0, void 0, void 0, function* () {
|
|
26
|
+
return yield insertMultipleRows(data.map((street) => [street.KOD, street.OBEC_KOD, street.NAZEV]), "street", ["code", "city_code", "name"]);
|
|
27
|
+
});
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { clearDb, initDb } from "./db/db";
|
|
2
|
+
import { downloadAndImportAddressPoints } from "./open-data-sync/address-points";
|
|
2
3
|
import { downloadAndImportRegions } from "./open-data-sync/regions";
|
|
3
4
|
import { downloadAndImportSchools } from "./open-data-sync/schools";
|
|
4
5
|
import { downloadAndImportStreets } from "./open-data-sync/streets";
|
|
@@ -17,4 +18,4 @@ export * from "./street-markdown/smd";
|
|
|
17
18
|
* ```
|
|
18
19
|
*/
|
|
19
20
|
export declare function downloadAndImportEverything(options?: OpenDataSyncOptionsPartial, syncStreets?: boolean): Promise<void>;
|
|
20
|
-
export { downloadAndImportAddressPoints,
|
|
21
|
+
export { initDb, downloadAndImportAddressPoints, clearDb, downloadAndImportSchools, downloadAndImportStreets, downloadAndImportRegions, };
|
package/dist/index.js
CHANGED
|
@@ -7,7 +7,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
7
7
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
8
|
});
|
|
9
9
|
};
|
|
10
|
-
import {
|
|
10
|
+
import { clearDb, initDb } from "./db/db";
|
|
11
|
+
import { downloadAndImportAddressPoints, } from "./open-data-sync/address-points";
|
|
11
12
|
import { downloadAndImportRegions } from "./open-data-sync/regions";
|
|
12
13
|
import { downloadAndImportSchools } from "./open-data-sync/schools";
|
|
13
14
|
import { downloadAndImportStreets } from "./open-data-sync/streets";
|
|
@@ -26,6 +27,7 @@ export * from "./street-markdown/smd";
|
|
|
26
27
|
*/
|
|
27
28
|
export function downloadAndImportEverything(options = {}, syncStreets = true) {
|
|
28
29
|
return __awaiter(this, void 0, void 0, function* () {
|
|
30
|
+
yield initDb();
|
|
29
31
|
yield downloadAndImportAddressPoints(options);
|
|
30
32
|
yield downloadAndImportSchools(options);
|
|
31
33
|
yield downloadAndImportRegions(options);
|
|
@@ -34,4 +36,4 @@ export function downloadAndImportEverything(options = {}, syncStreets = true) {
|
|
|
34
36
|
}
|
|
35
37
|
});
|
|
36
38
|
}
|
|
37
|
-
export { downloadAndImportAddressPoints,
|
|
39
|
+
export { initDb, downloadAndImportAddressPoints, clearDb, downloadAndImportSchools, downloadAndImportStreets, downloadAndImportRegions, };
|