Commit Graph

12 Commits

Author SHA1 Message Date
a4301140d8 Migration vers une forme unifiée des cargos 2025-12-30 16:49:29 +01:00
1bf34fe949 no local cache 2025-12-17 14:25:24 +01:00
68e6f528e5 debugage lazy cache 2025-12-17 07:23:25 +01:00
Claude
818d7ce31a Revue de code complète et amélioration des trois crates de cache
## Corrections de bugs

- **CRITIQUE**: Correction du bug SQL dans `pmocache/src/db.rs:get_oldest()`
  - La requête référençait des colonnes inexistantes (`source_url`, `metadata_json`)
  - Corrigé pour utiliser les bonnes colonnes de la table `asset` (`id`)

## Refactoring et simplifications

- **Factorisation majeure** dans `pmocache/src/cache.rs`:
  - Extraction de 3 méthodes helpers pour éliminer ~90 lignes de code dupliqué
    entre `add_from_url()` et `add_from_reader()`:
    - `check_cached_and_complete()`: vérification cache et intégrité
    - `check_ongoing_download()`: gestion des téléchargements en cours
    - `finalize_download()`: finalisation avec prébuffering et nettoyage
  - Les deux méthodes sont maintenant beaucoup plus lisibles et maintenables

- **Simplification** de `enforce_limit()`:
  - Utilisation de `get_file_paths()` au lieu d'itérations manuelles complexes
  - Suppression des boucles imbriquées pour une logique plus claire

- **Correction** d'import manquant: ajout de `AsyncReadExt` dans `cache.rs`

## Tests complets ajoutés

### pmocache (27 tests)
- `tests/test_db.rs`: 24 tests couvrant toutes les opérations DB
  - CRUD de base (add, get, delete, purge)
  - Gestion des métadonnées (tous types JSON)
  - Collections (get_by_collection, delete_collection)
  - LRU et éviction (get_oldest, count)
  - URLs d'origine (set_origin_url, get_origin_url)
  - Indexation par (collection, id)

- `tests/test_cache.rs`: 16 tests d'intégration du cache
  - Ajout depuis fichier, reader, URL
  - Déduplication basée sur contenu
  - Collections et gestion
  - Éviction LRU automatique
  - Purge et consolidation
  - Métadonnées et touch
  - Prébuffering et téléchargements

### pmoaudiocache (4 tests)
- `tests/test_cache.rs`: Tests spécifiques audio
  - Création et configuration
  - Collections d'albums
  - Éviction LRU avec limite

### pmocovers (6 tests)
- `tests/test_cache.rs`: Tests de cache d'images
  - Conversion WebP automatique
  - Déduplication d'images identiques
  - Gestion de collections
  - Éviction LRU

- `tests/test_webp.rs`: Tests du module WebP
  - Encodage WebP depuis différents formats
  - Redimensionnement carré avec préservation du ratio
  - Génération et mise en cache de variantes
  - Tests avec différentes tailles (portrait, landscape, carré)

## Améliorations de la couverture

- Passage de **0 test** à **37 tests** au total
- Ajout de `tempfile = "3"` comme dev-dependency dans `pmocache/Cargo.toml`
- Couverture des cas nominaux et des cas limites
- Tests d'intégration et unitaires

## Préservation des APIs

-  Aucune API publique n'a été modifiée ou cassée
-  Toutes les fonctions helpers sont privées (non exposées)
-  Les signatures publiques restent identiques
-  Rétrocompatibilité totale garantie
2025-11-06 08:43:11 +00:00
92c35116f8 la crate des playlists 2025-10-29 22:36:36 +01:00
33761f1cef Refactoring du cache pour une meilleur gestion des metadonnées 2025-10-29 22:35:10 +01:00
ecb362ae48 refactoring des caches 2025-10-25 17:46:53 +02:00
455fc4ed21 Généralisation des caches permettant de passer des reader générique et pas seulement de flux http. 2025-10-20 16:18:21 +02:00
0559a210ea Refactoring du pmoaudiocache 2025-10-17 23:19:17 +02:00
9bd0cd173b Ajout de fonctionnalité de download asynchrone au pmocache 2025-10-17 22:14:30 +02:00
082914cf8c Refactoring manuel 2025-10-17 19:28:04 +02:00
1c83416be4 Debug le menu debug 2025-10-13 11:31:14 +02:00