AOSSIE-Org / AOSSIE-Org/PictoPy
BUG: Orphaned Rows in image_embeddings and semantic_labels on Image Deletion
- 主要语言
- Python
- 星标
- 284
- 派生
- 680
- 平均合并
- 7 天 5 小时
- 30 天内合并 PR
- 4
描述
### 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
贡献指南
调研方向
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.
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- python, sqlite
- 领域
- database
- Issue 类型
- 缺陷
- 难度
- 2/5
- 预计耗时
- 1-3 小时
- 活跃度
- 冷清
- 描述清晰度
- 描述清楚
- 新手友好度
- 78/100