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:
parent
a7afc8fa7b
commit
18abf87598
|
@ -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"
|
|
||||||
]
|
|
||||||
|
|
|
@ -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")
|
||||||
|
|
|
@ -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,
|
||||||
|
|
|
@ -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"]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user