from datetime import datetime
from typing import Optional

from pydantic import BaseModel, EmailStr, Field

from app.models.admin_user import AdminRole


class AdminLogin(BaseModel):
    username: str
    password: str


class AdminResponse(BaseModel):
    id: str
    username: str
    email: str
    role: str  # Changed from AdminRole to str for JSON serialization
    isActive: bool = Field(alias="is_active")
    lastLogin: Optional[str] = Field(None, alias="last_login")  # ISO format string for JSON serialization

    class Config:
        from_attributes = True
        populate_by_name = True


class Token(BaseModel):
    access_token: str
    refresh_token: str
    token_type: str = "bearer"
