2025-12-17 00:15:27 +02:00

48 lines
1.7 KiB
Python

from fastapi import APIRouter, HTTPException, status, Depends
from app.schemas import ProfileCreate, ProfileUpdate, ProfileResponse, DiscoverResponse
from app.services.profile_service import ProfileService
from app.auth import get_current_user
router = APIRouter(prefix="/profiles", tags=["profiles"])
@router.post("/", response_model=ProfileResponse)
def create_or_update_profile(
profile_data: ProfileCreate,
current_user: dict = Depends(get_current_user)
):
"""Create or update user profile"""
try:
return ProfileService.create_profile(current_user["user_id"], profile_data)
except Exception as e:
raise HTTPException(
status_code=status.HTTP_400_BAD_REQUEST,
detail=str(e)
)
@router.get("/me", response_model=ProfileResponse)
def get_my_profile(current_user: dict = Depends(get_current_user)):
"""Get current user's profile"""
profile = ProfileService.get_profile_by_user(current_user["user_id"])
if not profile:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="Profile not found"
)
return profile
@router.get("/{user_id}", response_model=ProfileResponse)
def get_profile(user_id: int, current_user: dict = Depends(get_current_user)):
"""Get profile by user ID"""
profile = ProfileService.get_profile_by_user(user_id)
if not profile:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="Profile not found"
)
return profile
@router.get("/discover/list", response_model=list)
def discover_profiles(current_user: dict = Depends(get_current_user)):
"""Get profiles to discover"""
return ProfileService.discover_profiles(current_user["user_id"])