# sofiaolmospino/paprueba architecture

> Architecture diagram of the GitHub repository sofiaolmospino/paprueba, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sofiaolmospino/paprueba
- Repository: https://github.com/sofiaolmospino/paprueba

## Overview

EventHub exposes event creation, listing, lookup, update, and deletion through a Spring web API. The controller validates request DTOs and delegates business rules to EventoService, which checks duplicate names and delegates persistence through EventoRepository. The sampled PostgreSQL adapter performs database operations; an in-memory adapter exists but its runtime selection is not shown. SesionEvento and Evento model a session association, but no session-management workflow is present in the tree. The README is empty, so capabilities beyond the sampled event CRUD are not established.

Main entry points: [`src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/adapter/in/web/EventoController.java`](https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/adapter/in/web/EventoController.java) (Event controller), [`src/main/java/com/eventhub/paprueba/evento/evento/application/EventoService.java`](https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/application/EventoService.java) (Event service), [`src/main/java/com/eventhub/paprueba/evento/evento/domain/Evento.java`](https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/domain/Evento.java) (Event entity), [`src/main/java/com/eventhub/paprueba/evento/evento/domain/port/EventoRepository.java`](https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/domain/port/EventoRepository.java) (Repository port)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Web API"]
  node_controller["Event controller"]
  node_create_dto["Create request"]
  node_update_dto["Update request"]
  node_response_dto["Event response"]
end

subgraph group_logic["Event logic"]
  node_service["Event service<br/>[EventoService.java]"]
  node_repo_port["Repository port"]
end

subgraph group_storage["Persistence"]
  node_postgres["PostgreSQL adapter"]
  node_database[("PostgreSQL database")]
  node_memory["Memory adapter"]
end

subgraph group_model["Domain model"]
  node_event["Event entity<br/>[Evento.java]"]
  node_event_state["Event state<br/>[EstadoEvento.java]"]
  node_session["Event session<br/>[SesionEvento.java]"]
  node_not_found["Missing event error"]
  node_duplicate["Duplicate name error"]
end

node_client(("API client"))

node_client -->|"calls API"| node_controller
node_controller -->|"accepts create"| node_create_dto
node_controller -->|"accepts update"| node_update_dto
node_controller -->|"delegates CRUD"| node_service
node_service -->|"calls repository"| node_repo_port
node_service -->|"creates and updates"| node_event
node_service -->|"raises"| node_not_found
node_service -->|"raises"| node_duplicate
node_controller -->|"maps results"| node_response_dto
node_event -->|"holds state"| node_event_state
node_event -->|"holds sessions"| node_session
node_postgres -->|"implements port"| node_repo_port
node_postgres -->|"reads and writes"| node_database
node_memory -.->|"implements port"| node_repo_port

click node_controller "https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/adapter/in/web/EventoController.java"
click node_create_dto "https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/adapter/in/web/dto/CrearEventoRequest.java"
click node_update_dto "https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/adapter/in/web/dto/ActualizarEventoRequest.java"
click node_response_dto "https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/adapter/in/web/dto/EventoResponse.java"
click node_service "https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/application/EventoService.java"
click node_repo_port "https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/domain/port/EventoRepository.java"
click node_event "https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/domain/Evento.java"
click node_event_state "https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/domain/EstadoEvento.java"
click node_session "https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/sesionevento/domain/SesionEvento.java"
click node_not_found "https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/domain/exception/EventoNoEncontradoException.java"
click node_duplicate "https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/domain/exception/NombreEventoDuplicadoException.java"
click node_postgres "https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/persistence/EventoRepositoryPostgres.java"
click node_memory "https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/memory/EventoRepositoryEnMemoria.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_controller,node_create_dto,node_update_dto,node_response_dto,node_client toneBlue
class node_service,node_repo_port toneAmber
class node_postgres,node_database,node_memory toneMint
class node_event,node_event_state,node_session,node_not_found,node_duplicate toneRose
```

## Components

### Web API

- [Event controller](https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/adapter/in/web/EventoController.java): `src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/adapter/in/web/EventoController.java`
- [Create request](https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/adapter/in/web/dto/CrearEventoRequest.java): `src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/adapter/in/web/dto/CrearEventoRequest.java`
- [Update request](https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/adapter/in/web/dto/ActualizarEventoRequest.java): `src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/adapter/in/web/dto/ActualizarEventoRequest.java`
- [Event response](https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/adapter/in/web/dto/EventoResponse.java): `src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/adapter/in/web/dto/EventoResponse.java`

### Event logic

- [Event service](https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/application/EventoService.java): `src/main/java/com/eventhub/paprueba/evento/evento/application/EventoService.java`
- [Repository port](https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/domain/port/EventoRepository.java): `src/main/java/com/eventhub/paprueba/evento/evento/domain/port/EventoRepository.java`

### Persistence

- [PostgreSQL adapter](https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/persistence/EventoRepositoryPostgres.java): `src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/persistence/EventoRepositoryPostgres.java`
- **PostgreSQL database**
- [Memory adapter](https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/memory/EventoRepositoryEnMemoria.java): `src/main/java/com/eventhub/paprueba/evento/evento/infrastructure/memory/EventoRepositoryEnMemoria.java`

### Domain model

- [Event entity](https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/domain/Evento.java): `src/main/java/com/eventhub/paprueba/evento/evento/domain/Evento.java`
- [Event state](https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/domain/EstadoEvento.java): `src/main/java/com/eventhub/paprueba/evento/evento/domain/EstadoEvento.java`
- [Event session](https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/sesionevento/domain/SesionEvento.java): `src/main/java/com/eventhub/paprueba/sesionevento/domain/SesionEvento.java`
- [Missing event error](https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/domain/exception/EventoNoEncontradoException.java): `src/main/java/com/eventhub/paprueba/evento/evento/domain/exception/EventoNoEncontradoException.java`
- [Duplicate name error](https://github.com/sofiaolmospino/paprueba/blob/main/src/main/java/com/eventhub/paprueba/evento/evento/domain/exception/NombreEventoDuplicadoException.java): `src/main/java/com/eventhub/paprueba/evento/evento/domain/exception/NombreEventoDuplicadoException.java`

### Other components

- **API client**

## Connections

- API client → Event controller: calls API
- Event controller → Create request: accepts create
- Event controller → Update request: accepts update
- Event controller → Event service: delegates CRUD
- Event service → Repository port: calls repository
- Event service → Event entity: creates and updates
- Event service → Missing event error: raises
- Event service → Duplicate name error: raises
- Event controller → Event response: maps results
- Event entity → Event state: holds state
- Event entity → Event session: holds sessions
- PostgreSQL adapter → Repository port: implements port
- PostgreSQL adapter → PostgreSQL database: reads and writes
- Memory adapter → Repository port: implements port
