mirror of
https://github.com/flibusta-apps/book_library_server.git
synced 2025-12-06 15:15:36 +01:00
Update books by sequence handler
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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}",
|
||||||
|
|||||||
Reference in New Issue
Block a user