From 5ca6cb2093944b83f33e7c8c2bc75f8e63c2c9d0 Mon Sep 17 00:00:00 2001
From: Lorenz Stechauner <lorenz.stechauner@necronda.net>
Date: Sun, 17 Sep 2023 21:26:00 +0200
Subject: [PATCH] Database: Update plz and template creation

---
 data/plz.py    | 10 +++++-----
 sql/sample.sql |  2 +-
 sqlite.bat     |  2 ++
 sqlite.sh      |  2 ++
 4 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/data/plz.py b/data/plz.py
index 46ebe73..eca62a1 100755
--- a/data/plz.py
+++ b/data/plz.py
@@ -279,20 +279,20 @@ def write_sql(plz_rows: List[PlzRow], plz_dest_rows: List[PlzDestRow], kgv_rows:
     pr = set()
     with open('90.plz.sql', 'wb') as f:
         f.write(b"\nINSERT INTO AT_gem VALUES\n")
-        for gkz, (name, _, _) in gemeinden.items():
+        for gkz, (name, _, _) in sorted(gemeinden.items(), key=lambda i: i[0]):
             f.write(f"({gkz:5}, '{name}'),\n".encode('utf-8'))
         f.seek(-2, 1)
         f.write(b';\n')
 
         f.write(b"\nINSERT INTO AT_kg VALUES\n")
-        for kgnr, name, gkz, _ in kgv_rows:
+        for kgnr, name, gkz, _ in sorted(kgv_rows, key=lambda i: i[0]):
             gemeinden[gkz][1].append(kgnr)
             f.write(f"({kgnr:5}, {gkz:5}, '{name}'),\n".encode('utf-8'))
         f.seek(-2, 1)
         f.write(b';\n')
 
         f.write(b"\nINSERT INTO AT_ort VALUES\n")
-        for okz, (name, gkz) in ov.items():
+        for okz, (name, gkz) in sorted(ov.items(), key=lambda i: i[0]):
             kgnr_o = None
 
             if name.startswith('Wien '):
@@ -323,14 +323,14 @@ def write_sql(plz_rows: List[PlzRow], plz_dest_rows: List[PlzDestRow], kgv_rows:
         f.write(b';\n')
 
         f.write(b"\nINSERT INTO AT_plz VALUES\n")
-        for plz, ort, blnr, plz_type, internal, addr, po_box in plz_rows:
+        for plz, ort, blnr, plz_type, internal, addr, po_box in sorted(plz_rows, key=lambda i: i[0]):
             f.write(f"({plz:4}, '{ort}', {blnr}, '{plz_type}', {internal and 'TRUE' or 'FALSE'}, "
                     f"{addr and 'TRUE' or 'FALSE'}, {po_box and 'TRUE' or 'FALSE'}),\n".encode('utf-8'))
         f.seek(-2, 1)
         f.write(b';\n')
 
         f.write(b"\nINSERT INTO AT_plz_dest VALUES\n")
-        for plz, dest, okz, _, _, _ in plz_dest_rows:
+        for plz, dest, okz, _, _, _ in sorted(plz_dest_rows, key=lambda i: (i[0], i[2])):
             f.write(f"({plz:4}, {okz:5}, '{dest}'),\n".encode('utf-8'))
         f.seek(-2, 1)
         f.write(b';\n')
diff --git a/sql/sample.sql b/sql/sample.sql
index 734e1a1..f291e3a 100644
--- a/sql/sample.sql
+++ b/sql/sample.sql
@@ -5,7 +5,7 @@ INSERT INTO wb_gl VALUES
 (3, 'Falkensteiner Hügelland');
 
 INSERT INTO branch VALUES
-('M', 'Matzen', 'AT', 224303541, 'Winzerstraße 1', '+43 2289 12345', '+43 2289 12345', NULL);
+('M', 'Matzen', 40, 224303541, 'Winzerstraße 1', '+43 2289 12345', '+43 2289 12345', NULL);
 
 INSERT INTO wine_attribute VALUES
 ('B', 'BIO AT-BIO-302', 10000, TRUE),
diff --git a/sqlite.bat b/sqlite.bat
index 0abf567..a3817e4 100644
--- a/sqlite.bat
+++ b/sqlite.bat
@@ -3,10 +3,12 @@
 SET dir=.
 sqlite3 -box^
  -cmd ".read %dir%/sql/v01/10.create.sql"^
+ -cmd ".read %dir%/sql/v01/11.timestamp-trigger.sql"^
  -cmd ".read %dir%/sql/v01/20.view.sql"^
  -cmd ".read %dir%/sql/v01/50.base.sql"^
  -cmd ".read %dir%/data/90.plz.sql"^
  -cmd ".read %dir%/sql/91.plz-fix.sql"^
  -cmd ".read %dir%/sql/v01/92.wb_gem.sql"^
+ -cmd ".read %dir%/sql/v01/99.schema_version.sql"^
  -cmd ".read %dir%/sql/sample.sql"^
  %@%
diff --git a/sqlite.sh b/sqlite.sh
index fdaf8d2..0fed4f7 100755
--- a/sqlite.sh
+++ b/sqlite.sh
@@ -2,10 +2,12 @@
 dir="."
 sqlite3 -box \
   -cmd ".read $dir/sql/v01/10.create.sql" \
+  -cmd ".read $dir/sql/v01/11.timestamp-trigger.sql" \
   -cmd ".read $dir/sql/v01/20.view.sql" \
   -cmd ".read $dir/sql/v01/50.base.sql" \
   -cmd ".read $dir/data/90.plz.sql" \
   -cmd ".read $dir/sql/91.plz-fix.sql" \
   -cmd ".read $dir/sql/v01/92.wb_gem.sql" \
+  -cmd ".read $dir/sql/v01/99.schema_version.sql" \
   -cmd ".read $dir/sql/sample.sql" \
   $@