from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from app.db.session import get_db from app.core.deps import get_current_active_user from app.models.user import User from app.models.membership import GymMembership from app.models.subscription import Subscription from app.schemas.user import User as UserSchema, UserUpdate router = APIRouter() @router.get("/me", response_model=UserSchema) def read_user_me(current_user: User = Depends(get_current_active_user)): return current_user @router.put("/me", response_model=UserSchema) def update_user_me( user_update: UserUpdate, db: Session = Depends(get_db), current_user: User = Depends(get_current_active_user), ): user = db.query(User).filter(User.id == current_user.id).first() if not user: raise HTTPException(status_code=404, detail="User not found") update_data = user_update.dict(exclude_unset=True) for field, value in update_data.items(): setattr(user, field, value) db.commit() db.refresh(user) return user @router.get("/me/memberships") def get_user_memberships( db: Session = Depends(get_db), current_user: User = Depends(get_current_active_user) ): memberships = ( db.query(GymMembership).filter(GymMembership.user_id == current_user.id).all() ) return memberships @router.get("/me/subscriptions") def get_user_subscriptions( db: Session = Depends(get_db), current_user: User = Depends(get_current_active_user) ): subscriptions = ( db.query(Subscription).filter(Subscription.user_id == current_user.id).all() ) return subscriptions