-
Notifications
You must be signed in to change notification settings - Fork 0
/
user.py
38 lines (26 loc) · 959 Bytes
/
user.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import logging
from fastapi import APIRouter
from fastapi_sqlalchemy import db
from pydantic import BaseModel, ConfigDict
from achievement_api.models import Achievement, AchievementReciever
from achievement_api.settings import get_settings
router = APIRouter(prefix="/user", tags=["User"])
logger = logging.getLogger(__name__)
settings = get_settings()
class AchievementGet(BaseModel):
id: int
name: str
description: str
picture: str | None
owner_user_id: int
model_config = ConfigDict(from_attributes=True)
class UserGet(BaseModel):
user_id: int
achievement: list[AchievementGet]
model_config = ConfigDict(from_attributes=True)
@router.get("/{user_id}")
def get_all_achievements(user_id: int) -> UserGet:
achievements = (
db.session.query(Achievement).join(AchievementReciever).where(AchievementReciever.user_id == user_id).all()
)
return UserGet(user_id=user_id, achievement=achievements)