Add book base info endpoint

This commit is contained in:
2023-02-01 02:57:41 +01:00
parent 8315cb870b
commit ecb997e595
3 changed files with 22 additions and 1 deletions

View File

@@ -34,6 +34,11 @@ class RemoteBook(Book):
remote_id: int
class BookBaseInfo(BaseModel):
id: int
available_types: list[str]
class BookDetail(RemoteBook):
sequences: list[Sequence]
genres: list[BookGenre]

View File

@@ -30,6 +30,12 @@ class BookTGRMSearchService(TRGMSearchService):
GET_OBJECT_IDS_QUERY = GET_OBJECT_IDS_QUERY
class BookBaseInfoFilterService(BaseFilterService):
MODEL_CLASS = BookDB
PREFETCH_RELATED = []
SELECT_RELATED = []
class BookFilterService(BaseFilterService):
MODEL_CLASS = BookDB
PREFETCH_RELATED = ["source"]

View File

@@ -7,9 +7,10 @@ from app.depends import check_token, get_allowed_langs
from app.filters.book import get_book_filter
from app.models import Book as BookDB
from app.models import BookAnnotation as BookAnnotationDB
from app.serializers.book import Book, BookDetail, RemoteBook
from app.serializers.book import Book, BookBaseInfo, BookDetail, RemoteBook
from app.serializers.book_annotation import BookAnnotation
from app.services.book import (
BookBaseInfoFilterService,
BookFilterService,
BookMeiliSearchService,
GetRandomBookService,
@@ -38,6 +39,15 @@ async def get_books(
return await BookFilterService.get(book_filter, request.app.state.redis)
@book_router.get(
"/base/", response_model=CustomPage[BookBaseInfo], dependencies=[Depends(Params)]
)
async def get_base_books_info(
request: Request, book_filter: dict = Depends(get_book_filter)
):
return await BookBaseInfoFilterService.get(book_filter, request.app.state.redis)
@book_router.get("/last", response_model=int)
async def get_last_book_id():
book = await BookDB.objects.order_by("-id").first()