clean_db_entries
This commit is contained in:
parent
8bf95b4f38
commit
b7c3b58157
|
|
@ -77,6 +77,51 @@ def clean_debug_directories():
|
|||
|
||||
logger.info("Bereinigung der Debug-Verzeichnisse abgeschlossen.")
|
||||
|
||||
def clean_db_entries():
|
||||
"""
|
||||
Löscht alle Einträge aus der Deck-Tabelle, für die es kein entsprechendes Verzeichnis unter 'debug_images' gibt.
|
||||
"""
|
||||
debug_base_dir = 'debug_images'
|
||||
if not os.path.exists(debug_base_dir):
|
||||
logger.info(f"Debug-Verzeichnis '{debug_base_dir}' existiert nicht. Keine DB-Einträge zu bereinigen.")
|
||||
return
|
||||
|
||||
try:
|
||||
# Liste der vorhandenen Verzeichnisse unter 'debug_images'
|
||||
existing_dirs = {name for name in os.listdir(debug_base_dir)
|
||||
if os.path.isdir(os.path.join(debug_base_dir, name))}
|
||||
except Exception as e:
|
||||
logger.error(f"Fehler beim Zugriff auf Verzeichnisse in '{debug_base_dir}': {e}")
|
||||
return
|
||||
|
||||
try:
|
||||
conn = get_db_connection()
|
||||
conn.row_factory = sqlite3.Row
|
||||
cursor = conn.cursor()
|
||||
|
||||
# Alle bildid-Werte aus der Deck-Tabelle abrufen, die nicht NULL sind
|
||||
cursor.execute('SELECT DISTINCT bildid FROM Deck WHERE bildid IS NOT NULL')
|
||||
bildids = {row['bildid'] for row in cursor.fetchall()}
|
||||
|
||||
# bildid-Werte identifizieren, für die es kein Verzeichnis gibt
|
||||
missing_dirs = bildids - existing_dirs
|
||||
|
||||
if missing_dirs:
|
||||
# Einträge aus der Deck-Tabelle löschen, deren bildid keinen entsprechenden Ordner hat
|
||||
placeholders = ','.join('?' for _ in missing_dirs)
|
||||
sql = f'DELETE FROM Deck WHERE bildid IN ({placeholders})'
|
||||
cursor.execute(sql, tuple(missing_dirs))
|
||||
deleted_count = cursor.rowcount
|
||||
conn.commit()
|
||||
logger.info(f"{deleted_count} Einträge aus der Deck-Tabelle gelöscht, deren 'bildid'-Verzeichnisse fehlen.")
|
||||
else:
|
||||
logger.info("Keine DB-Einträge zu löschen; alle 'bildid'-Verzeichnisse existieren.")
|
||||
|
||||
conn.close()
|
||||
except sqlite3.Error as e:
|
||||
logger.error(f"Datenbankfehler beim Löschen von Einträgen aus der Deck-Tabelle: {e}")
|
||||
return
|
||||
|
||||
# ------
|
||||
# Endpoints
|
||||
# ------
|
||||
|
|
@ -328,3 +373,4 @@ def delete_images_by_bildid(bildid):
|
|||
if not os.path.exists(DATABASE):
|
||||
init_db()
|
||||
clean_debug_directories()
|
||||
clean_db_entries()
|
||||
Loading…
Reference in New Issue