diff --git a/endpoints/api/v1/endpoint.post.py b/endpoints/api/v1/endpoint.post.py new file mode 100644 index 0000000..2a572a9 --- /dev/null +++ b/endpoints/api/v1/endpoint.post.py @@ -0,0 +1,49 @@ +from fastapi import APIRouter, Depends, HTTPException +from core.database import fake_users_db +from typing import List, Optional + +router = APIRouter() + +fake_books_db = { + "1": {"id": "1", "title": "Book 1", "author": "Author 1", "year": 2021}, + "2": {"id": "2", "title": "Book 2", "author": "Author 2", "year": 2022}, + "3": {"id": "3", "title": "Book 3", "author": "Author 3", "year": 2023} +} + +@router.post("/api/v1/endpoint") +async def get_books( + author: Optional[str] = None, + year: Optional[int] = None +): + """Get books from database with optional filters""" + filtered_books = fake_books_db.copy() + + if author: + filtered_books = { + k: v for k, v in filtered_books.items() + if v["author"].lower() == author.lower() + } + + if year: + filtered_books = { + k: v for k, v in filtered_books.items() + if v["year"] == year + } + + if not filtered_books: + raise HTTPException( + status_code=404, + detail="No books found matching the criteria" + ) + + return { + "message": "Books retrieved successfully", + "data": list(filtered_books.values()), + "metadata": { + "total_count": len(filtered_books), + "filters_applied": { + "author": author, + "year": year + } + } + } \ No newline at end of file