Skip to main content

User system with hexagonal architecture

Project description

Vexen-User

Sistema de gestión de usuarios con arquitectura hexagonal, diseñado para integrarse con vexen-rbac y vexen-auth.

Características

  • Arquitectura Hexagonal: Separación clara entre dominio, aplicación e infraestructura
  • Async/Await: Totalmente asíncrono usando SQLAlchemy 2.0+ con asyncpg
  • Type Safe: Completamente tipado para mejor soporte en IDEs
  • API Pública Simple: Similar a FastAPI, fácil de usar
  • Paginación y Filtros: Soporte completo para búsqueda, filtros y paginación
  • Estadísticas: Obtén métricas sobre usuarios del sistema

Implementado

Entidades: User entity completa con validaciones ✅ Repositorios: IUserRepositoryPort (interface) e implementación SQLAlchemy ✅ DTOs: Todas las estructuras de request/response según especificaciones ✅ Casos de Uso: list, get, create, update, delete, stats ✅ Servicio: UserService que orquesta los casos de uso ✅ API Pública: VexenUser class (similar a RBAC) ✅ Adapters: Gestión de sesiones SQLAlchemy ✅ Ejemplo funcional: example_usage.py

Uso Rápido

import asyncio
from vexen_user import VexenUser
from vexen_user.application.dto import CreateUserRequest

async def main():
    user_system = VexenUser(
        database_url="postgresql+asyncpg://user:pass@localhost/db"
    )

    await user_system.init()

    # Crear usuario
    user = await user_system.service.create(
        CreateUserRequest(
            email="user@example.com",
            name="John Doe"
        )
    )

    # Listar usuarios
    users = await user_system.service.list(page=1, page_size=20)

    # Obtener estadísticas
    stats = await user_system.service.stats()

    await user_system.close()

if __name__ == "__main__":
    asyncio.run(main())

Instalación

pip install vexen-user

Estructura del Proyecto

vexen_user/
├── domain/              # Capa de dominio (entidades, puertos)
│   ├── entity/         # User entity
│   └── repository/     # IUserRepositoryPort
├── application/        # Capa de aplicación (casos de uso, DTOs)
│   ├── dto/           # Request/Response DTOs
│   ├── usecase/       # Casos de uso
│   └── service/       # UserService
└── infraestructure/   # Capa de infraestructura (adaptadores)
    └── output/
        └── persistence/
            └── sqlalchemy/  # SQLAlchemy adapter

DTOs Disponibles

Request DTOs

  • CreateUserRequest: Crear nuevo usuario
  • UpdateUserRequest: Actualizar usuario completo
  • PatchUserRequest: Actualizar campos específicos

Response DTOs

  • UserResponse: Información básica de usuario
  • UserExpandedResponse: Información completa con metadatos
  • PaginatedUsersResponse: Lista paginada de usuarios
  • UserStatsResponse: Estadísticas del sistema

Casos de Uso

  • ListUsers: Listar usuarios con paginación y filtros
  • GetUser: Obtener usuario por ID o email
  • CreateUser: Crear nuevo usuario
  • UpdateUser: Actualizar usuario
  • DeleteUser: Eliminar usuario (soft delete)
  • GetUserStats: Obtener estadísticas

Integración con otros sistemas

Este paquete está diseñado para trabajar con:

  • vexen-rbac: Sistema de control de acceso basado en roles
  • vexen-auth: Sistema de autenticación

Desarrollo

# Instalar dependencias de desarrollo
pip install -e ".[dev]"

# Ejecutar tests
pytest

# Formatear código
ruff format .

# Linting
ruff check . --fix

Licencia

MIT

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vexen_user-0.1.5.tar.gz (38.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vexen_user-0.1.5-py3-none-any.whl (21.8 kB view details)

Uploaded Python 3

File details

Details for the file vexen_user-0.1.5.tar.gz.

File metadata

  • Download URL: vexen_user-0.1.5.tar.gz
  • Upload date:
  • Size: 38.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vexen_user-0.1.5.tar.gz
Algorithm Hash digest
SHA256 f827b847934aa91de60721f87b7cd870b7fcf4b29ffd735ff1b9a4f41b1e7c38
MD5 0de5d0682b1a53406b6634c60a8fbfc6
BLAKE2b-256 56fbe3da365fe5524739737ae6634dbf13b2f9936ce7136d655f37ed8b92d550

See more details on using hashes here.

Provenance

The following attestation bundles were made for vexen_user-0.1.5.tar.gz:

Publisher: python-publish.yml on vexen-labs/vexen-user

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vexen_user-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: vexen_user-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 21.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vexen_user-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 11266182a655814d0b352fb7c5f87d47e016a4b40969dd20a59d92180808fdf0
MD5 dcc8154738a583f637b31d4eb70bdc55
BLAKE2b-256 9e954ed39c090ccc2cd54fb765371014443f8cba7a49c79e02f7ea60f72c860e

See more details on using hashes here.

Provenance

The following attestation bundles were made for vexen_user-0.1.5-py3-none-any.whl:

Publisher: python-publish.yml on vexen-labs/vexen-user

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page