Spaces:
Sleeping
Sleeping
from fastapi import APIRouter, Depends | |
from sqlalchemy.orm import Session | |
from src.expon.shared.infrastructure.dependencies import get_db | |
from src.expon.iam.infrastructure.authorization.sfs.auth_bearer import get_current_user | |
from src.expon.profile.infrastructure.persistence.jpa.repositories.profile_repository import ProfileRepository | |
from src.expon.profile.application.internal.commandservices.profile_command_service import ProfileCommandService | |
from fastapi import HTTPException | |
from src.expon.profile.domain.model.aggregates.user_profile import UserProfile | |
from src.expon.profile.interfaces.rest.requests.user_profile_request import UserProfileRequest | |
router = APIRouter() | |
def get_my_profile( | |
db: Session = Depends(get_db), | |
current_user=Depends(get_current_user) | |
): | |
service = ProfileCommandService(ProfileRepository(db)) | |
profile = service.get_profile_by_user(current_user.id) | |
if not profile: | |
raise HTTPException(status_code=404, detail="Profile not found") | |
return profile | |
def update_my_profile( | |
data: UserProfileRequest, | |
db: Session = Depends(get_db), | |
current_user=Depends(get_current_user) | |
): | |
service = ProfileCommandService(ProfileRepository(db)) | |
return service.update_profile(current_user.id, data.dict(exclude_unset=True)) | |
def create_my_profile( | |
data: UserProfileRequest, | |
db: Session = Depends(get_db), | |
current_user=Depends(get_current_user) | |
): | |
service = ProfileCommandService(ProfileRepository(db)) | |
existing = service.get_profile_by_user(current_user.id) | |
if existing: | |
raise HTTPException(status_code=400, detail="Profile already exists") | |
profile = UserProfile( | |
id=None, | |
user_id=current_user.id, | |
full_name=data.full_name, | |
university=data.university, | |
career=data.career, | |
first_name=data.first_name, | |
last_name=data.last_name, | |
gender=data.gender, | |
profile_picture=data.profile_picture, | |
preferred_presentation=data.preferred_presentation | |
) | |
return service.repository.save_or_update(profile) | |
def get_all_profiles( | |
db: Session = Depends(get_db), | |
current_user=Depends(get_current_user) | |
): | |
service = ProfileCommandService(ProfileRepository(db)) | |
return service.get_all_profiles() |