diff --git a/README.md b/README.md index cf96f78..a4fdbe8 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,13 @@ 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. @@ -13,16 +19,67 @@ docker compose --env-file up --build` Hacer petición POST con fichero a `/ingest/csv` ```bash -curl -X POST http://localhost:8080/ingest/csv -F "file=@meteo.csv" +curl -X POST "http:///ingest/csv" -F "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:///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 -Go 1.25.2 +```bash +curl "http:///data?city=&from=&to=&page=&limit=" + +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:///weather/?date=&days=<1-10>&unit=&agg=" + +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.