Describe the feature
Overview
The current implementation of the /toggle-favourite endpoint retrieves all images from the database after updating the isFavourite flag, and then filters the target image in memory.
Although functionally correct, this introduces unnecessary database and processing overhead.
Current Implementation
After toggling the favourite status, the route executes:
image = next(
(img for img in db_get_all_images() if img["id"] == image_id), None
)
db_get_all_images() performs:
- Multiple JOIN operations
- Metadata parsing
- Tag grouping
- Dataset sorting
This entire workflow runs even though only a single image record is required.
Why This Matters
This approach:
- Scales linearly with total image count
- Increases latency for a frequently used endpoint
- Performs unnecessary joins and metadata parsing
- Couples a single-record use case with a full-collection query
As image collections grow, this can negatively impact responsiveness.
Proposed Improvement
-
Introduce a dedicated method:
db_get_image_by_id(image_id: str)
-
Query only the required record with necessary JOINs.
-
Refactor /toggle-favourite to use this optimized method instead of calling db_get_all_images().
Expected Benefits
- Reduced database load
- Improved scalability
- Cleaner endpoint behavior
- Better separation of concerns
I would be happy to implement this improvement.
Record
Describe the feature
Overview
The current implementation of the
/toggle-favouriteendpoint retrieves all images from the database after updating theisFavouriteflag, and then filters the target image in memory.Although functionally correct, this introduces unnecessary database and processing overhead.
Current Implementation
After toggling the favourite status, the route executes:
db_get_all_images()performs:This entire workflow runs even though only a single image record is required.
Why This Matters
This approach:
As image collections grow, this can negatively impact responsiveness.
Proposed Improvement
Introduce a dedicated method:
Query only the required record with necessary JOINs.
Refactor
/toggle-favouriteto use this optimized method instead of callingdb_get_all_images().Expected Benefits
I would be happy to implement this improvement.
Record