AOSSIE-Org / AOSSIE-Org/PictoPy
BUG: Orphaned Rows in image_embeddings and semantic_labels on Image Deletion
- Ngôn ngữ chính
- Python
- Star
- 284
- Fork
- 680
- Merge trung bình
- 7 ngày 5 giờ
- Pull request đã merge (30 ngày)
- 4
Mô tả
### Is there an existing issue for this?
- [x] I have searched the existing issues
### What happened?
Files affected:
- `backend/app/database/image_embeddings.py`
- `backend/app/database/semantic_labels.py`
What is the problem?
Both database modules define foreign key constraints with `ON DELETE CASCADE` referencing the `images(id)` column. This is meant to ensure that when an image is deleted, its corresponding embeddings and semantic labels are deleted automatically.
However, both modules initialize database connections using `_connect()` from `app.database.images` which does not execute `PRAGMA foreign_keys = ON;`. Because SQLite disables foreign keys by default, deleting an image leaves **orphaned embeddings and semantic labels** in the database forever.
Proposed Fix:
Refactor both modules to use the `get_db_connection()` context manager from `app.database.connection` which enforces foreign key constraints correctly.
I wish to work on this issue!
### Record
- [x] I agree to follow this project's Code of Conduct
Hướng dẫn đóng góp
Hướng nghiên cứu
Read backend/app/database/image_embeddings.py and backend/app/database/semantic_labels.py, then inspect get_db_connection() in app.database.connection and the current _connect() usage from app.database.images. Replace the connection approach as described and verify that deleting an image also removes its embeddings and semantic labels without leaving orphaned rows.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- python, sqlite
- Lĩnh vực
- database
- Loại issue
- Lỗi
- Độ khó
- 2/5
- Thời gian dự kiến
- 1-3 giờ
- Mức độ hoạt động
- Ít trao đổi
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức phù hợp với người mới
- 78/100