text-to-map
Version:
Text To Map usiluje o lepší, strojově zpracovatelné využití částí vyhlášek s výčtem ulic a dalších lokací. Jde o rozšiřitelnou sadu konceptů a nástrojů, které zajistí hladký převod výčtu ulic a jejich rozsahů v lidsky srozumitelném jazyce do strojově zpra
37 lines • 6.75 kB
JavaScript
import { parse } from "csv-parse";
import iconv from "iconv-lite";
import fetch from "node-fetch";
import { pipeline } from "stream/promises";
import { insertRegionsAndOrps } from "../db/regions";
import { SyncPart } from "../db/types";
import { prepareOptions } from "../utils/helpers";
import { runSyncPart } from "./common";
const downloadAndImportDataToDb = async (options) => {
console.log("Downloading regions and ORP data...");
const response = await fetch(options.regionsCsvUrl);
if (response.status !== 200) {
throw new Error(`The file could not be downloaded. HTTP Code: ${response.status}`);
}
console.log("Download completed. Starting to parse CSV file...");
const rows = [];
const parseStream = parse({ delimiter: ",", fromLine: 2 }).on("data", (data) => {
rows.push(data);
});
await pipeline(response.body, iconv.decodeStream("utf-8"), parseStream);
const schemaResponse = await fetch(options.regionsSchemaUrl);
if (schemaResponse.status !== 200) {
throw new Error(`The file could not be downloaded. HTTP Code: ${schemaResponse.status}`);
}
// @ts-ignore
const schema = await schemaResponse.json();
console.log("Parsing completed. Starting to import data to DB...");
await insertRegionsAndOrps(rows, schema);
console.log(`Import completed. Total imported rows: ${rows.length}`);
};
export const downloadAndImportRegions = async (options = {}) => {
await runSyncPart(SyncPart.Regions, [], async () => {
const completeOptions = prepareOptions(options);
await downloadAndImportDataToDb(completeOptions);
});
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnaW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVuLWRhdGEtc3luYy9yZWdpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbEMsT0FBTyxLQUFLLE1BQU0sWUFBWSxDQUFDO0FBQy9CLE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUMvQixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUFzQixvQkFBb0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFHTCxjQUFjLEVBQ2YsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRXZDLE1BQU0seUJBQXlCLEdBQUcsS0FBSyxFQUNyQyxPQUE0QixFQUM1QixFQUFFO0lBQ0YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsQ0FBQyxDQUFDO0lBQ25ELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwRCxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO1FBQzNCLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0RBQWdELFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FDbEUsQ0FBQztLQUNIO0lBR0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtREFBbUQsQ0FBQyxDQUFDO0lBRWpFLE1BQU0sSUFBSSxHQUFlLEVBQUUsQ0FBQztJQUM1QixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FDM0QsTUFBTSxFQUNOLENBQUMsSUFBYyxFQUFFLEVBQUU7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNsQixDQUFDLENBQ0YsQ0FBQztJQUVGLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztJQUV4RSxNQUFNLGNBQWMsR0FBRyxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM3RCxJQUFJLGNBQWMsQ0FBQyxNQUFNLEtBQUssR0FBRyxFQUFFO1FBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQ2IsZ0RBQWdELGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FDeEUsQ0FBQztLQUNIO0lBQ0QsYUFBYTtJQUNiLE1BQU0sTUFBTSxHQUF1QixNQUFNLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUUvRCxPQUFPLENBQUMsR0FBRyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7SUFFbkUsTUFBTSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFFekMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQ0FBMEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDdkUsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsS0FBSyxFQUMzQyxVQUFzQyxFQUFFLEVBQ3pCLEVBQUU7SUFDakIsTUFBTSxXQUFXLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDakQsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELE1BQU0seUJBQXlCLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbkQsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXJzZSB9IGZyb20gXCJjc3YtcGFyc2VcIjtcclxuaW1wb3J0IGljb252IGZyb20gXCJpY29udi1saXRlXCI7XHJcbmltcG9ydCBmZXRjaCBmcm9tIFwibm9kZS1mZXRjaFwiO1xyXG5pbXBvcnQgeyBwaXBlbGluZSB9IGZyb20gXCJzdHJlYW0vcHJvbWlzZXNcIjtcclxuXHJcbmltcG9ydCB7IFJlZ2lvbnNUYWJsZVNjaGVtYSwgaW5zZXJ0UmVnaW9uc0FuZE9ycHMgfSBmcm9tIFwiLi4vZGIvcmVnaW9uc1wiO1xyXG5pbXBvcnQgeyBTeW5jUGFydCB9IGZyb20gXCIuLi9kYi90eXBlc1wiO1xyXG5pbXBvcnQge1xyXG4gIE9wZW5EYXRhU3luY09wdGlvbnMsXHJcbiAgT3BlbkRhdGFTeW5jT3B0aW9uc1BhcnRpYWwsXHJcbiAgcHJlcGFyZU9wdGlvbnNcclxufSBmcm9tIFwiLi4vdXRpbHMvaGVscGVyc1wiO1xyXG5pbXBvcnQgeyBydW5TeW5jUGFydCB9IGZyb20gXCIuL2NvbW1vblwiO1xyXG5cclxuY29uc3QgZG93bmxvYWRBbmRJbXBvcnREYXRhVG9EYiA9IGFzeW5jIChcclxuICBvcHRpb25zOiBPcGVuRGF0YVN5bmNPcHRpb25zXHJcbikgPT4ge1xyXG4gIGNvbnNvbGUubG9nKFwiRG93bmxvYWRpbmcgcmVnaW9ucyBhbmQgT1JQIGRhdGEuLi5cIik7XHJcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChvcHRpb25zLnJlZ2lvbnNDc3ZVcmwpO1xyXG4gIGlmIChyZXNwb25zZS5zdGF0dXMgIT09IDIwMCkge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKFxyXG4gICAgICBgVGhlIGZpbGUgY291bGQgbm90IGJlIGRvd25sb2FkZWQuIEhUVFAgQ29kZTogJHtyZXNwb25zZS5zdGF0dXN9YFxyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxuICBjb25zb2xlLmxvZyhcIkRvd25sb2FkIGNvbXBsZXRlZC4gU3RhcnRpbmcgdG8gcGFyc2UgQ1NWIGZpbGUuLi5cIik7XHJcblxyXG4gIGNvbnN0IHJvd3M6IHN0cmluZ1tdW10gPSBbXTtcclxuICBjb25zdCBwYXJzZVN0cmVhbSA9IHBhcnNlKHsgZGVsaW1pdGVyOiBcIixcIiwgZnJvbUxpbmU6IDIgfSkub24oXHJcbiAgICBcImRhdGFcIixcclxuICAgIChkYXRhOiBzdHJpbmdbXSkgPT4ge1xyXG4gICAgICByb3dzLnB1c2goZGF0YSk7XHJcbiAgICB9XHJcbiAgKTtcclxuXHJcbiAgYXdhaXQgcGlwZWxpbmUocmVzcG9uc2UuYm9keSwgaWNvbnYuZGVjb2RlU3RyZWFtKFwidXRmLThcIiksIHBhcnNlU3RyZWFtKTtcclxuICBcclxuICBjb25zdCBzY2hlbWFSZXNwb25zZSA9IGF3YWl0IGZldGNoKG9wdGlvbnMucmVnaW9uc1NjaGVtYVVybCk7XHJcbiAgaWYgKHNjaGVtYVJlc3BvbnNlLnN0YXR1cyAhPT0gMjAwKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoXHJcbiAgICAgIGBUaGUgZmlsZSBjb3VsZCBub3QgYmUgZG93bmxvYWRlZC4gSFRUUCBDb2RlOiAke3NjaGVtYVJlc3BvbnNlLnN0YXR1c31gXHJcbiAgICApO1xyXG4gIH1cclxuICAvLyBAdHMtaWdub3JlXHJcbiAgY29uc3Qgc2NoZW1hOiBSZWdpb25zVGFibGVTY2hlbWEgPSBhd2FpdCBzY2hlbWFSZXNwb25zZS5qc29uKCk7XHJcblxyXG4gIGNvbnNvbGUubG9nKFwiUGFyc2luZyBjb21wbGV0ZWQuIFN0YXJ0aW5nIHRvIGltcG9ydCBkYXRhIHRvIERCLi4uXCIpO1xyXG5cclxuICBhd2FpdCBpbnNlcnRSZWdpb25zQW5kT3Jwcyhyb3dzLCBzY2hlbWEpO1xyXG5cclxuICBjb25zb2xlLmxvZyhgSW1wb3J0IGNvbXBsZXRlZC4gVG90YWwgaW1wb3J0ZWQgcm93czogJHtyb3dzLmxlbmd0aH1gKTtcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBkb3dubG9hZEFuZEltcG9ydFJlZ2lvbnMgPSBhc3luYyAoXHJcbiAgb3B0aW9uczogT3BlbkRhdGFTeW5jT3B0aW9uc1BhcnRpYWwgPSB7fVxyXG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcclxuICBhd2FpdCBydW5TeW5jUGFydChTeW5jUGFydC5SZWdpb25zLCBbXSwgYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgY29tcGxldGVPcHRpb25zID0gcHJlcGFyZU9wdGlvbnMob3B0aW9ucyk7XHJcbiAgICBhd2FpdCBkb3dubG9hZEFuZEltcG9ydERhdGFUb0RiKGNvbXBsZXRlT3B0aW9ucyk7XHJcbiAgfSk7XHJcbn07XHJcbiJdfQ==