Proyecto para el programa ONE-Backend. La app está desarrollada en Java 20 con el framework Spring, usando JPA al tiempo que se realizan consultas y guardado de datos en una base de datos tipo PostgreSQL. Se basa en el consumo de la API de Gutendex, de este modo esta app consulta los libros de la API al tiempo que los guarda en la DB para futuros procesos del menu mismo.
En esta app te encuentras nueve opciones:
1- Buscar libro por título.
2- Listar libros registrados.
3- Listar autores registrados.
4- Listar autores vivos en un determinado año.
5- Listar libros por idioma.
6- Estadisticas de los libros descargados.
7- Listar libros más descargados de la API gutendex.
8- Listar libros más descargados en nuestro registro.
9- Buscar autor por nombre.
0- Salir.
Te dejo aquí los atajos para que puedas verlas de forma más rápida:
- 1. Buscar libro por titulo
- 2. Listar libros registrados
- 3. Listar autores registrados
- 4. Listar autores vivos en un determinado año
- 5. Listar libros por idioma
- 6. Estadisticas de los libros registrados
- 7. Listar libros más descargados de la API gutendex
- 8. Listar libros más descargados de nuestro registro
- 9. Buscar autor por nombre
A continuación exploramos cada opción del menú:
Primero se realiza una consulta a la API gutendex para buscar su libro. La app de fondo valida si el libro ya se encuentra registrado en la db, en tal caso solo mostrará el libro que ya esta registrado para evitar duplicados. De misma forma, se toma la lista de autores y se realiza una busqueda en la db, asi, si el autor ya existe lo traemos para hacer la relación con el nuevo libro (si no esta registrado el libro) o se crea el nuevo autor en caso de no encontrar ninguno en la db. Una vez completadas todas las acciones, imprime en consola la nueva instancia creada.
Es importante notar que no es necesario anotar el titulo completo del libro. Ejemplo de uso:
Se realiza una consulta a la base de datos trayendo todos los libros registrados, posterior a ello se imprimen en consola todos. Finalmente, muestra cuantos libros hay registrados en total. Se muestran en orden de registro. Ejemplo de uso:
Esta función actua igual que la de listar libros, se realiza una consulta a la db para traer a todos los autores e imprimirlos. Adicionalmente muestra todos los libros relacionados a cada autor. Ejemplo de uso:
Se realiza una consulta a los autores de la base de datos filtrandolos por dos condiciones: 1) que su año de nacimiento sea menor o igual al parametro dado. 2) que su año de fallecimiento sea mayor o igual al parametro dado. Así, se garantiza que el listado resultante de autores sean aquellos que estuvieron vivos al rededor del año dado. Ejemplo de uso:
En principio se muestra un pequeño menu con los idiomas disponibles:
Posterior a ingresar la abrevitura, se traera de la base de datos el listado de libros que tengan este idioma en su columna "language". Ejemplo:
En esta opcion se toma todo el listado de libros registrados en la base de datos, se toma la propiedad de "downloads" de cada uno para poder generar las estadisticas pertinentes a partir de la clase DoubleSummaryStatistics de Java.
Finalmente, se presenta un resumen de las estadisticas más importantes en cuestion de descargas de todos los libros registrados, como la media, el dato maximo, etc. Ejemplo de uso:
Aquí traemos el listado general de libros de la API gutendex y filtramos los 10 más descargados. Por defecto la API misma trae en su primera página los trae por los más descargados en orden descendente, asi que solo traemos los primeros 10. Ejemplo de uso:
Se hace una consulta a la base de datos para que traiga de forma descendente 10 libros segun la cantidad de descargas, asi, obtenemos los 10 más descargados que hay registrados. Ejemplo de uso:
Aquí damos uso de las JPA Derived queries para consultar un autor por nombre en la db a partir de si el nombre esta contenido, ignorando el case sensitive. Esta funcionalidad de usó en la primera opcion para poder buscar autores registrados y decidir si crearlos o no. Ejemplo de uso: