55 lines
1.8 KiB
Python
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
|
|
|