32 lines
770 B
Python
32 lines
770 B
Python
# api/schemas.py
|
|
from pydantic import BaseModel, EmailStr
|
|
from typing import Optional
|
|
|
|
# --- Token Schemas ---
|
|
class Token(BaseModel):
|
|
access_token: str
|
|
token_type: str
|
|
|
|
class TokenData(BaseModel):
|
|
username: Optional[str] = None
|
|
|
|
# --- User Schemas ---
|
|
|
|
# Propiedades base del usuario (compartidas)
|
|
class UserBase(BaseModel):
|
|
username: str
|
|
email: EmailStr
|
|
|
|
# Esquema para la creación de un usuario (recibe la contraseña)
|
|
class UserCreate(UserBase):
|
|
password: str
|
|
|
|
# Esquema para leer/devolver un usuario desde la API (nunca incluye la contraseña)
|
|
class User(UserBase):
|
|
id: int
|
|
is_active: bool
|
|
|
|
class Config:
|
|
# Permite que Pydantic lea los datos directamente desde un objeto ORM de SQLAlchemy
|
|
from_attributes = True
|