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/db/meta.d.ts CHANGED
@@ -1,5 +1,4 @@
1
- /// <reference types="better-sqlite3" />
2
- export declare const getMetaValue: (key: string) => string | undefined;
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
- import { getDb } from "./db";
2
- export const getMetaValue = (key) => {
3
- const db = getDb();
4
- const statement = db.prepare("SELECT value FROM meta WHERE key = ?");
5
- return statement.pluck().get(key);
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
- export const setMetaValue = (key, value) => {
8
- const db = getDb();
9
- if (getMetaValue(key) === undefined) {
10
- const statement = db.prepare("INSERT INTO meta (key, value) VALUES (?, ?)");
11
- return statement.run(key, value.toString());
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
- const statement = db.prepare("UPDATE meta SET value = ? WHERE key = ?");
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,3 @@
1
+ import { Knex } from "knex";
2
+ export declare function up(knex: Knex): Promise<void>;
3
+ export declare function down(knex: Knex): Promise<void>;
@@ -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
+ }
@@ -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 {};
@@ -1,51 +1,63 @@
1
- import { extractKeyValuesPairs, getDb, insertMultipleRows } from "./db";
2
- export const insertRegionsAndOrps = (data, schema) => {
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 db = getDb();
12
- const updateStatement = db.prepare(`UPDATE city SET
13
- region_code = ?,
14
- county_code = ?,
15
- orp_code = ?
16
- WHERE code = ?`);
17
- data.forEach((data) => {
18
- changes += updateStatement.run(data[columnIndex.regionRuianCode], data[columnIndex.countyRuianCode], data[columnIndex.orpRuianCode], data[columnIndex.cityCode]).changes;
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 = {
@@ -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[];
@@ -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 { getDb, insertMultipleRows } from "./db";
4
- export const insertSchools = (schools) => {
5
- const db = getDb();
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 = db.prepare("SELECT izo FROM school").pluck().all();
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
- toUpdate.forEach((school) => {
11
- db.prepare("UPDATE school SET name = ?, capacity = ? WHERE izo = ?").run(school.name, school.capacity, school.izo);
12
- });
13
- const insertedSchools = insertMultipleRows(toInsert.map((school) => [
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
- locations.forEach((location) => {
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 {
@@ -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>;
@@ -1,18 +1,27 @@
1
- import { deleteMultipleRows, getDb, insertMultipleRows } from "./db";
2
- export const setStreetAsSynced = (streetFeedUrl) => {
3
- const db = getDb();
4
- db.prepare("INSERT OR IGNORE INTO street_sync (feed_url) VALUES (?)").run(streetFeedUrl);
5
- };
6
- export const getAllSyncedStreets = () => {
7
- const db = getDb();
8
- return new Set(db
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 { downloadAndImportAddressPoints, deleteDb } from "./open-data-sync/address-points";
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, deleteDb, downloadAndImportSchools, downloadAndImportStreets, downloadAndImportRegions, };
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 { downloadAndImportAddressPoints, deleteDb, } from "./open-data-sync/address-points";
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, deleteDb, downloadAndImportSchools, downloadAndImportStreets, downloadAndImportRegions, };
39
+ export { initDb, downloadAndImportAddressPoints, clearDb, downloadAndImportSchools, downloadAndImportStreets, downloadAndImportRegions, };
@@ -1,3 +1,2 @@
1
1
  import { OpenDataSyncOptionsPartial } from "../utils/helpers";
2
2
  export declare const downloadAndImportAddressPoints: (options?: OpenDataSyncOptionsPartial) => Promise<void>;
3
- export declare const deleteDb: (options?: OpenDataSyncOptionsPartial) => void;