AOSSIE-Org / AOSSIE-Org/PictoPy

perf: avoid full table scan in toggle-favourite endpoint

Aberta
#1,223 2 comentários 0 reações 0 responsáveis Ver no GitHub
Linguagem predominante
Python
Estrelas
283
Forks
679
Merge médio
7d 2h
PRs com merge (30d)
3

Descrição

### What happened?

In `backend/app/routes/images.py`, the `/toggle-favourite` endpoint fetches **all images** from the database just to retrieve the updated favourite status of a single image:
```python
image = next(
(img for img in db_get_all_images() if img["id"] == image_id), None
)
```

This is a full table scan on every toggle action. If a user has thousands of images, this is extremely slow and wasteful.

### Why this matters
- Poor performance at scale
- Unnecessary database load on every favourite toggle
- `db_get_all_images()` is an expensive query with JOINs

### Proposed fix
Add a `db_get_image_by_id(image_id)` function to `database/images.py` and use it instead of scanning all images.

### Expected behavior
The endpoint should fetch only the single toggled image using its ID.

I'd like to fix this if maintainers agree.

Guia de contribuição

Abrir o guia de contribuição

Avaliação

Esta issue ainda não foi avaliada.

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.