sukjenogi-backend/app/api/admin_members.py
2025-09-19 16:28:03 +09:00

38 lines
1.3 KiB
Python

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