Auto-update: Tue Jul 30 15:40:56 PDT 2024
This commit is contained in:
parent
612f2b31c0
commit
4d94f62c1b
1 changed files with 22 additions and 5 deletions
|
@ -11,6 +11,7 @@ import asyncio
|
|||
import asyncpg
|
||||
import socket
|
||||
import traceback
|
||||
from tqdm.asyncio import tqdm
|
||||
import reverse_geocoder as rg
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict, List, Optional, Tuple, Union, TypeVar
|
||||
|
@ -600,7 +601,7 @@ class APIConfig(BaseModel):
|
|||
WHERE schemaname = 'public'
|
||||
""")
|
||||
|
||||
for table in tables:
|
||||
async for table in tqdm(tables, desc="Syncing tables", unit="table"):
|
||||
table_name = table['tablename']
|
||||
try:
|
||||
if table_name == 'spatial_ref_sys':
|
||||
|
@ -608,7 +609,6 @@ class APIConfig(BaseModel):
|
|||
total_changes += changes_count
|
||||
info(f"Synced spatial_ref_sys: {changes_count} changes. Total so far: {total_changes}")
|
||||
else:
|
||||
# Existing code for other tables
|
||||
last_synced_version = await self.get_last_synced_version(dest_conn, table_name, source_id)
|
||||
|
||||
changes = await source_conn.fetch(f"""
|
||||
|
@ -641,10 +641,17 @@ class APIConfig(BaseModel):
|
|||
err(f"Error during sync process: {str(e)}")
|
||||
err(f"Traceback: {traceback.format_exc()}")
|
||||
|
||||
info(f"Sync summary:")
|
||||
info(f" Total changes: {total_changes}")
|
||||
info(f" Tables synced: {len(tables)}")
|
||||
info(f" Source: {source_id} ({source_ip})")
|
||||
info(f" Destination: {dest_id} ({dest_ip})")
|
||||
|
||||
return total_changes
|
||||
|
||||
|
||||
|
||||
|
||||
async def apply_batch_changes(self, conn, table_name, changes):
|
||||
if not changes:
|
||||
return 0
|
||||
|
@ -723,10 +730,19 @@ class APIConfig(BaseModel):
|
|||
# Update existing entry
|
||||
update_query = f"""
|
||||
UPDATE spatial_ref_sys
|
||||
SET {', '.join(f"{col} = ${i+1}" for i, col in enumerate(source_entry.keys()) if col != 'srid')}
|
||||
WHERE srid = ${len(source_entry)}
|
||||
SET auth_name = $1::text,
|
||||
auth_srid = $2::integer,
|
||||
srtext = $3::text,
|
||||
proj4text = $4::text
|
||||
WHERE srid = $5::integer
|
||||
"""
|
||||
await dest_conn.execute(update_query, *[v for k, v in source_entry.items() if k != 'srid'], srid)
|
||||
await dest_conn.execute(update_query,
|
||||
source_entry['auth_name'],
|
||||
source_entry['auth_srid'],
|
||||
source_entry['srtext'],
|
||||
source_entry['proj4text'],
|
||||
srid
|
||||
)
|
||||
updates += 1
|
||||
|
||||
info(f"spatial_ref_sys sync complete. Inserts: {inserts}, Updates: {updates}")
|
||||
|
@ -738,6 +754,7 @@ 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'):
|
||||
|
|
Loading…
Reference in a new issue