55from app .utils .images import image_util_parse_metadata
66from pydantic import BaseModel
77from app .database .images import db_toggle_image_favourite_status
8+
89router = APIRouter ()
910
1011
@@ -52,15 +53,15 @@ def get_all_images():
5253
5354 # Convert to response format
5455 image_data = [
55- ImageData (
56+ ImageData (
5657 id = image ["id" ],
5758 path = image ["path" ],
5859 folder_id = image ["folder_id" ],
5960 thumbnailPath = image ["thumbnailPath" ],
6061 metadata = image_util_parse_metadata (image ["metadata" ]),
61- isTagged = image ["isTagged" ],
62- isFavourite = image .get ("isFavourite" , False ),
63- tags = image ["tags" ],
62+ isTagged = image ["isTagged" ],
63+ isFavourite = image .get ("isFavourite" , False ),
64+ tags = image ["tags" ],
6465 )
6566 for image in images
6667 ]
@@ -84,23 +85,35 @@ def get_all_images():
8485
8586# adding add to favourite and remove from favourite routes
8687
88+
8789class ToggleFavouriteRequest (BaseModel ):
8890 image_id : str
91+
92+
8993@router .post ("/toggle-favourite" )
9094def toggle_favourite (req : ToggleFavouriteRequest ):
9195 image_id = req .image_id
9296 try :
9397 success = db_toggle_image_favourite_status (image_id )
9498 if not success :
95- raise HTTPException (status_code = 404 , detail = "Image not found or failed to toggle" )
99+ raise HTTPException (
100+ status_code = 404 , detail = "Image not found or failed to toggle"
101+ )
96102 # Fetch updated status to return
97- image = next ((img for img in db_get_all_images () if img ["id" ] == image_id ), None )
98- return {"success" : True , "image_id" : image_id , "isFavourite" : image .get ("isFavourite" , False )}
103+ image = next (
104+ (img for img in db_get_all_images () if img ["id" ] == image_id ), None
105+ )
106+ return {
107+ "success" : True ,
108+ "image_id" : image_id ,
109+ "isFavourite" : image .get ("isFavourite" , False ),
110+ }
99111
100112 except Exception as e :
101113 print (f"Toggle favourite error: { e } " )
102114 raise HTTPException (status_code = 500 , detail = f"Internal server error: { e } " )
103115
116+
104117class ImageInfoResponse (BaseModel ):
105118 id : str
106119 path : str
@@ -111,6 +124,7 @@ class ImageInfoResponse(BaseModel):
111124 isFavourite : bool
112125 tags : Optional [List [str ]] = None
113126
127+
114128@router .get ("/info/{image_id}" , response_model = ImageInfoResponse )
115129def get_image_info (image_id : str ):
116130 # 1. Fetch all images
@@ -128,5 +142,5 @@ def get_image_info(image_id: str):
128142 metadata = image ["metadata" ],
129143 isTagged = image ["isTagged" ],
130144 isFavourite = image .get ("isFavourite" , False ),
131- tags = image .get ("tags" , [])
132- )
145+ tags = image .get ("tags" , []),
146+ )
0 commit comments