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