/*
    Como primer ejemplo los datos se conseguiran de un 
    "JSON" el cual funciona como una Base de Datos.
*/
import Data from "./infoPokemons.json";

class Pokedex {
    /*
        Se crea el método para conseguir la información de un 
        "Pokémon".
    */
    getInfo(name) {
        // buscamos la data referente al Pokémon
        const DATA = Data[name] || null;
        // Decidimos que mensaje mostrar
        const MESSAGE = DATA || `El pokémon ${name} no existe`;
        // Pintamos el mensaje
        console.log(MESSAGE);
    }
}

// Creamos la instancia de la clase "Pokedex"
const POKEDEX = new Pokedex();

// Solicitamos la data de charmander
POKEDEX.getInfo("charmander");

// Salida
// { name: "Charmander", type: "Fire", evolutions: ["Charmeleon", "Chrarizar"]};

//==============================================================//

/*
    Utilizando el código anterior realizaremos un cambio con el
    que los datos se conseguirán desde un "API" pero al implementar 
    estos cambios no tenemos que afectar la forma en la que se esta 
    interactuando con la clase Pokedex 🤯.
*/
class Pokedex {
    /*
        Se utiliza el mismo método getInfo se recibe los mismos parametros
        pero su logica interna cambio.
    */
    getInfo(name) {
        // Se realizan cambios para conseguir la data desde la API.
        fetch(`https://workshop-mongo.herokuapp.com/pokemon/name/${name}`)
            .then((data) => data.json())
            .then((data) => {
                // buscamos la data referente al Pokémon
                const [DATA = null] = Data;
                // Decidimos que mensaje mostrar
                const MESSAGE = DATA || `El pokémon ${name} no existe`;
                // Pintamos el mensaje
                console.log(MESSAGE);
            });
    }
}

// Creamos la instancia de la clase "Pokedex"
const POKEDEX = new Pokedex();

// Solicitamos la data de charmander
POKEDEX.getInfo("charmander");

// Salida
// { name: "Charmander", type: "Fire", evolutions: ["Charmeleon", "Chrarizar"]};