Skip to content
Snippets Groups Projects
Commit a0d7b33a authored by migudel's avatar migudel :speech_balloon:
Browse files

Modificación en la arquitectura del monolito

parent cdebbf4a
No related branches found
No related tags found
2 merge requests!26Revert "Funciona register",!20Fix/monolith arquitecture
Showing
with 80 additions and 55 deletions
package com.uva.roomBooking; package com.uva.monolith;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
......
package com.uva.roomBooking.exceptions; package com.uva.monolith.exceptions;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
......
package com.uva.roomBooking.exceptions; package com.uva.monolith.exceptions;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.ResponseStatus;
......
package com.uva.roomBooking.exceptions; package com.uva.monolith.exceptions;
public class InvalidDateRangeException extends RuntimeException { public class InvalidDateRangeException extends RuntimeException {
public InvalidDateRangeException(String message) { public InvalidDateRangeException(String message) {
......
package com.uva.roomBooking.exceptions; package com.uva.monolith.exceptions;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.ResponseStatus;
......
// BookingController.java // BookingController.java
package com.uva.roomBooking.controllers; package com.uva.monolith.services.bookings.controllers;
import com.uva.roomBooking.models.Booking;
import com.uva.roomBooking.models.Room;
import com.uva.roomBooking.models.User;
import com.uva.roomBooking.repositories.BookingRepository;
import com.uva.roomBooking.repositories.RoomRepository;
import com.uva.roomBooking.repositories.UserRepository;
import jakarta.transaction.Transactional; import jakarta.transaction.Transactional;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.HttpStatusCode;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.uva.monolith.services.bookings.models.Booking;
import com.uva.monolith.services.bookings.repositories.BookingRepository;
import com.uva.monolith.services.hotels.models.Room;
import com.uva.monolith.services.hotels.repositories.RoomRepository;
import com.uva.monolith.services.users.models.User;
import com.uva.monolith.services.users.repositories.UserRepository;
import java.time.LocalDate;
import java.util.List; import java.util.List;
@RestController @RestController
...@@ -33,9 +33,29 @@ public class BookingController { ...@@ -33,9 +33,29 @@ public class BookingController {
this.roomRepository = roomRepository; this.roomRepository = roomRepository;
} }
@GetMapping @GetMapping(params = { "start", "end", "roomId" })
public List<Booking> getAllBookings() { public List<Booking> getAllBookings(
return bookingRepository.findAll(); @RequestParam(required = false) LocalDate start,
@RequestParam(required = false) LocalDate end,
@RequestParam(required = false) Integer roomId) {
List<Booking> bookings = null;
if (start != null && end != null) {
bookings = bookingRepository.findByDateRange(start, end);
}
if (roomId != null) {
if (bookings == null) {
bookings = bookingRepository.findByRoomId(roomId);
} else {
bookings = bookings.stream()
.filter(booking -> booking.getRoomId().getId() == roomId)
.toList();
}
}
if (start == null & end == null && roomId == null) {
bookings = bookingRepository.findAll();
}
return bookings;
} }
@PostMapping @PostMapping
......
package com.uva.roomBooking.models; package com.uva.monolith.services.bookings.models;
import jakarta.persistence.Basic; import jakarta.persistence.Basic;
import jakarta.persistence.CascadeType; import jakarta.persistence.CascadeType;
...@@ -13,6 +13,9 @@ import jakarta.persistence.ManyToOne; ...@@ -13,6 +13,9 @@ import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table; import jakarta.persistence.Table;
import java.time.LocalDate; import java.time.LocalDate;
import com.uva.monolith.services.hotels.models.Room;
import com.uva.monolith.services.users.models.User;
@Entity @Entity
@Table(name = "bookings") @Table(name = "bookings")
public class Booking { public class Booking {
......
// BookingRepository.java // BookingRepository.java
package com.uva.roomBooking.repositories; package com.uva.monolith.services.bookings.repositories;
import jakarta.transaction.Transactional; import jakarta.transaction.Transactional;
...@@ -11,9 +11,15 @@ import org.springframework.data.jpa.repository.Modifying; ...@@ -11,9 +11,15 @@ import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import com.uva.roomBooking.models.Booking; import com.uva.monolith.services.bookings.models.Booking;
public interface BookingRepository extends JpaRepository<Booking, Integer> { public interface BookingRepository extends JpaRepository<Booking, Integer> {
@Query("SELECT b FROM Booking b WHERE b.roomId.id = ?1")
List<Booking> findByRoomId(int roomId);
@Query("SELECT b FROM Booking b WHERE b.startDate < ?1 AND b.endDate > ?2")
List<Booking> findByDateRange(@Param("startDate") LocalDate startDate,
@Param("endDate") LocalDate endDate);
@Query("SELECT b FROM Booking b WHERE b.roomId.id = ?1 AND b.startDate < ?2 AND b.endDate > ?3") @Query("SELECT b FROM Booking b WHERE b.roomId.id = ?1 AND b.startDate < ?2 AND b.endDate > ?3")
List<Booking> findByRoomIdAndDateRange(@Param("roomId") int roomId, @Param("startDate") LocalDate startDate, List<Booking> findByRoomIdAndDateRange(@Param("roomId") int roomId, @Param("startDate") LocalDate startDate,
......
package com.uva.roomBooking.controllers; package com.uva.monolith.services.hotels.controllers;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.time.LocalDate; import java.time.LocalDate;
import com.uva.roomBooking.exceptions.HotelNotFoundException;
import com.uva.roomBooking.exceptions.InvalidDateRangeException;
import com.uva.roomBooking.exceptions.InvalidRequestException;
import com.uva.roomBooking.models.Booking;
import com.uva.roomBooking.models.Hotel;
import com.uva.roomBooking.models.Room;
import com.uva.roomBooking.repositories.BookingRepository;
import com.uva.roomBooking.repositories.HotelRepository;
import com.uva.roomBooking.repositories.RoomRepository;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import com.uva.monolith.exceptions.HotelNotFoundException;
import com.uva.monolith.exceptions.InvalidDateRangeException;
import com.uva.monolith.exceptions.InvalidRequestException;
import com.uva.monolith.services.bookings.repositories.BookingRepository;
import com.uva.monolith.services.hotels.models.Hotel;
import com.uva.monolith.services.hotels.models.Room;
import com.uva.monolith.services.hotels.repositories.HotelRepository;
import com.uva.monolith.services.hotels.repositories.RoomRepository;
@RestController @RestController
@RequestMapping("hotels") @RequestMapping("hotels")
@CrossOrigin(origins = "*") @CrossOrigin(origins = "*")
......
package com.uva.roomBooking.models; package com.uva.monolith.services.hotels.models;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
......
package com.uva.roomBooking.models; package com.uva.monolith.services.hotels.models;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.ObjectIdGenerators;
import jakarta.persistence.Basic; import jakarta.persistence.Basic;
import jakarta.persistence.CascadeType; import jakarta.persistence.CascadeType;
import jakarta.persistence.Entity; import jakarta.persistence.Entity;
......
package com.uva.roomBooking.models; package com.uva.monolith.services.hotels.models;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonIdentityInfo;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.ObjectIdGenerators; import com.uva.monolith.services.bookings.models.Booking;
import com.uva.monolith.services.users.models.Tipo;
import jakarta.persistence.Basic; import jakarta.persistence.Basic;
import jakarta.persistence.CascadeType; import jakarta.persistence.CascadeType;
......
package com.uva.roomBooking.repositories; package com.uva.monolith.services.hotels.repositories;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import com.uva.roomBooking.models.Hotel; import com.uva.monolith.services.hotels.models.Hotel;
public interface HotelRepository extends JpaRepository<Hotel, Integer> { public interface HotelRepository extends JpaRepository<Hotel, Integer> {
......
package com.uva.roomBooking.repositories; package com.uva.monolith.services.hotels.repositories;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import com.uva.roomBooking.models.Room; import com.uva.monolith.services.hotels.models.Room;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List; import java.util.List;
......
package com.uva.roomBooking.controllers; package com.uva.monolith.services.users.controllers;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List; import java.util.List;
...@@ -18,10 +18,10 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -18,10 +18,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import com.uva.roomBooking.models.Booking; import com.uva.monolith.services.bookings.models.Booking;
import com.uva.roomBooking.models.User; import com.uva.monolith.services.users.models.User;
import com.uva.roomBooking.models.UserStatus; import com.uva.monolith.services.users.models.UserStatus;
import com.uva.roomBooking.repositories.UserRepository; import com.uva.monolith.services.users.repositories.UserRepository;
@RestController @RestController
@RequestMapping("users") @RequestMapping("users")
......
package com.uva.roomBooking.models; package com.uva.monolith.services.users.models;
public enum Tipo { public enum Tipo {
SINGLE, SINGLE,
......
package com.uva.roomBooking.models; package com.uva.monolith.services.users.models;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.List; import java.util.List;
import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnore;
import com.uva.monolith.services.bookings.models.Booking;
import jakarta.persistence.Basic; import jakarta.persistence.Basic;
import jakarta.persistence.CascadeType; import jakarta.persistence.CascadeType;
......
package com.uva.roomBooking.models; package com.uva.monolith.services.users.models;
public enum UserRol { public enum UserRol {
HOTEL_ADMIN, CONSUMER HOTEL_ADMIN, CONSUMER
......
package com.uva.roomBooking.models; package com.uva.monolith.services.users.models;
public enum UserStatus { public enum UserStatus {
NO_BOOKINGS, WITH_ACTIVE_BOOKINGS, WITH_INACTIVE_BOOKINGS; NO_BOOKINGS, WITH_ACTIVE_BOOKINGS, WITH_INACTIVE_BOOKINGS;
......
package com.uva.roomBooking.repositories; package com.uva.monolith.services.users.repositories;
import java.util.Optional; import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaRepository;
import com.uva.roomBooking.models.User; import com.uva.monolith.services.users.models.User;
public interface UserRepository extends JpaRepository<User, Integer> { public interface UserRepository extends JpaRepository<User, Integer> {
Optional<User> findByEmail(String email); Optional<User> findByEmail(String email);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment