1
0
mirror of https://github.com/ijaric/voice_assistant.git synced 2025-05-24 14:33:26 +00:00

build: joke handler & app

This commit is contained in:
Artem Litvinov 2023-10-02 20:08:31 +01:00
parent a7afc8fa7b
commit 18abf87598
4 changed files with 29 additions and 25 deletions

View File

@ -1,6 +1,4 @@
from .health import * from .health import basic_router
from .joke import get_joke, joke_router from .joke import JokeHandler
__all__ = [ __all__ = ["JokeHandler", "basic_router"]
"basic_router", "joke_router", "get_joke"
]

View File

@ -1,22 +1,27 @@
import fastapi import fastapi
import lib.api.v1.schemas as api_shemas import lib.api.v1.schemas as api_shemas
import lib.joke.services as services import lib.joke.services as joke_services
joke_router = fastapi.APIRouter()
@joke_router.get( class JokeHandler:
"/", router = fastapi.APIRouter()
response_model=api_shemas.JokeResponse,
summary="Random joke", def __init__(self, joke_service: joke_services.JokeService):
description="Return a random joke from a free API.", self.joke_service = joke_service
) self.router = fastapi.APIRouter()
async def get_joke(joke_service: services.JokeService): self.router.add_api_route(
joke = await joke_service.get_joke() "/",
if joke: self.get_joke,
return api_shemas.JokeResponse( methods=["GET"],
joke=f"{joke.setup}\n{joke.punchline}", id=joke.id_field, category=joke.type_field summary="Статус работоспособности",
description="Проверяет доступность сервиса FastAPI.",
) )
return api_shemas.JokeResponse(joke="No joke for you!", id=0, category="No category") async def get_joke(self):
joke = await self.joke_service.get_joke()
if joke:
return api_shemas.JokeResponse(
joke=f"{joke.setup}\n{joke.punchline}", id=joke.id_field, category=joke.type_field
)
return api_shemas.JokeResponse(joke="No joke for you!", id=0, category="No category")

View File

@ -11,6 +11,7 @@ import lib.app.errors as app_errors
import lib.app.settings as app_settings import lib.app.settings as app_settings
import lib.app.split_settings as app_split_settings import lib.app.split_settings as app_split_settings
import lib.clients as clients import lib.clients as clients
import lib.joke.repository as joke_repository
import lib.joke.services as joke_services import lib.joke.services as joke_services
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@ -46,7 +47,6 @@ class Application:
logger.info("Initializing global clients") logger.info("Initializing global clients")
postgres_client = clients.AsyncPostgresClient(settings=settings) postgres_client = clients.AsyncPostgresClient(settings=settings)
http_client = clients.get_async_http_session()
disposable_resources.append( disposable_resources.append(
DisposableResource( DisposableResource(
@ -62,6 +62,7 @@ class Application:
# Repositories # Repositories
logger.info("Initializing repositories") logger.info("Initializing repositories")
jk_repository = joke_repository.JokeRepository(async_session=postgres_client.get_async_session())
# Caches # Caches
@ -70,13 +71,13 @@ class Application:
# Services # Services
logger.info("Initializing services") logger.info("Initializing services")
jk_serivces = joke_services.JokeService(http_client=http_client) jk_serivces = joke_services.JokeService(jk_repository)
# Handlers # Handlers
logger.info("Initializing handlers") logger.info("Initializing handlers")
liveness_probe_handler = api_v1_handlers.basic_router liveness_probe_handler = api_v1_handlers.basic_router
joke_handler = api_v1_handlers.get_joke(joke_service=jk_serivces) joke_handler = api_v1_handlers.JokeHandler(joke_service=jk_serivces).router
logger.info("Creating application") logger.info("Creating application")
@ -90,6 +91,7 @@ class Application:
# Routes # Routes
fastapi_app.include_router(liveness_probe_handler, prefix="/api/v1/health", tags=["health"]) fastapi_app.include_router(liveness_probe_handler, prefix="/api/v1/health", tags=["health"])
fastapi_app.include_router(joke_handler, prefix="/test", tags=["some"])
application = Application( application = Application(
settings=settings, settings=settings,

View File

@ -1,4 +1,3 @@
from .httpx import get_async_http_session
from .postgres import AsyncPostgresClient from .postgres import AsyncPostgresClient
__all__ = ["AsyncPostgresClient", "get_async_http_session"] __all__ = ["AsyncPostgresClient"]