/nss-prueba

Prueba de nivel por NoSoloSoftware

Primary LanguageJava

NSS Reserva Hoteles

Este proyecto contiene una API rest para gestionar las reservas en hoteles. Ofrece la siguientes funcionalidades:

  • Listar hoteles
  • Listar hoteles con disponibilidad entre fechas
  • Abrir disponibilidad en un hotel
  • Hacer reservas
  • Cancelar reservas
  • Ver las reservas que se han realizado para unn hotel en unas determinadas fechas
  • Ver los datos de una reserva

Todas estas funcionalidades se han documentado por medio de OpenApi para poder probarlas, y estarán disponibles una vez se haya iniciado la aplicación.

Puesta en marcha

Este es un ejemplo de cómo ejecutar el proyecto localmente.

Al desplegar el proyecto en local usará una base de datos en memoria H2 para facilitar su puesta en marcha y las pruebas. De este modo, no es necesario configurar ninguna base de datos, ya que se encuentra embebida. Se ha creado una configuración de docker con POSTGRES descrita más adelante en el que si tiene persistencia de datos.

Prerequisitos

Se necesita tener instalado lo siguiente:

Instalación

A continuación se listaran una serie de pasos para ejecutar el proyecto en local.

  1. Clonar el repositorio y entramos enl directorio generado
git clone https://github.com/vikour/nss-prueba.git && cd nss-prueba
  1. Compilar el programa.
./mvnw clean install

usar el siguiente comando en caso de estar en Windows

mvnw.cmd clean install

Uso

Una vez compilado e instalado el programa, iniciar el servicio con el siguiente comando:

java -jar target/nss-reserva-hoteles-1.0.0.jar

Al ejecutarlo se iniciará el servicio REST en la siguietne URL: http://localhost:8080. Por ejemplo, podrá listar los hoteles existentes a través de la siguiente URL: http://localhost:8080/hotels

La documentación del API REST la puede encontrar en la siguiente dirección : http://localhost:8080/swagger-ui/index.html. A través de la esta URL también se puede probar el programa.

También se ha incluido una colección de POSTMAN en la siguiente ruta: src/it/Reserva Hoteles.postman_collection.json

Acceso a la base de datos temporal

Si se quiere saber qué está escribiendo el programa en la base de datos, realice los siguientes pasos con la aplicación apagada.

  1. Iniciar la aplicación con el siguiente comando, así se habilitará el acceso a la base de datos:
./mvnw spring-boot:run

usar el siguiente comando en caso de estar en Windows

mvnw.cmd spring-boot:run
  1. Acceder a la consola por medio del siguiente enlace H2 Console.

  2. Establecer la siguiente configuración:

    • Driver class: org.h2.Driver
    • JDBC URL: jdbc:h2:mem:nss-hoteles-db
    • User name: sa
    • Password: (contraseña vacía no introducir nada)

Una vez realizados los pasos anteriores se mostrará la consola de H2 para ejecutar consultas SQL.

Puesta en marcha - Imagen Docker

Este es un ejemplo de cómo ejecutar el proyecto dockerizado. Usa persistencia de datos con un servicio de postgres en un red interna proporcionada por docker. Se ha utilizado la herramienta docker compose para orquestar la puesta en marcha.

Prerequisitos

Se necesita tener instalado lo siguiente:

Instalación

A continuación se listaran una serie de pasos para ejecutar el proyecto en docker.

  1. Clonar el repositorio y entramos enl directorio generado
git clone https://github.com/vikour/nss-prueba.git && cd nss-prueba
  1. Compilar la imagen en el docker local.
./mvnw clean package jib:dockerBuild

usar el siguiente comando en caso de estar en Windows

mvnw.cmd clean package jib:dockerBuild

Uso

Una vez compilado e instalada la imagen de docker poner el marcha a traves de docker compose:

docker-compose up

Alternativamente se puede iniciar como servicio en background:

docker-compose up -d

Al ejecutarlo se iniciará el servicio REST en la siguietne URL: http://localhost:8080. Por ejemplo, podrá listar los hoteles existentes a través de la siguiente URL: http://localhost:8080/hotels

La documentación del API REST la puede encontrar en la siguiente dirección : http://localhost:8080/swagger-ui/index.html

Descripción de la imagen docker

La imagen de docker contiene las siguientes propiedades de entorno que le son necesarias para acceder al origen de datos:

  • DATASOURCE_URL - JDBC URL hacia la base de datos

ej.: jdbc:postgresql://nss-db/postgres

  • DATASOURCE_DRIVER - Driver de conexión con la base de datos

ej.: org.postgresql.Driver

  • DATASOURCE_USER - Usuario de acceso a la base de datos

ej.: user

  • DATASOURCE_PASS - Contraseña de acceso a la base de datos

ej.: password

  • DATASOURCE_DIALECT - Dialecto usado en la base de datos

ej.: org.hibernate.dialect.PostgreSQLDialect

La imagen ofrecerá servicio por el puerto 8080, pero puede ser modificado por el contenedor hacia otro puerto local.

Contact

Víctor Manuel Ortiz Guardeño - linkedin