From 27137a602371e23f64786a111c271d08794ea1f7 Mon Sep 17 00:00:00 2001 From: Backend IM Bot Date: Tue, 11 Mar 2025 10:15:05 +0000 Subject: [PATCH] feat: Update endpoint books --- app/api/endpoints/books.py | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/app/api/endpoints/books.py b/app/api/endpoints/books.py index e69de29..d3acfb1 100644 --- a/app/api/endpoints/books.py +++ b/app/api/endpoints/books.py @@ -0,0 +1,34 @@ +from typing import List +from fastapi import APIRouter, Depends, HTTPException +from sqlalchemy.orm import Session +from app.db import get_db +from app.models import Book +from app.schemas import BookCreate + +router = APIRouter() + +@router.post("/books", response_model=List[Book]) +async def create_book(book: BookCreate, db: Session = Depends(get_db)): + """ + Create a new book. + + Args: + book (BookCreate): The book data to create. + db (Session, optional): The database session. Defaults to Depends(get_db). + + Raises: + HTTPException: If the book already exists. + + Returns: + List[Book]: The created book. + """ + existing_book = db.query(Book).filter(Book.title == book.title).first() + if existing_book: + raise HTTPException(status_code=400, detail="Book already exists") + + new_book = Book(**book.dict()) + db.add(new_book) + db.commit() + db.refresh(new_book) + + return [new_book] \ No newline at end of file