# braianmartinezzz/grupo_2_tp2 architecture

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

- Interactive diagram: https://gitdiagram.com/braianmartinezzz/grupo_2_tp2
- Repository: https://github.com/braianmartinezzz/grupo_2_tp2

## Overview

This is a Spring REST API for a small commerce domain, with endpoints for sales calculations, catalog management, customers, order lookup, and currency conversion/history. The main request flow is client → controller → service → response; orders and currency history also use repositories and persistent state, while the catalog is explicitly in memory. The tree and sampled sources support the sales, catalog, order, and currency flows; customer wiring is indicated by module names but its implementation was not sampled. No README content was provided.

Main entry points: [`src/main/java/com/aydsii/tp2/service/DivisasService.java`](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/service/DivisasService.java) (Conversion and history), [`src/main/java/com/aydsii/tp2/controller/VentasController.java`](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/controller/VentasController.java) (Sales endpoints), [`src/main/java/com/aydsii/tp2/controller/CatalogoController.java`](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/controller/CatalogoController.java) (Catalog endpoints), [`src/main/java/com/aydsii/tp2/controller/ClienteController.java`](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/controller/ClienteController.java) (Customer endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_sales_controller["Sales endpoints"]
  node_catalog_controller["Catalog endpoints"]
  node_customer_controller["Customer endpoints"]
  node_order_controller["Order endpoints"]
  node_currency_controller["Currency endpoints"]
end

subgraph group_commerce["Commerce operations"]
  node_sales_service["Sales calculations<br/>[VentasService.java]"]
  node_catalog_service["Catalog operations"]
  node_catalog_state["In-memory catalog"]
  node_customer_service["Customer operations"]
  node_order_service["Order search<br/>[PedidoService.java]"]
  node_sales_storage["Sales sample storage<br/>[Storage.java]"]
end

subgraph group_currency["Currency services"]
  node_currency_service["Conversion and history"]
end

subgraph group_persistence["Persistence"]
  node_customer_repo["Customer repository"]
  node_order_repo["Order repository"]
  node_history_repo["Conversion history repository"]
  node_database[("Relational database")]
end

node_client(("API client"))
node_frankfurter{{"Frankfurter API"}}

node_client -->|"submits sales"| node_sales_controller
node_client -->|"manages catalog"| node_catalog_controller
node_client -->|"manages customers"| node_customer_controller
node_client -->|"searches orders"| node_order_controller
node_client -->|"requests conversion"| node_currency_controller
node_sales_controller -->|"calculates sales"| node_sales_service
node_catalog_controller -->|"manages products"| node_catalog_service
node_catalog_service -->|"reads and updates"| node_catalog_state
node_customer_controller -->|"delegates requests"| node_customer_service
node_customer_service -->|"accesses customers"| node_customer_repo
node_order_controller -->|"filters orders"| node_order_service
node_order_service -->|"queries orders"| node_order_repo
node_currency_controller -->|"requests conversion"| node_currency_service
node_currency_service -.->|"fetches rates"| node_frankfurter
node_currency_service -->|"saves and reads"| node_history_repo
node_customer_repo -->|"persists customers"| node_database
node_order_repo -->|"queries orders"| node_database
node_history_repo -->|"persists history"| node_database

click node_sales_controller "https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/controller/VentasController.java"
click node_catalog_controller "https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/controller/CatalogoController.java"
click node_customer_controller "https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/controller/ClienteController.java"
click node_order_controller "https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/controller/PedidoController.java"
click node_currency_controller "https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/controller/DivisasController.java"
click node_sales_service "https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/service/VentasService.java"
click node_catalog_service "https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/service/CatalogoService.java"
click node_catalog_state "https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/service/CatalogoService.java"
click node_customer_service "https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/service/ClienteService.java"
click node_order_service "https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/service/PedidoService.java"
click node_currency_service "https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/service/DivisasService.java"
click node_sales_storage "https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/Storage.java"
click node_customer_repo "https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/repository/ClienteRepository.java"
click node_order_repo "https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/repository/PedidoRepository.java"
click node_history_repo "https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/repository/HistorialConversionRepository.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_sales_controller,node_catalog_controller,node_customer_controller,node_order_controller,node_currency_controller,node_client toneBlue
class node_sales_service,node_catalog_service,node_catalog_state,node_customer_service,node_order_service,node_sales_storage toneAmber
class node_currency_service,node_frankfurter toneMint
class node_customer_repo,node_order_repo,node_history_repo,node_database toneRose
```

## Components

### REST API

- [Sales endpoints](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/controller/VentasController.java): `src/main/java/com/aydsii/tp2/controller/VentasController.java`
- [Catalog endpoints](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/controller/CatalogoController.java): `src/main/java/com/aydsii/tp2/controller/CatalogoController.java`
- [Customer endpoints](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/controller/ClienteController.java): `src/main/java/com/aydsii/tp2/controller/ClienteController.java`
- [Order endpoints](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/controller/PedidoController.java): `src/main/java/com/aydsii/tp2/controller/PedidoController.java`
- [Currency endpoints](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/controller/DivisasController.java): `src/main/java/com/aydsii/tp2/controller/DivisasController.java`

### Commerce operations

- [Sales calculations](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/service/VentasService.java): `src/main/java/com/aydsii/tp2/service/VentasService.java`
- [Catalog operations](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/service/CatalogoService.java): `src/main/java/com/aydsii/tp2/service/CatalogoService.java`
- [In-memory catalog](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/service/CatalogoService.java): `src/main/java/com/aydsii/tp2/service/CatalogoService.java`
- [Customer operations](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/service/ClienteService.java): `src/main/java/com/aydsii/tp2/service/ClienteService.java`
- [Order search](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/service/PedidoService.java): `src/main/java/com/aydsii/tp2/service/PedidoService.java`
- [Sales sample storage](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/Storage.java): `src/main/java/com/aydsii/tp2/Storage.java`

### Currency services

- [Conversion and history](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/service/DivisasService.java): `src/main/java/com/aydsii/tp2/service/DivisasService.java`

### Persistence

- [Customer repository](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/repository/ClienteRepository.java): `src/main/java/com/aydsii/tp2/repository/ClienteRepository.java`
- [Order repository](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/repository/PedidoRepository.java): `src/main/java/com/aydsii/tp2/repository/PedidoRepository.java`
- [Conversion history repository](https://github.com/braianmartinezzz/grupo_2_tp2/blob/master/src/main/java/com/aydsii/tp2/repository/HistorialConversionRepository.java): `src/main/java/com/aydsii/tp2/repository/HistorialConversionRepository.java`
- **Relational database**

### Other components

- **API client**
- **Frankfurter API**

## Connections

- API client → Sales endpoints: submits sales
- API client → Catalog endpoints: manages catalog
- API client → Customer endpoints: manages customers
- API client → Order endpoints: searches orders
- API client → Currency endpoints: requests conversion
- Sales endpoints → Sales calculations: calculates sales
- Catalog endpoints → Catalog operations: manages products
- Catalog operations → In-memory catalog: reads and updates
- Customer endpoints → Customer operations: delegates requests
- Customer operations → Customer repository: accesses customers
- Order endpoints → Order search: filters orders
- Order search → Order repository: queries orders
- Currency endpoints → Conversion and history: requests conversion
- Conversion and history → Frankfurter API: fetches rates
- Conversion and history → Conversion history repository: saves and reads
- Customer repository → Relational database: persists customers
- Order repository → Relational database: queries orders
- Conversion history repository → Relational database: persists history
