Refactoring

This commit is contained in:
2021-12-10 16:27:10 +03:00
parent e77366d9e9
commit 1baae19702
7 changed files with 37 additions and 181 deletions

View File

@@ -9,7 +9,6 @@ from app.views.book_annotation import book_annotation_router
from app.views.translation import translation_router
from app.views.sequence import sequence_router
from app.views.sequence_info import sequence_info_router
routers = [
@@ -20,5 +19,4 @@ routers = [
book_annotation_router,
translation_router,
sequence_router,
sequence_info_router,
]

View File

@@ -4,8 +4,8 @@ from fastapi_pagination import Params
from fastapi_pagination.ext.ormar import paginate
from app.utils.pagination import CustomPage
from app.models import Sequence as SequenceDB
from app.serializers.sequence import Sequence, CreateSequence
from app.models import Sequence as SequenceDB, Book as BookDB, BookSequences as BookSequencesDB
from app.serializers.sequence import Sequence, CreateSequence, Book as SequenceBook
from app.services.sequence import SequenceTGRMSearchService
from app.depends import check_token
@@ -29,6 +29,14 @@ async def get_sequence(id: int):
return await SequenceDB.objects.get(id=id)
@sequence_router.get("/{id}/books", response_model=CustomPage[SequenceBook], dependencies=[Depends(Params)])
async def get_sequence_books(id: int):
return await paginate(
BookDB.objects.select_related(["source", "annotations", "authors"])
.filter(sequences__id=id).order_by("sequences__booksequences__position")
)
@sequence_router.post("/", response_model=Sequence)
async def create_sequence(data: CreateSequence):
return await SequenceDB.objects.create(

View File

@@ -1,48 +0,0 @@
from typing import Union
from fastapi import APIRouter, Depends, HTTPException, status
from fastapi_pagination import Params
from fastapi_pagination.ext.ormar import paginate
from app.utils.pagination import CustomPage
from app.models import Sequence as SequenceInfoDB
from app.serializers.sequence_info import SequenceInfo, CreateSequenceInfo, CreateRemoteSequenceInfo
from app.services.sequence_info import SequenceInfoCreator
from app.depends import check_token
sequence_info_router = APIRouter(
prefix="/api/v1/sequence_info",
tags=["sequence_info"],
dependencies=[Depends(check_token)],
)
@sequence_info_router.get("/", response_model=CustomPage[SequenceInfo], dependencies=[Depends(Params)])
async def get_sequence_infos():
return await paginate(
SequenceInfoDB.objects.prefetch_related(["book", "sequence"])
.select_related(["book__authors", "book__translations", "book__translations__translator"])
)
@sequence_info_router.get("/{id}", response_model=SequenceInfo)
async def get_sequence_info(id: int):
sequence_info = await SequenceInfoDB.objects.prefetch_related(["book", "sequence"]) \
.select_related(["book__authors", "book__translations", "book__translations__translator"]) \
.get_or_none(id=id)
if sequence_info is None:
raise HTTPException(status.HTTP_404_NOT_FOUND)
return sequence_info
@sequence_info_router.post("/", response_model=SequenceInfo)
async def create_sequence_info(data: Union[CreateSequenceInfo, CreateRemoteSequenceInfo]):
sequence_info = await SequenceInfoCreator.create(data)
return await SequenceInfoDB.objects.prefetch_related(["book", "sequence"]) \
.select_related(["book__authors", "book__translations", "book__translations__translator"]) \
.get(id=sequence_info.id)