diff --git a/lib/domain/repositories/pokemon_repository.dart b/lib/domain/repositories/pokemon_repository.dart new file mode 100644 index 0000000..4aeedf3 --- /dev/null +++ b/lib/domain/repositories/pokemon_repository.dart @@ -0,0 +1,22 @@ +import '../entities/pokemon.dart'; + +/// Contrat d'accès aux données Pokémon. L'UI et le domaine ne connaissent que cette interface. +abstract interface class PokemonRepository { + /// Tous les Pokémon (DB locale d'abord, complétée par l'API si nécessaire). + Future> getAll(); + + /// Un Pokémon par id (DB d'abord, sinon API + mise en cache). `null` si introuvable. + Future getById(int id); + + /// Insère/remplace une liste de Pokémon. + Future saveAll(List pokemons); + + /// Met à jour un Pokémon existant. + Future update(Pokemon pokemon); + + /// Nombre de Pokémon attrapés. + Future caughtCount(); + + /// Nombre de Pokémon vus. + Future seenCount(); +}