update readme
This commit is contained in:
parent
311e5902c9
commit
1feb45539e
73
README.md
73
README.md
@ -2,7 +2,13 @@
|
|||||||
|
|
||||||
Prueba técnica para el puesto de desarrollador Go/C++
|
Prueba técnica para el puesto de desarrollador Go/C++
|
||||||
|
|
||||||
## Comandos útiles
|
## Requisitos previos
|
||||||
|
|
||||||
|
- Docker
|
||||||
|
- Go
|
||||||
|
- Make, si prefieres usar la comodidad de Makefile
|
||||||
|
|
||||||
|
## Rutas disponibles
|
||||||
|
|
||||||
Compilar todos los servicios e iniciar los contenedores Docker.
|
Compilar todos los servicios e iniciar los contenedores Docker.
|
||||||
|
|
||||||
@ -13,16 +19,67 @@ docker compose --env-file <path/to/file> up --build`
|
|||||||
Hacer petición POST con fichero a `/ingest/csv`
|
Hacer petición POST con fichero a `/ingest/csv`
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
curl -X POST http://localhost:8080/ingest/csv -F "file=@meteo.csv"
|
curl -X POST "http://<host>/ingest/csv" -F "file=@<file>.csv"
|
||||||
|
|
||||||
|
curl -X POST "http://localhost:8080/ingest/csv" -F "file@meteo.csv"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Decisiones técnica
|
Hacer petición GET a `/cities` para listar las ciudades
|
||||||
|
|
||||||
1. Hablar sobre la función normalize, repetición de parse float. Justificar que se puede haber extraído a una función, pero ambas opciones son válidas (YAGNI)
|
```bash
|
||||||
|
curl "http://<host>/cities"
|
||||||
|
|
||||||
2. Hablar sobre las sobreabstracciones que se hacen en el código. Hay que busca un punto de equlibrio entre abstraer o ser explícito.
|
curl "http://localhost:8080/cities"
|
||||||
|
```
|
||||||
|
|
||||||
## Entorno desarrollo
|
Hacer petición GET a `/data` para obtener datos en crudo
|
||||||
|
|
||||||
Linux Fedora 41 6.16.11-200.fc42.x86_64
|
```bash
|
||||||
Go 1.25.2
|
curl "http://<host>/data?city=<city>&from=<yyyy-mm-dd>&to=<yyyy-mm-dd>&page=<n>&limit=<n>"
|
||||||
|
|
||||||
|
curl "http://localhost:8080/data?city=Madrid&from=2025-01-01&to=2025-12-31&page=3&limit=2"
|
||||||
|
```
|
||||||
|
|
||||||
|
Hacer petición GET a `/weather/{city}`
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl "http://<host>/weather/<city>?date=<yyyy-mm-dd>&days=<1-10>&unit=<C | F>&agg=<daily | rolling>"
|
||||||
|
|
||||||
|
curl "http://localhost:8090/weather/madrid?date=2025-11-02&days=10&unit=F&agg=rolling"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Requisitos cubiertos
|
||||||
|
|
||||||
|
### Servicio A
|
||||||
|
|
||||||
|
[x] Base de datos
|
||||||
|
[x] Endpoint POST /ingest/csv
|
||||||
|
[x] Listar ciudades en base de datos
|
||||||
|
[x] Mostrar registros en crudo
|
||||||
|
[ ] Especificación OpenAPI
|
||||||
|
|
||||||
|
### Servicio B
|
||||||
|
|
||||||
|
[ ] Especificación OpenAPI
|
||||||
|
[x] Endpoint GET /weather/{city} + parámetros
|
||||||
|
[x] Conversión entre Celsius y Fahrenheit
|
||||||
|
[ ] Caché
|
||||||
|
[x] Tolerancia a fallos
|
||||||
|
|
||||||
|
## Consideraciones
|
||||||
|
|
||||||
|
Hay partes de códigos que son _snippets_ extraídos de una librería de autoría
|
||||||
|
propia. [Repositorio GitHub](https://github.com/zepyrshut/gopher-toolbox). De
|
||||||
|
las cuales son:
|
||||||
|
|
||||||
|
- La conexión con la base de datos, usando el controlador [pgx](https://github.com/jackc/pgx).
|
||||||
|
- La carga de variables de entorno mediante fichero.
|
||||||
|
- La migración de base de datos.
|
||||||
|
|
||||||
|
## Bitácora
|
||||||
|
|
||||||
|
1. Hablar sobre la función normalize, repetición de parse float. Justificar que
|
||||||
|
se puede haber extraído a una función, pero ambas opciones son válidas (YAGNI)
|
||||||
|
|
||||||
|
2. Hablar sobre las sobreabstracciones que se hacen en el código. Hay que busca
|
||||||
|
un punto de equlibrio entre abstraer o ser explícito.
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user