Skip to content

Commit 9caa450

Browse files
authored
fix(database): improve SQLite error handling and logging in images.py and folders.py (AOSSIE-Org#1316)
* fix(database): improve SQLite error handling and logging in images.py and folders.py Resolves AOSSIE-Org#1307 * fix(database): add logger.error() before rollback in folders.py exception handlers Each sqlite3.Error handler now logs the failure before rolling back, ensuring consistent error reporting across all database modules. Addresses CodeRabbit review on AOSSIE-Org#1316
1 parent 584f333 commit 9caa450

2 files changed

Lines changed: 22 additions & 15 deletions

File tree

backend/app/database/folders.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
import uuid
44
from typing import List, Tuple, Dict, Optional
55
from app.config.settings import DATABASE_PATH
6+
from app.logging.setup_logging import get_logger
7+
8+
# Initialize logger
9+
logger = get_logger(__name__)
610

711
# Type definitions
812
FolderId = str
@@ -51,7 +55,8 @@ def db_insert_folders_batch(folders_data: List[FolderData]) -> None:
5155
folders_data,
5256
)
5357
conn.commit()
54-
except Exception as e:
58+
except sqlite3.Error as e:
59+
logger.error(f"Error inserting folders batch: {e}")
5560
conn.rollback()
5661
raise e
5762
finally:
@@ -180,7 +185,8 @@ def db_delete_folders_batch(folder_ids: List[FolderId]) -> int:
180185
deleted_count = cursor.rowcount
181186
conn.commit()
182187
return deleted_count
183-
except Exception as e:
188+
except sqlite3.Error as e:
189+
logger.error(f"Error deleting folders batch: {e}")
184190
conn.rollback()
185191
raise e
186192
finally:
@@ -309,7 +315,8 @@ def db_update_ai_tagging_batch(
309315
updated_count = cursor.rowcount
310316
conn.commit()
311317
return updated_count
312-
except Exception as e:
318+
except sqlite3.Error as e:
319+
logger.error(f"Error updating AI tagging batch: {e}")
313320
conn.rollback()
314321
raise e
315322
finally:

backend/app/database/images.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ def db_bulk_insert_images(image_records: List[ImageRecord]) -> bool:
138138
)
139139
conn.commit()
140140
return True
141-
except Exception as e:
141+
except sqlite3.Error as e:
142142
logger.error(f"Error inserting image records: {e}")
143143
conn.rollback()
144144
return False
@@ -244,7 +244,7 @@ def db_get_all_images(tagged: Union[bool, None] = None) -> List[dict]:
244244

245245
return images
246246

247-
except Exception as e:
247+
except sqlite3.Error as e:
248248
logger.error(f"Error getting all images: {e}")
249249
return []
250250
finally:
@@ -319,7 +319,7 @@ def db_update_image_tagged_status(image_id: ImageId, is_tagged: bool = True) ->
319319
)
320320
conn.commit()
321321
return cursor.rowcount > 0
322-
except Exception as e:
322+
except sqlite3.Error as e:
323323
logger.error(f"Error updating image tagged status: {e}")
324324
conn.rollback()
325325
return False
@@ -353,7 +353,7 @@ def db_insert_image_classes_batch(image_class_pairs: List[ImageClassPair]) -> bo
353353
)
354354
conn.commit()
355355
return True
356-
except Exception as e:
356+
except sqlite3.Error as e:
357357
logger.error(f"Error inserting image classes: {e}")
358358
conn.rollback()
359359
return False
@@ -391,7 +391,7 @@ def db_get_images_by_folder_ids(
391391
folder_ids,
392392
)
393393
return cursor.fetchall()
394-
except Exception as e:
394+
except sqlite3.Error as e:
395395
logger.error(f"Error getting images by folder IDs: {e}")
396396
return []
397397
finally:
@@ -425,7 +425,7 @@ def db_delete_images_by_ids(image_ids: List[ImageId]) -> bool:
425425
conn.commit()
426426
logger.info(f"Deleted {cursor.rowcount} obsolete image(s) from database")
427427
return True
428-
except Exception as e:
428+
except sqlite3.Error as e:
429429
logger.error(f"Error deleting images: {e}")
430430
conn.rollback()
431431
return False
@@ -450,7 +450,7 @@ def db_toggle_image_favourite_status(image_id: str) -> bool:
450450
)
451451
conn.commit()
452452
return cursor.rowcount > 0
453-
except Exception as e:
453+
except sqlite3.Error as e:
454454
logger.error(f"Database error: {e}")
455455
conn.rollback()
456456
return False
@@ -570,7 +570,7 @@ def db_get_images_by_date_range(
570570

571571
return images
572572

573-
except Exception as e:
573+
except sqlite3.Error as e:
574574
logger.error(f"Error getting images by date range: {e}")
575575
return []
576576
finally:
@@ -664,7 +664,7 @@ def db_get_images_near_location(
664664

665665
return images
666666

667-
except Exception as e:
667+
except sqlite3.Error as e:
668668
logger.error(f"Error getting images near location: {e}")
669669
return []
670670
finally:
@@ -735,7 +735,7 @@ def db_get_images_by_year_month(year: int, month: int) -> List[dict]:
735735

736736
return images
737737

738-
except Exception as e:
738+
except sqlite3.Error as e:
739739
logger.error(f"Error getting images by year/month: {e}")
740740
return []
741741
finally:
@@ -802,7 +802,7 @@ def db_get_images_with_location() -> List[dict]:
802802

803803
return images
804804

805-
except Exception as e:
805+
except sqlite3.Error as e:
806806
logger.error(f"Error fetching images with location: {e}")
807807
return []
808808
finally:
@@ -867,7 +867,7 @@ def db_get_all_images_for_memories() -> List[dict]:
867867

868868
return images
869869

870-
except Exception as e:
870+
except sqlite3.Error as e:
871871
logger.error(f"Error getting images from database: {e}")
872872
return []
873873
finally:

0 commit comments

Comments
 (0)