# Entity: Book from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.orm import Session from app.api.db.database import get_db router = APIRouter() @router.get("/api/v1/books") async def get_books( author: str = None, title: str = None, db: Session = Depends(get_db) ): """ Get all books with optional filtering by author and title. """ query = db.query(Book) if author: query = query.filter(Book.author.ilike(f"%{author}%")) if title: query = query.filter(Book.title.ilike(f"%{title}%")) books = query.all() return [ { "id": book.id, "title": book.title, "author": book.author, # Add other book fields as needed } for book in books ] ``` In this implementation, the `get_books` function accepts two optional query parameters: `author` and `title`. It then constructs a SQLAlchemy query on the `Book` model and applies filters based on the provided parameters using the `ilike` operator for case-insensitive pattern matching. The filtered query is executed, and the results are returned as a list of dictionaries containing the book details. You can adjust the fields included in the dictionary based on your requirements. Note that this implementation assumes the existence of a `Book` model and the necessary database setup with SQLAlchemy. You'll need to import the `Book` model and any required schemas in the actual implementation.