Desarrollar una API REST básica para un sistema de biblioteca utilizando Spring Boot. El candidato debe demostrar su capacidad para crear endpoints funcionales y manejar relaciones entre entidades.
- Java 11+
- Spring Boot
- Spring Data JPA
- H2 Database (en memoria)
- Maven
Una biblioteca necesita un sistema para gestionar el préstamo de libros. El sistema debe permitir registrar libros, usuarios y controlar los préstamos realizados.
Implementar tres entidades con las siguientes propiedades mínimas:
Book
- id, title, author, isbn, available (boolean)
User
- id, name, email
Loan
- id, book (relación), user (relación), loanDate, returnDate
Los siguientes endpoints son obligatorios y serán el foco principal de la evaluación:
- POST
/api/books
- Debe recibir: title, author, isbn
- El libro se crea con
available = true
por defecto
- POST
/api/users
- Debe recibir: name, email
- El email debe ser único
- POST
/api/loans?bookId={id}&userId={id}
- Validar que el libro esté disponible
- Cambiar el estado del libro a
available = false
- Establecer
loanDate
con la fecha actual
- GET
/api/loans/user/{userId}
- Retornar todos los préstamos del usuario
- PUT
/api/loans/{id}/return
- Establecer
returnDate
con la fecha actual - Cambiar el estado del libro a
available = true
- No se puede prestar un libro que no está disponible
- Al prestar un libro, automáticamente debe marcarse como no disponible
- Al devolver un libro, automáticamente debe marcarse como disponible
Crear libro:
{
"title": "1984",
"author": "George Orwell",
"isbn": "978-0-452-28423-4"
}
Crear usuario:
{
"name": "Ana García",
"email": "[email protected]"
}
**Tiempo: 60 minutos.