1818
1919router = fastapi .APIRouter (tags = ["rate_limits" ])
2020
21- @router .post ("/tier/{tier_id }/rate_limit" , dependencies = [Depends (get_current_superuser )], status_code = 201 )
21+ @router .post ("/tier/{name }/rate_limit" , dependencies = [Depends (get_current_superuser )], status_code = 201 )
2222async def write_rate_limit (
2323 request : Request ,
24- tier_id : int ,
24+ name : str ,
2525 rate_limit : RateLimitCreate ,
2626 db : Annotated [AsyncSession , Depends (async_get_db )]
2727):
28- db_tier = await crud_tiers .exists (db = db , id = tier_id )
28+ db_tier = await crud_tiers .get (db = db , name = name )
2929 if not db_tier :
3030 raise HTTPException (status_code = 404 , detail = "Tier not found" )
3131
3232 rate_limit_internal_dict = rate_limit .model_dump ()
33- rate_limit_internal_dict ["tier_id" ] = tier_id
33+ rate_limit_internal_dict ["tier_id" ] = db_tier [ "id" ]
3434
3535 db_rate_limit = await crud_rate_limits .exists (db = db , name = rate_limit_internal_dict ["name" ])
3636 if db_rate_limit :
@@ -40,15 +40,15 @@ async def write_rate_limit(
4040 return await crud_rate_limits .create (db = db , object = rate_limit_internal )
4141
4242
43- @router .get ("/tier/{tier_id }/rate_limits" , response_model = PaginatedListResponse [RateLimitRead ])
43+ @router .get ("/tier/{name }/rate_limits" , response_model = PaginatedListResponse [RateLimitRead ])
4444async def read_rate_limits (
4545 request : Request ,
46- tier_id : int ,
46+ name : str ,
4747 db : Annotated [AsyncSession , Depends (async_get_db )],
4848 page : int = 1 ,
4949 items_per_page : int = 10
5050):
51- db_tier = await crud_tiers .exists (db = db , id = tier_id )
51+ db_tier = await crud_tiers .get (db = db , name = name )
5252 if not db_tier :
5353 raise HTTPException (status_code = 404 , detail = "Tier not found" )
5454
@@ -57,7 +57,7 @@ async def read_rate_limits(
5757 offset = compute_offset (page , items_per_page ),
5858 limit = items_per_page ,
5959 schema_to_select = RateLimitRead ,
60- tier_id = tier_id
60+ tier_id = db_tier [ "id" ]
6161 )
6262
6363 return paginated_response (
@@ -67,58 +67,73 @@ async def read_rate_limits(
6767 )
6868
6969
70- @router .get ("/tier/{tier_id }/rate_limit/{id}" , response_model = RateLimitRead )
70+ @router .get ("/tier/{tier_name }/rate_limit/{id}" , response_model = RateLimitRead )
7171async def read_rate_limit (
7272 request : Request ,
73- tier_id : int ,
74- id : int ,
73+ tier_name : str ,
74+ id : int ,
7575 db : Annotated [AsyncSession , Depends (async_get_db )]
7676):
77- db_tier = await crud_tiers .exists (db = db , id = tier_id )
77+ db_tier = await crud_tiers .get (db = db , name = tier_name )
7878 if not db_tier :
7979 raise HTTPException (status_code = 404 , detail = "Tier not found" )
8080
81- db_rate_limit = await crud_rate_limits .get (db = db , schema_to_select = RateLimitRead , id = id )
81+ db_rate_limit = await crud_rate_limits .get (
82+ db = db ,
83+ schema_to_select = RateLimitRead ,
84+ tier_id = db_tier ["id" ],
85+ id = id
86+ )
8287 if db_rate_limit is None :
8388 raise HTTPException (status_code = 404 , detail = "Rate Limit not found" )
8489
8590 return db_rate_limit
8691
8792
88- @router .patch ("/tier/{tier_id }/rate_limit/{id }" , dependencies = [Depends (get_current_superuser )])
93+ @router .patch ("/tier/{tier_name }/rate_limit/{path }" , dependencies = [Depends (get_current_superuser )])
8994async def patch_rate_limit (
9095 request : Request ,
91- tier_id : int ,
96+ tier_name : str ,
9297 id : int ,
9398 values : RateLimitUpdate ,
9499 db : Annotated [AsyncSession , Depends (async_get_db )]
95100):
96- db_tier = await crud_tiers .exists (db = db , id = tier_id )
101+ db_tier = await crud_tiers .get (db = db , name = tier_name )
97102 if not db_tier :
98103 raise HTTPException (status_code = 404 , detail = "Tier not found" )
99104
100- db_rate_limit = await crud_rate_limits .get (db = db , schema_to_select = RateLimitRead , id = id )
105+ db_rate_limit = await crud_rate_limits .get (
106+ db = db ,
107+ schema_to_select = RateLimitRead ,
108+ tier_id = db_tier ["id" ],
109+ id = id
110+ )
101111 if db_rate_limit is None :
102112 raise HTTPException (status_code = 404 , detail = "Rate Limit not found" )
103113
104- await crud_rate_limits .update (db = db , object = values , id = id )
114+ await crud_rate_limits .update (db = db , object = values , id = db_rate_limit [ "id" ] )
105115 return {"message" : "Rate Limit updated" }
106116
107117
108- @router .delete ("/tier/{tier_id }/rate_limit/{id }" , dependencies = [Depends (get_current_superuser )])
118+ @router .delete ("/tier/{tier_name }/rate_limit/{path }" , dependencies = [Depends (get_current_superuser )])
109119async def erase_rate_limit (
110120 request : Request ,
111- tier_id : int ,
112- id : int ,
121+ tier_name : str ,
122+ id : int ,
113123 db : Annotated [AsyncSession , Depends (async_get_db )]
114124):
115- db_tier = await crud_tiers .exists (db = db , id = tier_id )
125+ db_tier = await crud_tiers .get (db = db , name = tier_name )
116126 if not db_tier :
117127 raise HTTPException (status_code = 404 , detail = "Tier not found" )
118128
119- db_rate_limit = await crud_rate_limits .get (db = db , schema_to_select = RateLimitRead , id = id )
129+ db_rate_limit = await crud_rate_limits .get (
130+ db = db ,
131+ schema_to_select = RateLimitRead ,
132+ tier_id = db_tier ["id" ],
133+ id = id
134+ )
120135 if db_rate_limit is None :
121136 raise HTTPException (status_code = 404 , detail = "Rate Limit not found" )
122137
123- await crud_rate_limits .delete (db = db , db_row = db_rate_limit , id = id )
138+ await crud_rate_limits .delete (db = db , db_row = db_rate_limit , id = db_rate_limit [ "id" ] )
124139 return {"message" : "Rate Limit deleted" }
0 commit comments