Update books by sequence handler

This commit is contained in:
2023-06-06 20:32:36 +02:00
parent fa04533a74
commit 52725ae126
2 changed files with 18 additions and 3 deletions

View File

@@ -1,6 +1,7 @@
from datetime import date from datetime import date
from typing import Optional from typing import Optional
from fastapi_pagination import Page
from pydantic import BaseModel from pydantic import BaseModel
@@ -29,3 +30,7 @@ class Book(BaseModel):
authors: list[Author] authors: list[Author]
translators: list[Author] translators: list[Author]
annotation_exists: bool annotation_exists: bool
class PageWithSequence(Page[Book]):
sequence: Sequence | None

View File

@@ -9,7 +9,7 @@ from app.depends import check_token, get_allowed_langs
from app.models import Book as BookDB from app.models import Book as BookDB
from app.models import Sequence as SequenceDB from app.models import Sequence as SequenceDB
from app.serializers.sequence import Book as SequenceBook from app.serializers.sequence import Book as SequenceBook
from app.serializers.sequence import Sequence from app.serializers.sequence import PageWithSequence, Sequence
from app.services.sequence import GetRandomSequenceService, SequenceMeiliSearchService from app.services.sequence import GetRandomSequenceService, SequenceMeiliSearchService
from app.utils.transformer import dict_transformer from app.utils.transformer import dict_transformer
@@ -49,13 +49,13 @@ async def get_sequence(id: int):
@sequence_router.get( @sequence_router.get(
"/{id}/books", "/{id}/books",
response_model=Page[SequenceBook], response_model=PageWithSequence,
dependencies=[Depends(Params)], dependencies=[Depends(Params)],
) )
async def get_sequence_books( async def get_sequence_books(
id: int, allowed_langs: Annotated[list[str], Depends(get_allowed_langs)] id: int, allowed_langs: Annotated[list[str], Depends(get_allowed_langs)]
): ):
return await paginate( page: Page[SequenceBook] = await paginate(
BookDB.objects.prefetch_related(["source"]) BookDB.objects.prefetch_related(["source"])
.select_related(["annotations", "authors", "translators"]) .select_related(["annotations", "authors", "translators"])
.filter(sequences__id=id, lang__in=allowed_langs, is_deleted=False) .filter(sequences__id=id, lang__in=allowed_langs, is_deleted=False)
@@ -63,6 +63,16 @@ async def get_sequence_books(
transformer=dict_transformer, transformer=dict_transformer,
) )
sequence = await SequenceDB.objects.get_or_none(id=id)
return PageWithSequence(
items=page.items,
total=page.total,
page=page.page,
size=page.size,
sequence=sequence, # type: ignore
)
@sequence_router.get( @sequence_router.get(
"/search/{query}", "/search/{query}",