diff --git a/app/routers/v1.py b/app/routers/v1.py index 517bc625..1b22429c 100644 --- a/app/routers/v1.py +++ b/app/routers/v1.py @@ -2,50 +2,77 @@ from fastapi import APIRouter from ..services.location.jhu import get_category +from ..services.location import LocationService V1 = APIRouter() -@V1.get("/all") -async def all_categories(): - """Get all the categories.""" - confirmed = await get_category("confirmed") - deaths = await get_category("deaths") - recovered = await get_category("recovered") +class OutputsAbstract(): + def showOutput(self): + raise NotImplemented() - return { - # Data. - "confirmed": confirmed, - "deaths": deaths, - "recovered": recovered, - # Latest. - "latest": { - "confirmed": confirmed["latest"], - "deaths": deaths["latest"], - "recovered": recovered["latest"], - }, - } +class Bridge(OutputsAbstract): + def __init__(self) -> None: + self.implemntation = None -@V1.get("/confirmed") -async def get_confirmed(): - """Confirmed cases.""" - confirmed_data = await get_category("confirmed") - return confirmed_data +class OutputAll(Bridge): + def __init__(self, implementation: LocationService): + self.implemntation = implementation + @V1.get("/all") + async def showOutput(): + """Get all the categories.""" + confirmed = await get_category("confirmed") + deaths = await get_category("deaths") + recovered = await get_category("recovered") -@V1.get("/deaths") -async def get_deaths(): - """Total deaths.""" - deaths_data = await get_category("deaths") + return { + # Data. + "confirmed": confirmed, + "deaths": deaths, + "recovered": recovered, + # Latest. + "latest": { + "confirmed": confirmed["latest"], + "deaths": deaths["latest"], + "recovered": recovered["latest"], + }, + } - return deaths_data +class OutputConfirmed(Bridge): + def __init__(self, implementation: LocationService): + self.implemntation = implementation -@V1.get("/recovered") -async def get_recovered(): - """Recovered cases.""" - recovered_data = await get_category("recovered") + @V1.get("/confirmed") + async def showOutput(): + """Confirmed cases.""" + confirmed_data = await get_category("confirmed") - return recovered_data + return confirmed_data + + +class OutputDeaths(Bridge): + def __init__(self, implementation: LocationService): + self.implemntation = implementation + + @V1.get("/deaths") + async def showOutput(): + """Total deaths.""" + deaths_data = await get_category("deaths") + + return deaths_data + + +class OutputRecovered(Bridge): + def __init__(self, implementation: LocationService): + self.implemntation = implementation + + @V1.get("/recovered") + async def showOutput(): + """Recovered cases.""" + recovered_data = await get_category("recovered") + + return recovered_data