Auto-update: Tue Jul 30 15:59:24 PDT 2024
This commit is contained in:
parent
f76823c668
commit
f25f03bd6e
1 changed files with 10 additions and 7 deletions
|
@ -651,7 +651,6 @@ class APIConfig(BaseModel):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async def apply_batch_changes(self, conn, table_name, changes):
|
async def apply_batch_changes(self, conn, table_name, changes):
|
||||||
if not changes:
|
if not changes:
|
||||||
return 0
|
return 0
|
||||||
|
@ -666,23 +665,26 @@ class APIConfig(BaseModel):
|
||||||
|
|
||||||
if id_exists:
|
if id_exists:
|
||||||
insert_query = f"""
|
insert_query = f"""
|
||||||
INSERT INTO "{table_name}" ({', '.join(columns)})
|
INSERT INTO "{table_name}" ({', '.join(f'"{col}"' for col in columns)})
|
||||||
VALUES ({', '.join(placeholders)})
|
VALUES ({', '.join(placeholders)})
|
||||||
ON CONFLICT (id) DO UPDATE SET
|
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:
|
else:
|
||||||
# For tables without 'id', use all columns as conflict target
|
# For tables without 'id', use all columns as conflict target
|
||||||
insert_query = f"""
|
insert_query = f"""
|
||||||
INSERT INTO "{table_name}" ({', '.join(columns)})
|
INSERT INTO "{table_name}" ({', '.join(f'"{col}"' for col in columns)})
|
||||||
VALUES ({', '.join(placeholders)})
|
VALUES ({', '.join(placeholders)})
|
||||||
ON CONFLICT DO NOTHING
|
ON CONFLICT DO NOTHING
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
debug(f"Generated insert query for {table_name}: {insert_query}")
|
||||||
|
|
||||||
# Execute the insert for each change
|
# Execute the insert for each change
|
||||||
affected_rows = 0
|
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]
|
values = [change[col] for col in columns]
|
||||||
|
debug(f"Executing query for {table_name} with values: {values}")
|
||||||
result = await conn.execute(insert_query, *values)
|
result = await conn.execute(insert_query, *values)
|
||||||
affected_rows += int(result.split()[-1])
|
affected_rows += int(result.split()[-1])
|
||||||
|
|
||||||
|
@ -721,9 +723,10 @@ class APIConfig(BaseModel):
|
||||||
columns = source_entry.keys()
|
columns = source_entry.keys()
|
||||||
placeholders = [f'${i+1}' for i in range(len(columns))]
|
placeholders = [f'${i+1}' for i in range(len(columns))]
|
||||||
insert_query = f"""
|
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)})
|
VALUES ({', '.join(placeholders)})
|
||||||
"""
|
"""
|
||||||
|
debug(f"Inserting new entry for srid {srid}: {insert_query}")
|
||||||
await dest_conn.execute(insert_query, *source_entry.values())
|
await dest_conn.execute(insert_query, *source_entry.values())
|
||||||
inserts += 1
|
inserts += 1
|
||||||
elif source_entry != dest_dict[srid]:
|
elif source_entry != dest_dict[srid]:
|
||||||
|
@ -736,6 +739,7 @@ class APIConfig(BaseModel):
|
||||||
proj4text = $4::text
|
proj4text = $4::text
|
||||||
WHERE srid = $5::integer
|
WHERE srid = $5::integer
|
||||||
"""
|
"""
|
||||||
|
debug(f"Updating entry for srid {srid}: {update_query}")
|
||||||
await dest_conn.execute(update_query,
|
await dest_conn.execute(update_query,
|
||||||
source_entry['auth_name'],
|
source_entry['auth_name'],
|
||||||
source_entry['auth_srid'],
|
source_entry['auth_srid'],
|
||||||
|
@ -754,7 +758,6 @@ class APIConfig(BaseModel):
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async def push_changes_to_all(self):
|
async def push_changes_to_all(self):
|
||||||
for pool_entry in self.POOL:
|
for pool_entry in self.POOL:
|
||||||
if pool_entry['ts_id'] != os.environ.get('TS_ID'):
|
if pool_entry['ts_id'] != os.environ.get('TS_ID'):
|
||||||
|
|
Loading…
Add table
Reference in a new issue