11import logging
22
33from fastapi import APIRouter , Depends , HTTPException , Query , status
4+ from fastapi .exceptions import RequestValidationError
45from sqlalchemy .exc import SQLAlchemyError
56from sqlalchemy .orm import Session
67
78from api .db .database import get_db
89from api .v1 .schemas .blog import (
9- BlogCreateSchema ,
10- BlogListResponseSchema ,
11- BlogResponseSchema ,
12- BlogUpdateSchema ,
10+ BlogCreate ,
11+ BlogListResponse ,
12+ BlogResponse ,
13+ BlogUpdate ,
1314)
1415from api .v1 .services .blog import BlogService
1516
2021
2122@blog .post (
2223 "" ,
23- response_model = BlogResponseSchema ,
24+ response_model = BlogResponse ,
2425 status_code = status .HTTP_201_CREATED ,
2526)
2627async def create_blog (
27- blog : BlogCreateSchema ,
28+ blog : BlogCreate ,
2829 db : Session = Depends (get_db ),
29- ) -> BlogResponseSchema :
30+ ) -> BlogResponse :
3031 try :
3132 return BlogService .create_blog (db , blog )
3233 except ValueError as e :
@@ -51,14 +52,14 @@ async def create_blog(
5152
5253@blog .get (
5354 "" ,
54- response_model = BlogListResponseSchema ,
55+ response_model = BlogListResponse ,
5556 status_code = status .HTTP_200_OK ,
5657)
5758async def list_blog (
5859 page : int = Query (1 , ge = 1 ),
5960 page_size : int = Query (10 , ge = 1 , le = 100 ),
6061 db : Session = Depends (get_db ),
61- ) -> BlogListResponseSchema :
62+ ) -> BlogListResponse :
6263 try :
6364 return BlogService .list_blog (db , page , page_size )
6465 except SQLAlchemyError as e :
@@ -77,13 +78,13 @@ async def list_blog(
7778
7879@blog .get (
7980 "/{id}" ,
80- response_model = BlogResponseSchema ,
81+ response_model = BlogResponse ,
8182 status_code = status .HTTP_200_OK ,
8283)
8384async def read_blog (
8485 id : int ,
8586 db : Session = Depends (get_db ),
86- ) -> BlogResponseSchema :
87+ ) -> BlogResponse :
8788 try :
8889 return BlogService .read_blog (db , id )
8990 except ValueError as e :
@@ -108,16 +109,22 @@ async def read_blog(
108109
109110@blog .patch (
110111 "/{id}" ,
111- response_model = BlogResponseSchema ,
112+ response_model = BlogResponse ,
112113 status_code = status .HTTP_200_OK ,
113114)
114115async def update_blog (
115116 id : int ,
116- blog_update : BlogUpdateSchema ,
117+ blog_update : BlogUpdate ,
117118 db : Session = Depends (get_db ),
118- ) -> BlogResponseSchema :
119+ ) -> BlogResponse :
119120 try :
120121 return BlogService .update_blog (db , id , blog_update )
122+ except RequestValidationError as e :
123+ logger .warning (f"Validation error: { e } " )
124+ raise HTTPException (
125+ status_code = status .HTTP_422_UNPROCESSABLE_ENTITY ,
126+ detail = e .errors (),
127+ )
121128 except ValueError as e :
122129 logger .warning (str (e ))
123130 raise HTTPException (
0 commit comments