Qgis Preorder sync um Felder erweitert

This commit is contained in:
Daniel Spitzer
2026-01-20 11:26:53 +01:00
parent d867bb5604
commit 4aae3cb3e9

View File

@@ -96,6 +96,10 @@ CREATE TABLE IF NOT EXISTS $targetSchema."$targetTable" (
type_label VARCHAR(100), type_label VARCHAR(100),
strasse VARCHAR(255), strasse VARCHAR(255),
hausnummer VARCHAR(50), hausnummer VARCHAR(50),
block VARCHAR(50),
stiege VARCHAR(50),
stock VARCHAR(50),
tuer VARCHAR(50),
plz VARCHAR(10), plz VARCHAR(10),
ort VARCHAR(100), ort VARCHAR(100),
geom geometry(Point, 4326), geom geometry(Point, 4326),
@@ -104,6 +108,7 @@ CREATE TABLE IF NOT EXISTS $targetSchema."$targetTable" (
lastname VARCHAR(255), lastname VARCHAR(255),
phone VARCHAR(100), phone VARCHAR(100),
email VARCHAR(255), email VARCHAR(255),
note TEXT,
status_code INTEGER, status_code INTEGER,
status_id INTEGER, status_id INTEGER,
oaid VARCHAR(255), oaid VARCHAR(255),
@@ -119,20 +124,29 @@ SQL;
$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS lastname VARCHAR(255)"); $pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS lastname VARCHAR(255)");
$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS phone VARCHAR(100)"); $pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS phone VARCHAR(100)");
$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS email VARCHAR(255)"); $pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS email VARCHAR(255)");
$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS note TEXT");
$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS status_code INTEGER"); $pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS status_code INTEGER");
$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS status_id INTEGER"); $pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS status_id INTEGER");
$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS oaid VARCHAR(255)"); $pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS oaid VARCHAR(255)");
$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS block VARCHAR(50)");
$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS stiege VARCHAR(50)");
$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS stock VARCHAR(50)");
$pdo->exec("ALTER TABLE $targetSchema.\"$targetTable\" ADD COLUMN IF NOT EXISTS tuer VARCHAR(50)");
$sqlUpsert = <<<SQL $sqlUpsert = <<<SQL
INSERT INTO $targetSchema."$targetTable" INSERT INTO $targetSchema."$targetTable"
(id, type, type_label, strasse, hausnummer, plz, ort, geom, company, firstname, lastname, phone, email, status_code, status_id, oaid, updated_at) (id, type, type_label, strasse, hausnummer, block, stiege, stock, tuer, plz, ort, geom, company, firstname, lastname, phone, email, note, status_code, status_id, oaid, updated_at)
VALUES VALUES
(:id, :type, :type_label, :strasse, :hausnummer, :plz, :ort, ST_SetSRID(ST_MakePoint(:lon, :lat), 4326), :company, :firstname, :lastname, :phone, :email, :status_code, :status_id, :oaid, NOW()) (:id, :type, :type_label, :strasse, :hausnummer, :block, :stiege, :stock, :tuer, :plz, :ort, ST_SetSRID(ST_MakePoint(:lon, :lat), 4326), :company, :firstname, :lastname, :phone, :email, :note, :status_code, :status_id, :oaid, NOW())
ON CONFLICT (id) DO UPDATE SET ON CONFLICT (id) DO UPDATE SET
type = EXCLUDED.type, type = EXCLUDED.type,
type_label = EXCLUDED.type_label, type_label = EXCLUDED.type_label,
strasse = EXCLUDED.strasse, strasse = EXCLUDED.strasse,
hausnummer = EXCLUDED.hausnummer, hausnummer = EXCLUDED.hausnummer,
block = EXCLUDED.block,
stiege = EXCLUDED.stiege,
stock = EXCLUDED.stock,
tuer = EXCLUDED.tuer,
plz = EXCLUDED.plz, plz = EXCLUDED.plz,
ort = EXCLUDED.ort, ort = EXCLUDED.ort,
geom = EXCLUDED.geom, geom = EXCLUDED.geom,
@@ -141,6 +155,7 @@ ON CONFLICT (id) DO UPDATE SET
lastname = EXCLUDED.lastname, lastname = EXCLUDED.lastname,
phone = EXCLUDED.phone, phone = EXCLUDED.phone,
email = EXCLUDED.email, email = EXCLUDED.email,
note = EXCLUDED.note,
status_code = EXCLUDED.status_code, status_code = EXCLUDED.status_code,
status_id = EXCLUDED.status_id, status_id = EXCLUDED.status_id,
oaid = EXCLUDED.oaid, oaid = EXCLUDED.oaid,
@@ -150,6 +165,10 @@ WHERE
"$targetTable".type_label IS DISTINCT FROM EXCLUDED.type_label OR "$targetTable".type_label IS DISTINCT FROM EXCLUDED.type_label OR
"$targetTable".strasse IS DISTINCT FROM EXCLUDED.strasse OR "$targetTable".strasse IS DISTINCT FROM EXCLUDED.strasse OR
"$targetTable".hausnummer IS DISTINCT FROM EXCLUDED.hausnummer OR "$targetTable".hausnummer IS DISTINCT FROM EXCLUDED.hausnummer OR
"$targetTable".block IS DISTINCT FROM EXCLUDED.block OR
"$targetTable".stiege IS DISTINCT FROM EXCLUDED.stiege OR
"$targetTable".stock IS DISTINCT FROM EXCLUDED.stock OR
"$targetTable".tuer IS DISTINCT FROM EXCLUDED.tuer OR
"$targetTable".plz IS DISTINCT FROM EXCLUDED.plz OR "$targetTable".plz IS DISTINCT FROM EXCLUDED.plz OR
"$targetTable".ort IS DISTINCT FROM EXCLUDED.ort OR "$targetTable".ort IS DISTINCT FROM EXCLUDED.ort OR
"$targetTable".geom IS DISTINCT FROM EXCLUDED.geom OR "$targetTable".geom IS DISTINCT FROM EXCLUDED.geom OR
@@ -158,6 +177,7 @@ WHERE
"$targetTable".lastname IS DISTINCT FROM EXCLUDED.lastname OR "$targetTable".lastname IS DISTINCT FROM EXCLUDED.lastname OR
"$targetTable".phone IS DISTINCT FROM EXCLUDED.phone OR "$targetTable".phone IS DISTINCT FROM EXCLUDED.phone OR
"$targetTable".email IS DISTINCT FROM EXCLUDED.email OR "$targetTable".email IS DISTINCT FROM EXCLUDED.email OR
"$targetTable".note IS DISTINCT FROM EXCLUDED.note OR
"$targetTable".status_code IS DISTINCT FROM EXCLUDED.status_code OR "$targetTable".status_code IS DISTINCT FROM EXCLUDED.status_code OR
"$targetTable".status_id IS DISTINCT FROM EXCLUDED.status_id OR "$targetTable".status_id IS DISTINCT FROM EXCLUDED.status_id OR
"$targetTable".oaid IS DISTINCT FROM EXCLUDED.oaid; "$targetTable".oaid IS DISTINCT FROM EXCLUDED.oaid;
@@ -191,6 +211,10 @@ SQL;
':type_label' => $po->type_label, ':type_label' => $po->type_label,
':strasse' => $po->adb_strasse, ':strasse' => $po->adb_strasse,
':hausnummer' => $po->adb_hausnummer, ':hausnummer' => $po->adb_hausnummer,
':block' => $po->block,
':stiege' => $po->stiege,
':stock' => $po->stock,
':tuer' => $po->tuer,
':plz' => $po->adb_plz, ':plz' => $po->adb_plz,
':ort' => $po->adb_ort, ':ort' => $po->adb_ort,
':company' => $po->company, ':company' => $po->company,
@@ -198,6 +222,7 @@ SQL;
':lastname' => $po->lastname, ':lastname' => $po->lastname,
':phone' => $po->phone, ':phone' => $po->phone,
':email' => $po->email, ':email' => $po->email,
':note' => $po->note,
':status_code' => $po->status_code, ':status_code' => $po->status_code,
':status_id' => $po->status_id, ':status_id' => $po->status_id,
':oaid' => $po->oaid, ':oaid' => $po->oaid,
@@ -205,6 +230,7 @@ SQL;
':lon' => $lonVal ':lon' => $lonVal
]; ];
$stmt->execute($params); $stmt->execute($params);
$processedIds[] = $id; $processedIds[] = $id;
if ($stmt->rowCount() > 0) { if ($stmt->rowCount() > 0) {