v1.21: Live-Stammdaten aus Master-Data-CSV importiert, Sync verworfen, Demo-Reste entfernt

This commit is contained in:
2026-10-04 13:50:13 +02:00
parent 26372d563c
commit 497abfcd4b
13 changed files with 246 additions and 27 deletions
+11 -3
View File
@@ -107,12 +107,20 @@ async function seed() {
module.exports = { seed }
/** Der Demo-Bestand (Einheit hs-7) muss existieren, sonst gehören die
* Demo-Nachseeds (Zähler/Häuser/Kosten) nicht in diese Datenbank – z. B. nach
* dem Live-Import (v1.21) darf nichts mehr nachgeseedet werden. */
async function demoBestandVorhanden() {
const { rows } = await pool.query(`SELECT 1 FROM units WHERE id = 'hs-7'`)
return rows.length > 0
}
/** Zähler-Demo-Daten: idempotent – läuft bei jedem Start und füllt die
* Zähler-Tabelle nur, wenn sie leer ist (auch nachträglich auf bestehenden
* Datenbanken, z. B. nach dem v1.9-Update). */
async function seedeZaehler() {
const { rows } = await pool.query('SELECT COUNT(*)::int AS n FROM meters')
if (rows[0].n > 0) return false
if (rows[0].n > 0 || !(await demoBestandVorhanden())) return false
for (const z of meters) {
await pool.query(
`INSERT INTO meters (id, unit_id, building, nummer, art, stand, stand_am, geaendert_am)
@@ -129,7 +137,7 @@ module.exports = { seed, seedeZaehler }
* leer ist (auch nachträglich auf bestehenden Datenbanken, z. B. v1.10). */
async function seedeHaeuser() {
const { rows } = await pool.query('SELECT COUNT(*)::int AS n FROM buildings')
if (rows[0].n > 0) return false
if (rows[0].n > 0 || !(await demoBestandVorhanden())) return false
for (const h of buildings) {
await pool.query(
`INSERT INTO buildings (name, adresse, baujahr, stockwerke, etagenhoehe, wohneinheiten, quadratmeter)
@@ -146,7 +154,7 @@ module.exports = { seed, seedeZaehler, seedeHaeuser }
* leer ist (auch nachträglich auf bestehenden Datenbanken, z. B. v1.14). */
async function seedeKosten() {
const { rows } = await pool.query('SELECT COUNT(*)::int AS n FROM costs')
if (rows[0].n > 0) return false
if (rows[0].n > 0 || !(await demoBestandVorhanden())) return false
for (const k of kosten) {
await pool.query(
`INSERT INTO costs (id, building, unit_id, jahr, kostenart, betrag, umlegbar, notiz, erfasst_am)