diff --git a/src/app/views/__init__.py b/src/app/views/__init__.py new file mode 100644 index 0000000..f8d3cf6 --- /dev/null +++ b/src/app/views/__init__.py @@ -0,0 +1,6 @@ +from .healthcheck import healthcheck_router +from .languages import languages_router +from .users import users_router + + +__all__ = ["healthcheck_router", "languages_router", "users_router"] diff --git a/src/app/views/healthcheck.py b/src/app/views/healthcheck.py new file mode 100644 index 0000000..cf3c892 --- /dev/null +++ b/src/app/views/healthcheck.py @@ -0,0 +1,9 @@ +from fastapi import APIRouter + + +healthcheck_router = APIRouter(tags=["healthcheck"]) + + +@healthcheck_router.get("/healthcheck") +async def healthcheck(): + return "Ok!" diff --git a/src/app/views/languages.py b/src/app/views/languages.py new file mode 100644 index 0000000..b4146d2 --- /dev/null +++ b/src/app/views/languages.py @@ -0,0 +1,33 @@ +from fastapi import APIRouter, Depends, HTTPException, status + +from app.depends import check_token +from app.models import Language +from app.serializers import ( + CreateLanguage, + LanguageDetail, +) + + +languages_router = APIRouter( + prefix="/languages", tags=["languages"], dependencies=[Depends(check_token)] +) + + +@languages_router.get("/", response_model=list[LanguageDetail]) +async def get_languages(): + return await Language.objects.all() + + +@languages_router.get("/{code}", response_model=LanguageDetail) +async def get_language(code: str): + language = await Language.objects.get_or_none(code=code) + + if language is None: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND) + + return language + + +@languages_router.post("/", response_model=LanguageDetail) +async def create_language(data: CreateLanguage): + return await Language.objects.create(**data.dict()) diff --git a/src/app/views.py b/src/app/views/users.py similarity index 70% rename from src/app/views.py rename to src/app/views/users.py index 353f2c4..e1e1774 100644 --- a/src/app/views.py +++ b/src/app/views/users.py @@ -8,10 +8,8 @@ from fastapi_pagination.ext.ormar import paginate from redis import asyncio as aioredis from app.depends import check_token -from app.models import Language, User, UserActivity +from app.models import User, UserActivity from app.serializers import ( - CreateLanguage, - LanguageDetail, UserCreateOrUpdate, UserDetail, UserUpdate, @@ -70,36 +68,3 @@ async def update_activity(user_id: int) -> None: activity.updated = datetime.now() await activity.update() - - -languages_router = APIRouter( - prefix="/languages", tags=["languages"], dependencies=[Depends(check_token)] -) - - -@languages_router.get("/", response_model=list[LanguageDetail]) -async def get_languages(): - return await Language.objects.all() - - -@languages_router.get("/{code}", response_model=LanguageDetail) -async def get_language(code: str): - language = await Language.objects.get_or_none(code=code) - - if language is None: - raise HTTPException(status_code=status.HTTP_404_NOT_FOUND) - - return language - - -@languages_router.post("/", response_model=LanguageDetail) -async def create_language(data: CreateLanguage): - return await Language.objects.create(**data.dict()) - - -healthcheck_router = APIRouter(tags=["healthcheck"]) - - -@healthcheck_router.get("/healthcheck") -async def healthcheck(): - return "Ok!"