Skip to content

Commit ff6852e

Browse files
committed
get user tier added in endpoints using get_joined
1 parent 531f96b commit ff6852e

File tree

3 files changed

+36
-5
lines changed

3 files changed

+36
-5
lines changed

src/app/api/v1/rate_limits.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,12 @@ async def patch_rate_limit(
116116
tier_id=db_tier["id"],
117117
path=values.path
118118
)
119+
if db_rate_limit_path is not None:
120+
raise HTTPException(status_code=404, detail="There is already a rate limit for this path")
119121

120122
db_rate_limit_name = await crud_rate_limits.exists(db=db)
123+
if db_rate_limit_path is not None:
124+
raise HTTPException(status_code=404, detail="There is already a rate limit with this name")
121125

122126
await crud_rate_limits.update(db=db, object=values, id=db_rate_limit["id"])
123127
return {"message": "Rate Limit updated"}

src/app/api/v1/users.py

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,17 @@
55
from fastapi import Request
66
import fastapi
77

8-
from app.schemas.user import UserCreate, UserCreateInternal, UserUpdate, UserRead, UserTierUpdate
98
from app.api.dependencies import get_current_user, get_current_superuser
9+
from app.api.exceptions import privileges_exception
10+
from app.api.paginated import PaginatedListResponse, paginated_response, compute_offset
1011
from app.core.database import async_get_db
1112
from app.core.security import get_password_hash
1213
from app.crud.crud_users import crud_users
1314
from app.crud.crud_tier import crud_tiers
1415
from app.crud.crud_rate_limit import crud_rate_limits
15-
from app.api.exceptions import privileges_exception
16-
from app.api.paginated import PaginatedListResponse, paginated_response, compute_offset
16+
from app.models.tier import Tier
17+
from app.schemas.user import UserCreate, UserCreateInternal, UserUpdate, UserRead, UserTierUpdate
18+
from app.schemas.tier import TierRead
1719

1820
router = fastapi.APIRouter(tags=["users"])
1921

@@ -166,6 +168,32 @@ async def read_user_rate_limits(
166168
return db_user
167169

168170

171+
@router.get("/user/{username}/tier")
172+
async def read_user_tier(
173+
request: Request,
174+
username: str,
175+
db: Annotated[AsyncSession, Depends(async_get_db)]
176+
):
177+
db_user = await crud_users.get(db=db, username=username, schema_to_select=UserRead)
178+
if db_user is None:
179+
raise HTTPException(status_code=404, detail="User not found")
180+
181+
db_tier = await crud_tiers.exists(db=db, id=db_user["tier_id"])
182+
if not db_tier:
183+
raise HTTPException(status_code=404, detail="Tier not found")
184+
185+
joined = await crud_users.get_joined(
186+
db=db,
187+
join_model=Tier,
188+
join_prefix="tier_",
189+
schema_to_select=UserRead,
190+
join_schema_to_select=TierRead,
191+
username=username
192+
)
193+
194+
return joined
195+
196+
169197
@router.patch("/user/{username}/tier", dependencies=[Depends(get_current_superuser)])
170198
async def patch_user_tier(
171199
request: Request,
@@ -180,6 +208,6 @@ async def patch_user_tier(
180208
db_tier = await crud_tiers.get(db=db, id=values.tier_id)
181209
if db_tier is None:
182210
raise HTTPException(status_code=404, detail="Tier not found")
183-
211+
184212
await crud_users.update(db=db, object=values, username=username)
185213
return {"message": f"User {db_user['name']} Tier updated"}

src/app/crud/crud_base.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,6 @@ async def get_joined(
307307

308308
for key, value in kwargs.items():
309309
if hasattr(self._model, key):
310-
print(self._model)
311310
stmt = stmt.where(getattr(self._model, key) == value)
312311

313312
db_row = await db.execute(stmt)

0 commit comments

Comments
 (0)