Update code in endpoints/books.post.py

This commit is contained in:
Backend IM Bot 2025-03-25 17:42:06 +01:00
parent 3a4c05b7e7
commit 0ed0bd1114

40
endpoints/books.post.py Normal file
View File

@ -0,0 +1,40 @@
# Entity: Book
from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.orm import Session
from app.api.db.database import get_db
# You'll need to add correct model and schema imports
router = APIRouter()
@router.post("/books", status_code=status.HTTP_201_CREATED, response_model=BookResponse)
async def create_book(book_data: BookCreate, db: Session = Depends(get_db)):
"""
Create a new book in the database.
Parameters:
- book_data: BookCreate (Pydantic model with book data)
Returns:
- BookResponse (Pydantic model with book data and id)
"""
new_book = Book(**book_data.dict())
db.add(new_book)
db.commit()
db.refresh(new_book)
return new_book
```
This endpoint defines a `POST` route at `/books` using the `@router.post` decorator. It takes a `book_data` parameter of type `BookCreate` (a Pydantic model representing the data needed to create a new book). The `db` parameter is a SQLAlchemy database session obtained using the `get_db` dependency.
The endpoint function `create_book` does the following:
1. Creates a new `Book` model instance using the data from `book_data`.
2. Adds the new book instance to the database session.
3. Commits the changes to the database.
4. Refreshes the `new_book` instance to get the generated ID.
5. Returns the `new_book` instance as a `BookResponse` Pydantic model.
The response status code is set to `HTTP_201_CREATED` to indicate successful creation of a new resource. The `response_model` parameter specifies that the response should be serialized using the `BookResponse` Pydantic model.
Note that you will need to define the `Book`, `BookCreate`, and `BookResponse` models (or import them from the appropriate module) for this code to work correctly.