Files
VoxPopuli/src/infrastructure/api/users/schemas.py

55 lines
1.8 KiB
Python

from pydantic import BaseModel, Field
from datetime import datetime
from typing import Optional
class UserCreateRequest(BaseModel):
"""Solicitud para crear un usuario"""
nombre: str
apellido: str
email: str
contraseña: Optional[str] = Field(
default=None,
description="Contraseña del usuario. Si no se proporciona, se usa 'passwd123' por defecto"
)
fecha_nacimiento: datetime
url_foto_perfil: Optional[str] = None
biografia: Optional[str] = None
class UserUpdateRequest(BaseModel):
"""Solicitud para actualizar un usuario"""
nombre: Optional[str] = None
apellido: Optional[str] = None
url_foto_perfil: Optional[str] = None
biografia: Optional[str] = None
class UserLoginRequest(BaseModel):
"""Solicitud para login de usuario"""
email: str = Field(..., description="Email del usuario")
contraseña: str = Field(..., description="Contraseña del usuario")
class UserLoginResponse(BaseModel):
"""Respuesta de login con token JWT"""
access_token: str = Field(..., description="Token JWT de acceso")
token_type: str = Field(default="bearer", description="Tipo de token")
user_id: int = Field(..., description="ID del usuario")
email: str = Field(..., description="Email del usuario")
is_admin: bool = Field(..., description="Indica si el usuario es administrador")
class UserResponse(BaseModel):
"""Respuesta con datos de usuario"""
user_id: int
nombre: str
apellido: str
email: str
fecha_nacimiento: datetime
fecha_creacion: datetime
calificacion: float
numero_reportes: int
url_foto_perfil: Optional[str]
biografia: Optional[str]
is_admin: bool
class Config:
from_attributes = True