import 'package:sqflite_common/sqflite.dart'; import '../models/pokemon.dart'; // Permet de gérer la base de données class PokedexDatabase { static Database? database; static Future initDatabase() async { database = await openDatabase( "pokedex.db", // Nom de la base de données version: 1, // Version de la base de données, permet de gérer les migrations onCreate: (db, version) async { // Fonction qui sera appelée lors de la création de la base de données // Création de la table pokemon avec les colonnes id, name, type1 et type2 await db.execute("CREATE TABLE IF NOT EXISTS pokemon (id INTEGER PRIMARY KEY NOT NULL, name TEXT NOT NULL, type1 TEXT NOT NULL, type2 TEXT)"); }, ); } // Méthode qui permet de récupérer la base de données static Future getDatabase() async { if (database == null) { await initDatabase(); // On initialise la base de données si elle n'est pas encore initialisée } return database!; } // Méthode qui permet d'insérer un Pokémon dans la base de données static Future insertPokemon(Pokemon pokemon) async { Database database = await getDatabase(); await database.insert("pokemon", pokemon.toJson()); } // Méthode qui permet de récupérer la liste des pokémons dans la base de données static Future> getPokemonList() async { Database database = await getDatabase(); var response = await database.query("pokemon"); return response.map((pokemon) => Pokemon.fromJson(pokemon)).toList(); } // Méthode qui permet de supprimer un Pokémon de la base de données static Future deletePokemon(int id) async { Database database = await getDatabase(); await database.delete("pokemon", where: "id = ?", whereArgs: [id]); } // Méthode qui permet de supprimer tous les pokémons de la base de données static Future deleteAllPokemon() async { Database database = await getDatabase(); await database.delete("pokemon"); } // Méthode qui permet de mettre à jour un Pokémon dans la base de données static Future updatePokemon(Pokemon pokemon) async { Database database = await getDatabase(); await database.update("pokemon", pokemon.toJson(), where: "id = ?", whereArgs: [pokemon.id]); } // Méthode qui permet de récupérer un Pokémon dans la base de données à partir de son ID static Future getPokemon(int id) async { Database database = await getDatabase(); List> pokemonList = await database.query("pokemon", where: "id = ?", whereArgs: [id]); if (pokemonList.isEmpty) { return null; } return Pokemon.fromJson(pokemonList.first); } }