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 remote_id: int
class BookBaseInfo(BaseModel):
id: int
available_types: list[str]
class BookDetail(RemoteBook): class BookDetail(RemoteBook):
sequences: list[Sequence] sequences: list[Sequence]
genres: list[BookGenre] genres: list[BookGenre]

View File

@@ -30,6 +30,12 @@ class BookTGRMSearchService(TRGMSearchService):
GET_OBJECT_IDS_QUERY = GET_OBJECT_IDS_QUERY GET_OBJECT_IDS_QUERY = GET_OBJECT_IDS_QUERY
class BookBaseInfoFilterService(BaseFilterService):
MODEL_CLASS = BookDB
PREFETCH_RELATED = []
SELECT_RELATED = []
class BookFilterService(BaseFilterService): class BookFilterService(BaseFilterService):
MODEL_CLASS = BookDB MODEL_CLASS = BookDB
PREFETCH_RELATED = ["source"] 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.filters.book import get_book_filter
from app.models import Book as BookDB from app.models import Book as BookDB
from app.models import BookAnnotation as BookAnnotationDB 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.serializers.book_annotation import BookAnnotation
from app.services.book import ( from app.services.book import (
BookBaseInfoFilterService,
BookFilterService, BookFilterService,
BookMeiliSearchService, BookMeiliSearchService,
GetRandomBookService, GetRandomBookService,
@@ -38,6 +39,15 @@ async def get_books(
return await BookFilterService.get(book_filter, request.app.state.redis) 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) @book_router.get("/last", response_model=int)
async def get_last_book_id(): async def get_last_book_id():
book = await BookDB.objects.order_by("-id").first() book = await BookDB.objects.order_by("-id").first()