48 lines
1.7 KiB
Python
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"])
|