import axios from "axios";
import { CityData } from "./interfaces/CityData";
import { StateData } from "./interfaces/StateData";
import { RegionData } from "./interfaces/RegionData";
import dotenv from 'dotenv';

dotenv.config();

const IBGE_BASE_URL = process.env.IBGE_BASE_URL;

const IBGE = {
  async getPopulationByCity(cityCode: number): Promise<CityData> {
    try {
      const response = await axios.get<CityData>(

        `${IBGE_BASE_URL}/localidades/municipios/${cityCode}`
      );
      return response.data;
    } catch (error: any) {
      throw new Error(`Erro ao acessar os dados do IBGE: ${error.message}`);
    }
  },
  async getStates(): Promise<StateData[]> {
    const response = await axios.get(`${IBGE_BASE_URL}/localidades/estados`);
    return response.data;
  },
  async getCitiesByState(stateId: number): Promise<CityData[]> {
    const response = await axios.get(`${IBGE_BASE_URL}/localidades/estados/${stateId}/municipios`);
    return response.data;
  },
  async getRegions(): Promise<RegionData[]> {
    try {
      const response = await axios.get<RegionData[]>(`${IBGE_BASE_URL}/localidades/regioes`);
      return response.data;
    } catch (error: any) {
      throw new Error(`Erro ao obter a lista de regiões: ${error.message}`);
    }
  },


};

export default IBGE;
