From f25f03bd6e5ca439656884b5789442316b60eab3 Mon Sep 17 00:00:00 2001
From: sanj <67624670+iodrift@users.noreply.github.com>
Date: Tue, 30 Jul 2024 15:59:24 -0700
Subject: [PATCH] Auto-update: Tue Jul 30 15:59:24 PDT 2024

---
 sijapi/classes.py | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/sijapi/classes.py b/sijapi/classes.py
index 171e51c..0c8dfd8 100644
--- a/sijapi/classes.py
+++ b/sijapi/classes.py
@@ -651,7 +651,6 @@ class APIConfig(BaseModel):
 
 
 
-
     async def apply_batch_changes(self, conn, table_name, changes):
         if not changes:
             return 0
@@ -666,23 +665,26 @@ class APIConfig(BaseModel):
 
             if id_exists:
                 insert_query = f"""
-                    INSERT INTO "{table_name}" ({', '.join(columns)})
+                    INSERT INTO "{table_name}" ({', '.join(f'"{col}"' for col in columns)})
                     VALUES ({', '.join(placeholders)})
                     ON CONFLICT (id) DO UPDATE SET
-                    {', '.join(f"{col} = EXCLUDED.{col}" for col in columns if col != 'id')}
+                    {', '.join(f'"{col}" = EXCLUDED."{col}"' for col in columns if col != 'id')}
                 """
             else:
                 # For tables without 'id', use all columns as conflict target
                 insert_query = f"""
-                    INSERT INTO "{table_name}" ({', '.join(columns)})
+                    INSERT INTO "{table_name}" ({', '.join(f'"{col}"' for col in columns)})
                     VALUES ({', '.join(placeholders)})
                     ON CONFLICT DO NOTHING
                 """
 
+            debug(f"Generated insert query for {table_name}: {insert_query}")
+
             # Execute the insert for each change
             affected_rows = 0
-            for change in changes:
+            async for change in tqdm(changes, desc=f"Syncing {table_name}", unit="row"):
                 values = [change[col] for col in columns]
+                debug(f"Executing query for {table_name} with values: {values}")
                 result = await conn.execute(insert_query, *values)
                 affected_rows += int(result.split()[-1])
 
@@ -721,9 +723,10 @@ class APIConfig(BaseModel):
                     columns = source_entry.keys()
                     placeholders = [f'${i+1}' for i in range(len(columns))]
                     insert_query = f"""
-                        INSERT INTO spatial_ref_sys ({', '.join(columns)})
+                        INSERT INTO spatial_ref_sys ({', '.join(f'"{col}"' for col in columns)})
                         VALUES ({', '.join(placeholders)})
                     """
+                    debug(f"Inserting new entry for srid {srid}: {insert_query}")
                     await dest_conn.execute(insert_query, *source_entry.values())
                     inserts += 1
                 elif source_entry != dest_dict[srid]:
@@ -736,6 +739,7 @@ class APIConfig(BaseModel):
                             proj4text = $4::text
                         WHERE srid = $5::integer
                     """
+                    debug(f"Updating entry for srid {srid}: {update_query}")
                     await dest_conn.execute(update_query, 
                         source_entry['auth_name'],
                         source_entry['auth_srid'],
@@ -754,7 +758,6 @@ class APIConfig(BaseModel):
             return 0
 
 
-
     async def push_changes_to_all(self):
         for pool_entry in self.POOL:
             if pool_entry['ts_id'] != os.environ.get('TS_ID'):