# 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 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.