implementacion - Lemoncode/embalse-info GitHub Wiki
Global
Estructura del mono repo
.
├── packages
│ ├── db-model
│ └── db-commands-import
├── integrations
│ ├── arcgis
│ │ ├── integration
│ │ └── console-runner
│ ├── scrapi-cuenca-andalucia
│ │ ├── integration
│ │ └── console-runner
│ └── scraping-cuenca-cantabrico
│ ├── integration
│ └── console-runner
├── functions
│ ├── arcgis-function
│ └── scraping-functions
├── rest-api (*) Lo vamos a eliminar y lo dejamos en NextJS
└── front
Tanto packages
como integrations
serán librerías internas y tendrás dependencia de compilación.
La idea es que podamos probar cada herramienta de integración con un console runner, que por ejemplo podría volcar a un fichero.
Las azure functions
usaran esas integraciones y tiraran de db-commands-import para volcarlas a BBDD.
Backend
Modelado
Ver modelo en proyecto (pedir permiso): https://drive.google.com/open?id=1y6TD1BQqxnzuzYa6UQuqZDdmxZEP87YW&usp=drive_fs
https://github.com/Lemoncode/gex-doc
Propuesta End points
Duda
¿Utilizamos GET para las lecturas o usamos POSTs y así podemos meter cuerpo con parametros?
Endpoints
Obtener datos de un embalse
Esto lo que haremos cuando queramos cargar los datos de un embalse, creo que a nivel posicionamiento deberíamos de generar un slug para cada embalse (fragmento que le pasemos como paremetro)
Verbo: GET ?
Parametros:
// Usamos el _id interno de mongo o el embalse_id?
// Creo que mejor nombre, pero tener como slug, para así poder tener SEO
nombre : string
Respuesta
{
"embalse_id": "E12345",
"nombre": "Embalse El Valle",
"cuenca": {
"id": "C456",
"nombre": "Cuenca del Río Verde"
},
"provincia": {
"nombre": "Granada"
},
"capacidad": 120000000,
"aguaActual": 85000000,
"fechaMedidaAguaActual": "2025-06-20",
"capacidad_total": 120000000,
"uso": ["abastecimiento", "riego", "generación eléctrica"],
"descripcion": "El embalse El Valle es una infraestructura hidráulica clave en la provincia de Granada. Se construyó para garantizar el suministro de agua potable, el riego agrícola y la producción de energía hidroeléctrica. Además, actúa como regulador del caudal del río Verde, contribuyendo a la prevención de inundaciones."
}
Obtener listado de provincias
Esto nos servira para que un crawler pueda econtrar todos los pantanos, podríamos poner en el footer todos las provincias y al pinchar en una de ella fuera al listado de embalses.
También se podría hacer por comunidad autónoma.
Verbo: GET ?
Parametros: Ninguno
Respuesta
[
{ "id": 1, "slug": "alava", "nombre": "Álava" },
{ "id": 2, "slug": "albacete", "nombre": "Albacete" },
{ "id": 3, "slug": "alicante", "nombre": "Alicante" },
{ "id": 4, "slug": "almeria", "nombre": "Almería" },
{ "id": 5, "slug": "asturias", "nombre": "Asturias" },
{ "id": 6, "slug": "avila", "nombre": "Ávila" },
{ "id": 7, "slug": "badajoz", "nombre": "Badajoz" },
{ "id": 8, "slug": "barcelona", "nombre": "Barcelona" },
{ "id": 9, "slug": "burgos", "nombre": "Burgos" },
{ "id": 10, "slug": "caceres", "nombre": "Cáceres" },
{ "id": 11, "slug": "cadiz", "nombre": "Cádiz" },
{ "id": 12, "slug": "cantabria", "nombre": "Cantabria" },
{ "id": 13, "slug": "castellon", "nombre": "Castellón" },
{ "id": 14, "slug": "ciudad-real", "nombre": "Ciudad Real" },
{ "id": 15, "slug": "cordoba", "nombre": "Córdoba" },
{ "id": 16, "slug": "cuenca", "nombre": "Cuenca" },
{ "id": 17, "slug": "gerona", "nombre": "Gerona" },
{ "id": 18, "slug": "granada", "nombre": "Granada" },
{ "id": 19, "slug": "guadalajara", "nombre": "Guadalajara" },
{ "id": 20, "slug": "guipuzcoa", "nombre": "Guipúzcoa" },
{ "id": 21, "slug": "huelva", "nombre": "Huelva" },
{ "id": 22, "slug": "huesca", "nombre": "Huesca" },
{ "id": 23, "slug": "jaen", "nombre": "Jaén" },
{ "id": 24, "slug": "la-coruna", "nombre": "La Coruña" },
{ "id": 25, "slug": "la-rioja", "nombre": "La Rioja" },
{ "id": 26, "slug": "las-palmas", "nombre": "Las Palmas" },
{ "id": 27, "slug": "leon", "nombre": "León" },
{ "id": 28, "slug": "lerida", "nombre": "Lérida" },
{ "id": 29, "slug": "lugo", "nombre": "Lugo" },
{ "id": 30, "slug": "madrid", "nombre": "Madrid" },
{ "id": 31, "slug": "malaga", "nombre": "Málaga" },
{ "id": 32, "slug": "murcia", "nombre": "Murcia" },
{ "id": 33, "slug": "navarra", "nombre": "Navarra" },
{ "id": 34, "slug": "orense", "nombre": "Orense" },
{ "id": 35, "slug": "palencia", "nombre": "Palencia" },
{ "id": 36, "slug": "pontevedra", "nombre": "Pontevedra" },
{ "id": 37, "slug": "salamanca", "nombre": "Salamanca" },
{ "id": 38, "slug": "santa-cruz-de-tenerife", "nombre": "Santa Cruz de Tenerife" },
{ "id": 39, "slug": "segovia", "nombre": "Segovia" },
{ "id": 40, "slug": "sevilla", "nombre": "Sevilla" },
{ "id": 41, "slug": "soria", "nombre": "Soria" },
{ "id": 42, "slug": "tarragona", "nombre": "Tarragona" },
{ "id": 43, "slug": "teruel", "nombre": "Teruel" },
{ "id": 44, "slug": "toledo", "nombre": "Toledo" },
{ "id": 45, "slug": "valencia", "nombre": "Valencia" },
{ "id": 46, "slug": "valladolid", "nombre": "Valladolid" },
{ "id": 47, "slug": "vizcaya", "nombre": "Vizcaya" },
{ "id": 48, "slug": "zamora", "nombre": "Zamora" },
{ "id": 49, "slug": "zaragoza", "nombre": "Zaragoza" },
{ "id": 50, "slug": "ceuta-y-melilla", "nombre": "Ceuta y Melilla" }
]
Obtener embalse por provincia
Y ahora un endpoint que por provincia me dice que embalses tenemos.
[
{
"embalse_id": "GR001",
"nombre": "Embalse de Quéntar",
"cuenca": {
"id": "CU001",
"nombre": "Cuenca del Guadalquivir"
},
"provincia": {
"nombre": "Granada"
},
"capacidad": 13500000,
"aguaActual": 9200000,
"fechaMedidaAguaActual": "2025-06-20",
"capacidad_total": 13500000,
"uso": ["abastecimiento", "riego"],
"descripcion": "El embalse de Quéntar se ubica en la Sierra de Huétor. Es fundamental para el suministro de agua potable a Granada capital y parte de su área metropolitana."
},
{
"embalse_id": "GR002",
"nombre": "Embalse de Canales",
"cuenca": {
"id": "CU001",
"nombre": "Cuenca del Guadalquivir"
},
"provincia": {
"nombre": "Granada"
},
"capacidad": 70000000,
"aguaActual": 54000000,
"fechaMedidaAguaActual": "2025-06-20",
"capacidad_total": 70000000,
"uso": ["abastecimiento", "riego", "hidroeléctrico"],
"descripcion": "Situado junto al embalse de Quéntar, el embalse de Canales sirve de regulación y apoyo para el suministro de agua y producción de energía hidroeléctrica."
},
{
"embalse_id": "GR003",
"nombre": "Embalse de Rules",
"cuenca": {
"id": "CU002",
"nombre": "Cuenca del Guadalfeo"
},
"provincia": {
"nombre": "Granada"
},
"capacidad": 114000000,
"aguaActual": 88000000,
"fechaMedidaAguaActual": "2025-06-20",
"capacidad_total": 114000000,
"uso": ["riego", "control de avenidas"],
"descripcion": "El embalse de Rules, en la costa de Granada, fue diseñado para el riego intensivo del valle del río Guadalfeo y como protección contra inundaciones."
}
]
Busqueda por texto libre
En la página principal de infoembalses, mostraremos un campo de texto libre para buscar, podemos empezar por dejar buscar por el nombre del pantano (más adelante podríamos meter más campos), y te puede devolver una lista de pantanos que cumplen con el patrón de busqueda (podría ser nombre pantano, slug, provincia para así dar algo de contexto).
Verbo: GET ?
Parametros:
busqueda: string
Respuesta
[
{
"embalse_id": "GR001",
"slug": "embalse-de-quentar",
"nombre": "Embalse de Quéntar",
"provincia": "Granada"
},
{
"embalse_id": "GR002",
"slug": "embalse-de-canales",
"nombre": "Embalse de Canales",
"provincia": "Granada"
},
{
"embalse_id": "GR003",
"slug": "embalse-de-rules",
"nombre": "Embalse de Rules",
"provincia": "Granada"
},
{
"embalse_id": "SE001",
"slug": "embalse-del-pintado",
"nombre": "Embalse del Pintado",
"provincia": "Sevilla"
},
{
"embalse_id": "MA001",
"slug": "embalse-de-la-vinuela",
"nombre": "Embalse de La Viñuela",
"provincia": "Málaga"
},
{
"embalse_id": "HU001",
"slug": "embalse-de-aracena",
"nombre": "Embalse de Aracena",
"provincia": "Huelva"
}
]