Untitled

 avatar
unknown
plain_text
a month ago
1.8 kB
3
Indexable
def get_global_last_sync_time(self):
        """
        Veritabanındaki tüm tabloları tarar ve en son senkronizasyon tarihini bulur.
        """
        try:
            # Veritabanındaki tüm tablo isimlerini al
            query = "SELECT name FROM sqlite_master WHERE type='table';"
            tables = self.local_db.execute(query, fetch_all=True)

            # Tablolar arasında en son senkronizasyon tarihini bulmak için değişken
            latest_sync_time = None

            # Her tabloyu kontrol et
            for table in tables:
                table_name = table["name"]

                # Tablo içinde last_synced_at sütunu varsa kontrol et
                check_column_query = f"PRAGMA table_info({table_name});"
                columns = self.local_db.execute(check_column_query, fetch_all=True)

                if any(column["name"] == "last_synced_at" for column in columns):
                    # Tablo içindeki en son senkronizasyon zamanını al
                    sync_query = f"SELECT MAX(last_synced_at) as last_synced_at FROM {table_name};"
                    result = self.local_db.execute(sync_query, fetch_one=True)

                    # Tarihi güncelle
                    last_sync_time = result.get("last_synced_at")
                    if last_sync_time:
                        if latest_sync_time is None or last_sync_time > latest_sync_time:
                            latest_sync_time = last_sync_time

            # Hiçbir tarih bulunamazsa varsayılan değer
            return latest_sync_time if latest_sync_time else "1970-01-01T00:00:00Z"

        except Exception as e:
            print(f"Error while fetching global last sync time: {e}")
            return "1970-01-01T00:00:00Z"
Editor is loading...
Leave a Comment