mirror of
https://github.com/flibusta-apps/book_library_server.git
synced 2025-12-06 07:05:36 +01:00
Add book base info endpoint
This commit is contained in:
@@ -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]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user