diff --git a/fastapi_book_server/app/filters/book.py b/fastapi_book_server/app/filters/book.py new file mode 100644 index 0000000..cca1b91 --- /dev/null +++ b/fastapi_book_server/app/filters/book.py @@ -0,0 +1,10 @@ +from typing import Optional + + +def get_book_filter(is_deleted: Optional[bool] = None) -> dict: + result = {} + + if is_deleted is not None: + result['is_deleted'] = is_deleted + + return result diff --git a/fastapi_book_server/app/views/book.py b/fastapi_book_server/app/views/book.py index ba36b6f..7b39aeb 100644 --- a/fastapi_book_server/app/views/book.py +++ b/fastapi_book_server/app/views/book.py @@ -9,6 +9,7 @@ from app.utils.pagination import CustomPage from app.models import Book as BookDB, Author as AuthorDB, AuthorAnnotation as AuthorAnnotationDB from app.serializers.book import Book, RemoteBook, CreateBook, UpdateBook, CreateRemoteBook from app.services.book import BookTGRMSearchService, BookCreator +from app.filters.book import get_book_filter from app.depends import check_token @@ -20,9 +21,9 @@ book_router = APIRouter( @book_router.get("/", response_model=CustomPage[RemoteBook], dependencies=[Depends(Params)]) -async def get_books(): +async def get_books(book_filter: dict = Depends(get_book_filter)): return await paginate( - BookDB.objects.select_related(["source", "authors"]) + BookDB.objects.select_related(["source", "authors"]).filter(**book_filter) )