from datetime import datetime from fastapi import APIRouter, Depends from sqlalchemy.orm import Session from pydantic import BaseModel, EmailStr from app.core.database import get_db from app.core.security_admin import get_current_admin from app.core.config import settings from app.models.user import User # 기존 일반 사용자 모델 router = APIRouter() class MemberOut(BaseModel): id: int username: str email: EmailStr | None = None created_at: datetime | None = None is_active: bool | None = None last_login_at: datetime | None = None # Pydantic v2: ORM에서 읽기 model_config = {"from_attributes": True} @router.get("", response_model=list[MemberOut]) def list_members(db: Session = Depends(get_db), _: User = Depends(get_current_admin)): users = db.query(User).order_by(User.id.desc()).limit(200).all() # 모델 필드가 없을 수 있는 값들은 getattr로 안전하게 매핑 result = [] for u in users: result.append(MemberOut( id=u.id, username=getattr(u, "username", ""), email=getattr(u, "email", None), created_at=getattr(u, "created_at", None), is_active=getattr(u, "is_active", None), last_login_at=getattr(u, "last_login_at", None), )) return result