"""Users & Settings router.""" from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import select from app.database import get_db from app.models import User from app.schemas import UserPublic, UserMe from app.middleware.auth import get_current_user router = APIRouter() @router.get("/users/{username}", response_model=UserPublic) async def get_user_profile(username: str, db: AsyncSession = Depends(get_db)): result = await db.execute(select(User).where(User.username == username)) user = result.scalar_one_or_none() if not user: raise HTTPException(status_code=404, detail="User not found") return user @router.get("/me", response_model=UserMe) async def get_me(user: User = Depends(get_current_user)): return user @router.put("/me", response_model=UserMe) async def update_me( db: AsyncSession = Depends(get_db), user: User = Depends(get_current_user), ): """Update user settings. (Expanded in Track B)""" # TODO: Accept settings updates (username, email, etc.) return user # ── Creator Economy Stubs (501) ───────────────────────────── @router.get("/dashboard") async def creator_dashboard(user: User = Depends(get_current_user)): raise HTTPException(status_code=501, detail="Creator dashboard coming in future release") @router.get("/shaders/{shader_id}/unlock-status") async def unlock_status(shader_id: str, user: User = Depends(get_current_user)): raise HTTPException(status_code=501, detail="Source unlock coming in future release") @router.post("/shaders/{shader_id}/unlock") async def unlock_source(shader_id: str, user: User = Depends(get_current_user)): raise HTTPException(status_code=501, detail="Source unlock coming in future release") @router.post("/shaders/{shader_id}/commercial") async def purchase_commercial(shader_id: str, user: User = Depends(get_current_user)): raise HTTPException(status_code=501, detail="Commercial licensing coming in future release") @router.post("/me/creator/apply") async def apply_verified(user: User = Depends(get_current_user)): raise HTTPException(status_code=501, detail="Verified creator program coming in future release") @router.get("/me/creator/earnings") async def creator_earnings(user: User = Depends(get_current_user)): raise HTTPException(status_code=501, detail="Creator earnings coming in future release")