# meteologica Prueba técnica para el puesto de desarrollador Go/C++ ## Requisitos previos - Docker - Go - Make, si prefieres usar la comodidad de Makefile ## Rutas disponibles Compilar todos los servicios e iniciar los contenedores Docker. ```bash docker compose --env-file up --build` ``` Hacer petición POST con fichero a `/ingest/csv` ```bash curl -X POST "http:///ingest/csv" -F "file=@.csv" curl -X POST "http://localhost:8080/ingest/csv" -F "file@meteo.csv" ``` Hacer petición GET a `/cities` para listar las ciudades ```bash curl "http:///cities" curl "http://localhost:8080/cities" ``` Hacer petición GET a `/data` para obtener datos en crudo ```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 Recientemente hice otra prueba técnica para el mismo puesto y mismo lenguaje distintas tecnologías, en ese caso era para trabajar con mensajería NATS, puedes ver más 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.