76 lines
1.8 KiB
Python
76 lines
1.8 KiB
Python
from fastapi import (
|
|
APIRouter,
|
|
Body,
|
|
Depends,
|
|
Form,
|
|
HTTPException,
|
|
Request,
|
|
Response,
|
|
status,
|
|
)
|
|
|
|
|
|
from sqlalchemy.ext.asyncio import AsyncConnection
|
|
|
|
from api.db.connection.session import get_connection_dep
|
|
from api.db.logic.account import get_user_id, update_user_id,get_user_login
|
|
from api.services.update_data_validation import update_user_data_changes
|
|
|
|
from api.schemas.endpoints.account import UserUpdate
|
|
|
|
|
|
|
|
api_router = APIRouter(
|
|
prefix="/profile",
|
|
tags=["User accountModel"],
|
|
)
|
|
|
|
|
|
@api_router.get("/{user_id}")
|
|
async def get_profile(
|
|
user_id: int,
|
|
request: Request,
|
|
connection: AsyncConnection = Depends(get_connection_dep),
|
|
):
|
|
# Извлекаем текущего пользователя из request.state
|
|
current_user = request.state.current_user
|
|
|
|
user = await get_user_id(connection, user_id)
|
|
|
|
if user is None:
|
|
raise HTTPException(
|
|
status_code=status.HTTP_404_NOT_FOUND,
|
|
detail="Account not found")
|
|
|
|
return user
|
|
|
|
|
|
@api_router.put("/{user_id}")
|
|
async def update_profile(
|
|
user_id: int,
|
|
request: Request,
|
|
user_updata: UserUpdate,
|
|
connection: AsyncConnection = Depends(get_connection_dep),
|
|
|
|
):
|
|
|
|
current_user = request.state.current_user
|
|
|
|
user = await get_user_id(connection, user_id)
|
|
if user is None:
|
|
raise HTTPException(
|
|
status_code=status.HTTP_404_NOT_FOUND,
|
|
detail="Account not found")
|
|
|
|
|
|
update_values = update_user_data_changes(user_updata,user)
|
|
|
|
if update_values is None:
|
|
return user
|
|
|
|
await update_user_id(connection, update_values, user)
|
|
|
|
user = await get_user_id(connection, user_id)
|
|
|
|
return user
|