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),
strasse VARCHAR(255),
hausnummer VARCHAR(50),
block VARCHAR(50),
stiege VARCHAR(50),
stock VARCHAR(50),
tuer VARCHAR(50),
plz VARCHAR(10),
ort VARCHAR(100),
geom geometry(Point, 4326),
@@ -104,6 +108,7 @@ CREATE TABLE IF NOT EXISTS $targetSchema."$targetTable" (
lastname VARCHAR(255),
phone VARCHAR(100),
email VARCHAR(255),
note TEXT,
status_code INTEGER,
status_id INTEGER,
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 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 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_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 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
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
(: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
type = EXCLUDED.type,
type_label = EXCLUDED.type_label,
strasse = EXCLUDED.strasse,
hausnummer = EXCLUDED.hausnummer,
block = EXCLUDED.block,
stiege = EXCLUDED.stiege,
stock = EXCLUDED.stock,
tuer = EXCLUDED.tuer,
plz = EXCLUDED.plz,
ort = EXCLUDED.ort,
geom = EXCLUDED.geom,
@@ -141,6 +155,7 @@ ON CONFLICT (id) DO UPDATE SET
lastname = EXCLUDED.lastname,
phone = EXCLUDED.phone,
email = EXCLUDED.email,
note = EXCLUDED.note,
status_code = EXCLUDED.status_code,
status_id = EXCLUDED.status_id,
oaid = EXCLUDED.oaid,
@@ -150,6 +165,10 @@ WHERE
"$targetTable".type_label IS DISTINCT FROM EXCLUDED.type_label OR
"$targetTable".strasse IS DISTINCT FROM EXCLUDED.strasse 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".ort IS DISTINCT FROM EXCLUDED.ort OR
"$targetTable".geom IS DISTINCT FROM EXCLUDED.geom OR
@@ -158,6 +177,7 @@ WHERE
"$targetTable".lastname IS DISTINCT FROM EXCLUDED.lastname OR
"$targetTable".phone IS DISTINCT FROM EXCLUDED.phone 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_id IS DISTINCT FROM EXCLUDED.status_id OR
"$targetTable".oaid IS DISTINCT FROM EXCLUDED.oaid;
@@ -191,6 +211,10 @@ SQL;
':type_label' => $po->type_label,
':strasse' => $po->adb_strasse,
':hausnummer' => $po->adb_hausnummer,
':block' => $po->block,
':stiege' => $po->stiege,
':stock' => $po->stock,
':tuer' => $po->tuer,
':plz' => $po->adb_plz,
':ort' => $po->adb_ort,
':company' => $po->company,
@@ -198,6 +222,7 @@ SQL;
':lastname' => $po->lastname,
':phone' => $po->phone,
':email' => $po->email,
':note' => $po->note,
':status_code' => $po->status_code,
':status_id' => $po->status_id,
':oaid' => $po->oaid,
@@ -205,6 +230,7 @@ SQL;
':lon' => $lonVal
];
$stmt->execute($params);
$processedIds[] = $id;
if ($stmt->rowCount() > 0) {