Here's the code for the FastAPI endpoint to create books in the database, along with the model and schema: ```python from fastapi import APIRouter, HTTPException from pydantic import BaseModel, Field from typing import List router = APIRouter() # In-memory database books = [] # Book Model # Book Schema class BookSchema(BaseModel): message: str book: Book @router.post("/books", response_model=BookSchema) async def create_book(book: Book): """Create a new book""" if request.method != "POST": raise HTTPException(status_code=405, detail="Method Not Allowed") # Generate a new ID book.id = len(books) + 1 # Add the book to the database books.append(book) return { "message": "Book created successfully", "book": book, "method": "POST", "_verb": "post" } ``` This code defines a `Book` model using Pydantic, which includes fields for `id`, `title`, `author`, `description`, `rating`, and `genres`. The `BookSchema` defines the structure of the response, which includes a `message` and the `Book` object. The `create_book` endpoint is a POST endpoint that takes a `Book` object as input. It first checks if the request method is POST, and if not, it raises a 405 Method Not Allowed exception. It then generates a new ID for the book, appends it to the in-memory `books` list, and returns a response with the `message`, the created `book` object, and the `method` and `_verb` metadata. Note that this code assumes an in-memory database (`books` list) for simplicity. In a real-world application, you would need to replace this with a database connection and appropriate database operations (e.g., using an ORM like SQLAlchemy).