1111
1212
1313@router .get ("/" , response_model = ItemsPublic )
14- def read_items (
14+ async def read_items (
1515 session : SessionDep , current_user : CurrentUser , skip : int = 0 , limit : int = 100
1616) -> Any :
1717 """
@@ -20,37 +20,41 @@ def read_items(
2020
2121 if current_user .is_superuser :
2222 count_statement = select (func .count ()).select_from (Item )
23- count = session .exec (count_statement ).one ()
23+ count_result = await session .execute (count_statement )
24+ count = count_result .scalar ()
2425 statement = (
2526 select (Item ).order_by (col (Item .created_at ).desc ()).offset (skip ).limit (limit )
2627 )
27- items = session .exec (statement ).all ()
28+ result = await session .execute (statement )
29+ items = result .scalars ().all ()
2830 else :
2931 count_statement = (
3032 select (func .count ())
3133 .select_from (Item )
3234 .where (Item .owner_id == current_user .id )
3335 )
34- count = session .exec (count_statement ).one ()
36+ count_result = await session .execute (count_statement )
37+ count = count_result .scalar ()
3538 statement = (
3639 select (Item )
3740 .where (Item .owner_id == current_user .id )
3841 .order_by (col (Item .created_at ).desc ())
3942 .offset (skip )
4043 .limit (limit )
4144 )
42- items = session .exec (statement ).all ()
45+ result = await session .execute (statement )
46+ items = result .scalars ().all ()
4347
4448 items_public = [ItemPublic .model_validate (item ) for item in items ]
4549 return ItemsPublic (data = items_public , count = count )
4650
4751
4852@router .get ("/{id}" , response_model = ItemPublic )
49- def read_item (session : SessionDep , current_user : CurrentUser , id : uuid .UUID ) -> Any :
53+ async def read_item (session : SessionDep , current_user : CurrentUser , id : uuid .UUID ) -> Any :
5054 """
5155 Get item by ID.
5256 """
53- item = session .get (Item , id )
57+ item = await session .get (Item , id )
5458 if not item :
5559 raise HTTPException (status_code = 404 , detail = "Item not found" )
5660 if not current_user .is_superuser and (item .owner_id != current_user .id ):
@@ -59,21 +63,21 @@ def read_item(session: SessionDep, current_user: CurrentUser, id: uuid.UUID) ->
5963
6064
6165@router .post ("/" , response_model = ItemPublic )
62- def create_item (
66+ async def create_item (
6367 * , session : SessionDep , current_user : CurrentUser , item_in : ItemCreate
6468) -> Any :
6569 """
6670 Create new item.
6771 """
6872 item = Item .model_validate (item_in , update = {"owner_id" : current_user .id })
6973 session .add (item )
70- session .commit ()
71- session .refresh (item )
74+ await session .commit ()
75+ await session .refresh (item )
7276 return item
7377
7478
7579@router .put ("/{id}" , response_model = ItemPublic )
76- def update_item (
80+ async def update_item (
7781 * ,
7882 session : SessionDep ,
7983 current_user : CurrentUser ,
@@ -83,31 +87,31 @@ def update_item(
8387 """
8488 Update an item.
8589 """
86- item = session .get (Item , id )
90+ item = await session .get (Item , id )
8791 if not item :
8892 raise HTTPException (status_code = 404 , detail = "Item not found" )
8993 if not current_user .is_superuser and (item .owner_id != current_user .id ):
9094 raise HTTPException (status_code = 403 , detail = "Not enough permissions" )
9195 update_dict = item_in .model_dump (exclude_unset = True )
9296 item .sqlmodel_update (update_dict )
9397 session .add (item )
94- session .commit ()
95- session .refresh (item )
98+ await session .commit ()
99+ await session .refresh (item )
96100 return item
97101
98102
99103@router .delete ("/{id}" )
100- def delete_item (
104+ async def delete_item (
101105 session : SessionDep , current_user : CurrentUser , id : uuid .UUID
102106) -> Message :
103107 """
104108 Delete an item.
105109 """
106- item = session .get (Item , id )
110+ item = await session .get (Item , id )
107111 if not item :
108112 raise HTTPException (status_code = 404 , detail = "Item not found" )
109113 if not current_user .is_superuser and (item .owner_id != current_user .id ):
110114 raise HTTPException (status_code = 403 , detail = "Not enough permissions" )
111115 session .delete (item )
112- session .commit ()
116+ await session .commit ()
113117 return Message (message = "Item deleted successfully" )
0 commit comments