from fastapi import APIRouter, Depends, HTTPException from sqlmodel import Session, select from app.core.db import get_session from app.models import GoogleAccount, AuditLog from app.google.client import get_service router = APIRouter() def get_account(session: Session, email: str) -> GoogleAccount: acc = session.exec(select(GoogleAccount).where(GoogleAccount.email == email)).first() if not acc: raise HTTPException(status_code=404, detail="Cuenta no autorizada. Primero usa /auth/google/start.") return acc @router.get("/courses") def list_courses(account_email: str, session: Session = Depends(get_session)): acc = get_account(session, account_email) classroom = get_service("classroom", "v1", acc.token_json) try: res = classroom.courses().list(pageSize=20).execute() session.add(AuditLog(account_email=account_email, action="classroom_courses", detail="ok")) session.commit() return res except Exception as e: raise HTTPException(status_code=400, detail=str(e))