sunrise-cms/temp/legacy.importFromCSV.js

100 lines
3.4 KiB
JavaScript

import fs from "node:fs";
import papa from "papaparse";
import sqlite from "better-sqlite3";
import { lotOccupancyDB as databasePath } from "../data/databasePaths.js";
import { addMap } from "../helpers/lotOccupancyDB/addMap.js";
import { getMap as getMapFromDatabase } from "../helpers/lotOccupancyDB/getMap.js";
import { getLotTypes } from "../helpers/lotOccupancyDB/getLotTypes.js";
import { addLot } from "../helpers/lotOccupancyDB/addLot.js";
const user = {
user: {
userName: "import.unix",
userProperties: {
canUpdate: true,
isAdmin: false
}
}
};
const configTablesInString = "'Maps', 'LotTypes'";
function purgeTables() {
const database = sqlite(databasePath);
database.prepare("delete from Lots").run();
database.prepare("delete from sqlite_sequence where name not in (" + configTablesInString + ")").run();
database.close();
}
function purgeConfigTables() {
const database = sqlite(databasePath);
database.prepare("delete from Maps").run();
database.prepare("delete from sqlite_sequence where name in ('Maps')").run();
database.close();
}
function getMapByMapDescription(mapDescription) {
const database = sqlite(databasePath, {
readonly: true
});
const map = database
.prepare("select * from Maps" +
" where mapDescription = ?")
.get(mapDescription);
database.close();
return map;
}
const mapCache = new Map();
function getMap(masterRow) {
if (mapCache.has(masterRow.CM_CEMETERY)) {
return mapCache.get(masterRow.CM_CEMETERY);
}
let map = getMapByMapDescription(masterRow.CM_CEMETERY);
if (!map) {
console.log("Creating map: " + masterRow.CM_CEMETERY);
const mapId = addMap({
mapName: masterRow.CM_CEMETERY,
mapDescription: masterRow.CM_CEMETERY,
mapSVG: "",
mapLatitude: "",
mapLongitude: "",
mapAddress1: "",
mapAddress2: "",
mapCity: "Sault Ste. Marie",
mapProvince: "ON",
mapPostalCode: "",
mapPhoneNumber: ""
}, user);
map = getMapFromDatabase(mapId);
}
mapCache.set(masterRow.CM_CEMETERY, map);
return map;
}
function importFromCSV() {
const lotTypes = getLotTypes();
const rawData = fs.readFileSync("./temp/CMMASTER.csv").toString();
const cmmaster = papa.parse(rawData, {
delimiter: ",",
header: true,
skipEmptyLines: true
});
for (const parseError of cmmaster.errors) {
console.log(parseError);
}
for (const masterRow of cmmaster.data) {
const map = getMap(masterRow);
const lotName = masterRow.CM_CEMETERY + "-" +
(masterRow.CM_BLOCK === "" ? "" : masterRow.CM_BLOCK + "-") +
(masterRow.CM_RANGE2 === "" ? masterRow.CM_RANGE1.toString() : masterRow.CM_RANGE2) + "-" +
(masterRow.CM_LOT2 === "" ? masterRow.CM_LOT1.toString() : masterRow.CM_LOT2) + "-" +
(masterRow.CM_GRAVE2 === "" ? masterRow.CM_GRAVE1.toString() : masterRow.CM_GRAVE2) + "-" +
masterRow.CM_INTERMENT;
const lotId = addLot({
lotName: lotName,
lotTypeId: lotTypes[0].lotTypeId,
lotTypeStatusId: "",
mapId: map.mapId,
mapKey: lotName,
lotLatitude: "",
lotLongitude: ""
}, user);
}
}
purgeTables();
importFromCSV();