diff --git a/src/main/java/com/grilledsausage/molva/api/controller/preference/PreferenceController.java b/src/main/java/com/grilledsausage/molva/api/controller/preference/PreferenceController.java new file mode 100644 index 0000000..452e8f8 --- /dev/null +++ b/src/main/java/com/grilledsausage/molva/api/controller/preference/PreferenceController.java @@ -0,0 +1,34 @@ +package com.grilledsausage.molva.api.controller.preference; + +import com.grilledsausage.molva.api.dto.preference.FilmmakerPreferenceResponseDto; +import com.grilledsausage.molva.api.entity.user.User; +import com.grilledsausage.molva.api.service.preference.PreferenceService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.web.bind.annotation.*; + +@RequiredArgsConstructor +@RestController +@RequestMapping("/api/preference") +public class PreferenceController { + + private final PreferenceService preferenceService; + + @PostMapping("/filmmaker") + public ResponseEntity preferFilmmaker(@AuthenticationPrincipal User user, @RequestBody Long filmmakerId) { + + return ResponseEntity.ok(FilmmakerPreferenceResponseDto.from(preferenceService.preferFilmmaker(user, filmmakerId))); + + } + + @DeleteMapping("/filmmaker") + public ResponseEntity cancelPreferringFilmmaker(@AuthenticationPrincipal User user, @RequestBody Long filmmakerId) { + + preferenceService.cancelPreferringFilmmaker(user, filmmakerId); + + return ResponseEntity.ok("success"); + + } + +} diff --git a/src/main/java/com/grilledsausage/molva/api/controller/rating/RatingController.java b/src/main/java/com/grilledsausage/molva/api/controller/rating/RatingController.java new file mode 100644 index 0000000..fc62e48 --- /dev/null +++ b/src/main/java/com/grilledsausage/molva/api/controller/rating/RatingController.java @@ -0,0 +1,36 @@ +package com.grilledsausage.molva.api.controller.rating; + +import com.grilledsausage.molva.api.dto.rating.MovieRatingRequestDto; +import com.grilledsausage.molva.api.dto.rating.MovieRatingResponseDto; +import com.grilledsausage.molva.api.entity.user.User; +import com.grilledsausage.molva.api.service.rating.RatingService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.annotation.AuthenticationPrincipal; +import org.springframework.web.bind.annotation.*; + +@RequiredArgsConstructor +@RestController +@RequestMapping("/api/rating") +public class RatingController { + + private final RatingService ratingService; + + @PostMapping("/movie") + public ResponseEntity rateMovie(@AuthenticationPrincipal User user, @RequestBody MovieRatingRequestDto movieRatingRequestDto) { + + return ResponseEntity.ok(MovieRatingResponseDto.from(ratingService.rateMovie(user, movieRatingRequestDto))); + + } + + @DeleteMapping("/movie") + public ResponseEntity cancelRatingMovie(@AuthenticationPrincipal User user, @RequestBody Long movieId) { + + ratingService.cancelRatingMovie(user, movieId); + + return ResponseEntity.ok("success"); + + } + + +} diff --git a/src/main/java/com/grilledsausage/molva/api/dto/preference/FilmmakerPreferenceResponseDto.java b/src/main/java/com/grilledsausage/molva/api/dto/preference/FilmmakerPreferenceResponseDto.java new file mode 100644 index 0000000..94c53dc --- /dev/null +++ b/src/main/java/com/grilledsausage/molva/api/dto/preference/FilmmakerPreferenceResponseDto.java @@ -0,0 +1,45 @@ +package com.grilledsausage.molva.api.dto.preference; + + +import com.grilledsausage.molva.api.entity.preference.Preference; +import lombok.Builder; +import lombok.Data; + +@Data +public class FilmmakerPreferenceResponseDto { + + private Long id; + + private Long code; + + private String name; + + private String type; + + private String image; + + private Boolean isInSurvey; + + @Builder + public FilmmakerPreferenceResponseDto(Long id, Long code, String name, String type, String image, Boolean isInSurvey) { + this.id = id; + this.code = code; + this.name = name; + this.type = type; + this.image = image; + this.isInSurvey = isInSurvey; + } + + public static FilmmakerPreferenceResponseDto from(Preference preference) { + return FilmmakerPreferenceResponseDto + .builder() + .id(preference.getFilmmaker().getId()) + .code(preference.getFilmmaker().getCode()) + .name(preference.getFilmmaker().getName()) + .type(preference.getFilmmaker().getType()) + .image(preference.getFilmmaker().getImage()) + .isInSurvey(preference.getFilmmaker().getIsInSurvey()) + .build(); + } + +} diff --git a/src/main/java/com/grilledsausage/molva/api/dto/rating/MovieRatingRequestDto.java b/src/main/java/com/grilledsausage/molva/api/dto/rating/MovieRatingRequestDto.java new file mode 100644 index 0000000..41e5ca8 --- /dev/null +++ b/src/main/java/com/grilledsausage/molva/api/dto/rating/MovieRatingRequestDto.java @@ -0,0 +1,12 @@ +package com.grilledsausage.molva.api.dto.rating; + +import lombok.Data; + +@Data +public class MovieRatingRequestDto { + + Long movieId; + + Double movieRating; + +} diff --git a/src/main/java/com/grilledsausage/molva/api/dto/rating/MovieRatingResponseDto.java b/src/main/java/com/grilledsausage/molva/api/dto/rating/MovieRatingResponseDto.java new file mode 100644 index 0000000..a222f13 --- /dev/null +++ b/src/main/java/com/grilledsausage/molva/api/dto/rating/MovieRatingResponseDto.java @@ -0,0 +1,40 @@ +package com.grilledsausage.molva.api.dto.rating; + +import com.grilledsausage.molva.api.entity.rating.Rating; +import lombok.Builder; +import lombok.Data; + +@Data +public class MovieRatingResponseDto { + + private Long id; + + private Long code; + + private String name; + + private String image; + + private Double rating; + + @Builder + public MovieRatingResponseDto(Long id, Long code, String name, String image, Double rating) { + this.id = id; + this.code = code; + this.name = name; + this.image = image; + this.rating = rating; + } + + public static MovieRatingResponseDto from(Rating rating) { + return MovieRatingResponseDto + .builder() + .id(rating.getMovie().getId()) + .code(rating.getMovie().getCode()) + .name(rating.getMovie().getName()) + .image(rating.getMovie().getImage()) + .rating(rating.getUserRating()) + .build(); + } + +} diff --git a/src/main/java/com/grilledsausage/molva/api/entity/filmmaker/Filmmaker.java b/src/main/java/com/grilledsausage/molva/api/entity/filmmaker/Filmmaker.java index d133e1e..0fbe474 100644 --- a/src/main/java/com/grilledsausage/molva/api/entity/filmmaker/Filmmaker.java +++ b/src/main/java/com/grilledsausage/molva/api/entity/filmmaker/Filmmaker.java @@ -18,7 +18,7 @@ public class Filmmaker { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "filmmaker_id", nullable = false) + @Column(name = "filmmaker_id") private Long id; @Column(name = "code", nullable = false, unique = true) @@ -40,8 +40,7 @@ public class Filmmaker { private List participations = new ArrayList<>(); @Builder - public Filmmaker(Long id, Long code, String name, String type, String image, Boolean isInSurvey) { - this.id = id; + public Filmmaker(Long code, String name, String type, String image, Boolean isInSurvey) { this.code = code; this.name = name; this.type = type; diff --git a/src/main/java/com/grilledsausage/molva/api/entity/movie/Movie.java b/src/main/java/com/grilledsausage/molva/api/entity/movie/Movie.java index ce3d6f1..1ecd39f 100644 --- a/src/main/java/com/grilledsausage/molva/api/entity/movie/Movie.java +++ b/src/main/java/com/grilledsausage/molva/api/entity/movie/Movie.java @@ -15,7 +15,7 @@ public class Movie { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "rating_id") + @Column(name = "movie_id") private Long id; @Column(name = "code", unique = true, nullable = false) diff --git a/src/main/java/com/grilledsausage/molva/api/entity/participation/Participation.java b/src/main/java/com/grilledsausage/molva/api/entity/participation/Participation.java index 5119fdb..cb6c563 100644 --- a/src/main/java/com/grilledsausage/molva/api/entity/participation/Participation.java +++ b/src/main/java/com/grilledsausage/molva/api/entity/participation/Participation.java @@ -3,6 +3,7 @@ import com.grilledsausage.molva.api.entity.filmmaker.Filmmaker; import com.grilledsausage.molva.api.entity.movie.Movie; import lombok.AccessLevel; +import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; @@ -16,7 +17,7 @@ public class Participation { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "participation_id", nullable = false) + @Column(name = "participation_id") private Long id; @ManyToOne @@ -27,4 +28,9 @@ public class Participation { @JoinColumn(name = "filmmaker_id", nullable = false) private Filmmaker filmmaker; + @Builder + public Participation(Movie movie, Filmmaker filmmaker) { + this.movie = movie; + this.filmmaker = filmmaker; + } } diff --git a/src/main/java/com/grilledsausage/molva/api/entity/preference/Preference.java b/src/main/java/com/grilledsausage/molva/api/entity/preference/Preference.java new file mode 100644 index 0000000..ebd148a --- /dev/null +++ b/src/main/java/com/grilledsausage/molva/api/entity/preference/Preference.java @@ -0,0 +1,36 @@ +package com.grilledsausage.molva.api.entity.preference; + +import com.grilledsausage.molva.api.entity.filmmaker.Filmmaker; +import com.grilledsausage.molva.api.entity.user.User; +import lombok.AccessLevel; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import javax.persistence.*; + +@Getter +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@Entity +@Table(name = "Preference") +public class Preference { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "pref_id") + private Long id; + + @ManyToOne + @JoinColumn(name = "user_id", nullable = false) + private User user; + + @ManyToOne + @JoinColumn(name = "filmmaker_id", nullable = false) + private Filmmaker filmmaker; + + @Builder + public Preference(User user, Filmmaker filmmaker) { + this.user = user; + this.filmmaker = filmmaker; + } +} diff --git a/src/main/java/com/grilledsausage/molva/api/entity/preference/PreferenceRepository.java b/src/main/java/com/grilledsausage/molva/api/entity/preference/PreferenceRepository.java new file mode 100644 index 0000000..5671365 --- /dev/null +++ b/src/main/java/com/grilledsausage/molva/api/entity/preference/PreferenceRepository.java @@ -0,0 +1,13 @@ +package com.grilledsausage.molva.api.entity.preference; + +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.Optional; + +public interface PreferenceRepository extends JpaRepository { + + Optional findByUser_IdAndFilmmaker_Id(Long userId, Long filmmaker_id); + + Boolean existsByUser_IdAndFilmmaker_Id(Long userId, Long filmmaker_id); + +} diff --git a/src/main/java/com/grilledsausage/molva/api/entity/rating/Rating.java b/src/main/java/com/grilledsausage/molva/api/entity/rating/Rating.java index b3c6fd6..58349d7 100644 --- a/src/main/java/com/grilledsausage/molva/api/entity/rating/Rating.java +++ b/src/main/java/com/grilledsausage/molva/api/entity/rating/Rating.java @@ -3,6 +3,7 @@ import com.grilledsausage.molva.api.entity.movie.Movie; import com.grilledsausage.molva.api.entity.user.User; import lombok.AccessLevel; +import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; @@ -11,12 +12,12 @@ @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity -@Table(name = "Reservation") +@Table(name = "Rating") public class Rating { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "rating_id", nullable = false) + @Column(name = "rating_id") private Long id; @ManyToOne @@ -30,4 +31,14 @@ public class Rating { @Column(name = "user_rating", nullable = false) private Double userRating; + public void setUserRating(Double userRating) { + this.userRating = userRating; + } + + @Builder + public Rating(User user, Movie movie, Double userRating) { + this.user = user; + this.movie = movie; + this.userRating = userRating; + } } diff --git a/src/main/java/com/grilledsausage/molva/api/entity/rating/RatingRepository.java b/src/main/java/com/grilledsausage/molva/api/entity/rating/RatingRepository.java index 1041527..fe4348e 100644 --- a/src/main/java/com/grilledsausage/molva/api/entity/rating/RatingRepository.java +++ b/src/main/java/com/grilledsausage/molva/api/entity/rating/RatingRepository.java @@ -2,6 +2,10 @@ import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface RatingRepository extends JpaRepository { + Optional findByUser_IdAndMovie_Id(Long userId, Long movieId); + } diff --git a/src/main/java/com/grilledsausage/molva/api/entity/reservation/Reservation.java b/src/main/java/com/grilledsausage/molva/api/entity/reservation/Reservation.java index f416426..6989e37 100644 --- a/src/main/java/com/grilledsausage/molva/api/entity/reservation/Reservation.java +++ b/src/main/java/com/grilledsausage/molva/api/entity/reservation/Reservation.java @@ -3,6 +3,7 @@ import com.grilledsausage.molva.api.entity.movie.Movie; import com.grilledsausage.molva.api.entity.user.User; import lombok.AccessLevel; +import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; @@ -27,4 +28,9 @@ public class Reservation { @JoinColumn(name = "movie_id", nullable = false) private Movie movie; + @Builder + public Reservation(User user, Movie movie) { + this.user = user; + this.movie = movie; + } } diff --git a/src/main/java/com/grilledsausage/molva/api/entity/user/User.java b/src/main/java/com/grilledsausage/molva/api/entity/user/User.java index 79c9dfa..3a3d9ad 100644 --- a/src/main/java/com/grilledsausage/molva/api/entity/user/User.java +++ b/src/main/java/com/grilledsausage/molva/api/entity/user/User.java @@ -1,5 +1,6 @@ package com.grilledsausage.molva.api.entity.user; +import com.grilledsausage.molva.api.entity.preference.Preference; import com.grilledsausage.molva.api.entity.rating.Rating; import com.grilledsausage.molva.api.entity.reservation.Reservation; import lombok.AccessLevel; @@ -46,6 +47,9 @@ public class User implements UserDetails { @OneToMany(mappedBy = "user", fetch = FetchType.LAZY) private List ratings = new ArrayList<>(); + @OneToMany(mappedBy = "user", fetch = FetchType.LAZY) + private List preferences = new ArrayList<>(); + @Override public Collection getAuthorities() { List roles = new ArrayList<>(); diff --git a/src/main/java/com/grilledsausage/molva/api/service/preference/PreferenceService.java b/src/main/java/com/grilledsausage/molva/api/service/preference/PreferenceService.java new file mode 100644 index 0000000..dfb2c48 --- /dev/null +++ b/src/main/java/com/grilledsausage/molva/api/service/preference/PreferenceService.java @@ -0,0 +1,84 @@ +package com.grilledsausage.molva.api.service.preference; + + +import com.grilledsausage.molva.api.entity.filmmaker.Filmmaker; +import com.grilledsausage.molva.api.entity.filmmaker.FilmmakerRepository; +import com.grilledsausage.molva.api.entity.preference.Preference; +import com.grilledsausage.molva.api.entity.preference.PreferenceRepository; +import com.grilledsausage.molva.api.entity.user.User; +import com.grilledsausage.molva.exception.custom.DuplicatedPreferenceException; +import com.grilledsausage.molva.exception.custom.FilmmakerNotFoundByIdException; +import com.grilledsausage.molva.exception.custom.PreferenceNotFoundByIdException; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@RequiredArgsConstructor +@Service +public class PreferenceService { + + private final PreferenceRepository preferenceRepository; + + private final FilmmakerRepository filmmakerRepository; + + @Transactional + public Preference preferFilmmaker(User user, Long filmmakerId) { + + if (!isDuplicated(user, filmmakerId)) { + return makeNewPreference(user, filmmakerId); + } else { + throw DuplicatedPreferenceException + .builder() + .httpStatus(HttpStatus.BAD_REQUEST) + .message("이미 동일한 사용자가 동일한 영화를 선호하고 있습니다.") + .build(); + } + + } + + private boolean isDuplicated(User user, Long filmmakerId) { + + return preferenceRepository.existsByUser_IdAndFilmmaker_Id(user.getId(), filmmakerId); + + } + + @Transactional + protected Preference makeNewPreference(User user, Long filmmakerId) { + + Filmmaker filmmakerFromId = filmmakerRepository + .findById(filmmakerId) + .orElseThrow( + () -> FilmmakerNotFoundByIdException + .builder() + .httpStatus(HttpStatus.NOT_FOUND) + .message("영화인 ID를 통해 해당하는 영화인을 찾을 수 없습니다.") + .build() + ); + + return preferenceRepository.save(Preference.builder() + .user(user) + .filmmaker(filmmakerFromId) + .build() + ); + + } + + @Transactional + public void cancelPreferringFilmmaker(User user, Long filmmakerId) { + + Preference existingPreference = preferenceRepository + .findByUser_IdAndFilmmaker_Id(user.getId(), filmmakerId) + .orElseThrow( + () -> PreferenceNotFoundByIdException + .builder() + .httpStatus(HttpStatus.BAD_REQUEST) + .message("filmmakerId에 해당하는 영화인 선호 정보를 찾을 수 없습니다.") + .build() + ); + + preferenceRepository.deleteById(existingPreference.getId()); + + } + +} diff --git a/src/main/java/com/grilledsausage/molva/api/service/rating/RatingService.java b/src/main/java/com/grilledsausage/molva/api/service/rating/RatingService.java new file mode 100644 index 0000000..88066f7 --- /dev/null +++ b/src/main/java/com/grilledsausage/molva/api/service/rating/RatingService.java @@ -0,0 +1,132 @@ +package com.grilledsausage.molva.api.service.rating; + +import com.grilledsausage.molva.api.dto.rating.MovieRatingRequestDto; +import com.grilledsausage.molva.api.entity.movie.Movie; +import com.grilledsausage.molva.api.entity.movie.MovieRepository; +import com.grilledsausage.molva.api.entity.rating.Rating; +import com.grilledsausage.molva.api.entity.rating.RatingRepository; +import com.grilledsausage.molva.api.entity.user.User; +import com.grilledsausage.molva.exception.custom.MovieNotFoundByIdException; +import com.grilledsausage.molva.exception.custom.RatingNotFoundByIdException; +import com.grilledsausage.molva.exception.custom.ValueOutOfBoundaryException; +import lombok.RequiredArgsConstructor; +import org.springframework.http.HttpStatus; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Optional; + +@RequiredArgsConstructor +@Service +public class RatingService { + + private final RatingRepository ratingRepository; + + private final MovieRepository movieRepository; + + @Transactional + public Rating rateMovie(User user, MovieRatingRequestDto movieRatingRequestDto) { + + Long existingRatingId = getExistingRatingId(user, movieRatingRequestDto); + + validateValue(movieRatingRequestDto); + + if (existingRatingId == -1) { + return makeNewRating(user, movieRatingRequestDto); + } else { + return updateExistingRating(movieRatingRequestDto, existingRatingId); + } + + } + + private void validateValue(MovieRatingRequestDto movieRatingRequestDto) { + + if (movieRatingRequestDto.getMovieRating() > 5.0 || movieRatingRequestDto.getMovieRating() < 0.0) { + throw ValueOutOfBoundaryException + .builder() + .httpStatus(HttpStatus.BAD_REQUEST) + .message("유효하지 않은 값입니다. 평점에 0에서 5 사이의 실수를 입력해주세요.") + .build(); + } + + } + + private Long getExistingRatingId(User user, MovieRatingRequestDto movieRatingRequestDto) { + + Optional ratingFromDto = ratingRepository.findByUser_IdAndMovie_Id(user.getId(), movieRatingRequestDto.getMovieId()); + + if (ratingFromDto.isEmpty()) { + return -1L; + } + + return ratingFromDto.get().getId(); + + } + + private Long getExistingRatingId(User user, Long movieId) { + + Optional ratingFromDto = ratingRepository.findByUser_IdAndMovie_Id(user.getId(), movieId); + + if (ratingFromDto.isEmpty()) { + return -1L; + } + + return ratingFromDto.get().getId(); + + } + + @Transactional + protected Rating makeNewRating(User user, MovieRatingRequestDto movieRatingRequestDto) { + + Movie movieFromDto = movieRepository + .findById(movieRatingRequestDto.getMovieId()) + .orElseThrow( + () -> MovieNotFoundByIdException + .builder() + .httpStatus(HttpStatus.NOT_FOUND) + .message("영화 ID를 통해 해당하는 영화를 찾을 수 없습니다.") + .build() + ); + + return ratingRepository.save(Rating.builder() + .user(user) + .movie(movieFromDto) + .userRating(movieRatingRequestDto.getMovieRating()) + .build() + ); + + } + + @Transactional + protected Rating updateExistingRating(MovieRatingRequestDto movieRatingRequestDto, Long existingRatingId) { + + Rating existingRating = ratingRepository.findById(existingRatingId).orElseThrow( + () -> RatingNotFoundByIdException + .builder() + .httpStatus(HttpStatus.INTERNAL_SERVER_ERROR) + .message("Rating의 id로 해당하는 Rating을 찾을 수 없습니다.") + .build() + ); + + existingRating.setUserRating(movieRatingRequestDto.getMovieRating()); + + return ratingRepository.save(existingRating); + + } + + @Transactional + public void cancelRatingMovie(User user, Long movieId) { + Long existingRatingId = getExistingRatingId(user, movieId); + + if (existingRatingId != -1L) { + ratingRepository.deleteById(existingRatingId); + } else { + throw RatingNotFoundByIdException + .builder() + .httpStatus(HttpStatus.BAD_REQUEST) + .message("ratingId에 해당하는 영화 선호 정보를 찾을 수 없습니다.") + .build(); + } + + } +} diff --git a/src/main/java/com/grilledsausage/molva/exception/custom/DuplicatedPreferenceException.java b/src/main/java/com/grilledsausage/molva/exception/custom/DuplicatedPreferenceException.java new file mode 100644 index 0000000..065c807 --- /dev/null +++ b/src/main/java/com/grilledsausage/molva/exception/custom/DuplicatedPreferenceException.java @@ -0,0 +1,13 @@ +package com.grilledsausage.molva.exception.custom; + +import org.springframework.http.HttpStatus; + +public class DuplicatedPreferenceException extends CustomException { + public DuplicatedPreferenceException(String message) { + super(message); + } + + public DuplicatedPreferenceException(HttpStatus httpStatus, String message) { + super(httpStatus, message); + } +} diff --git a/src/main/java/com/grilledsausage/molva/exception/custom/FilmmakerNotFoundByIdException.java b/src/main/java/com/grilledsausage/molva/exception/custom/FilmmakerNotFoundByIdException.java new file mode 100644 index 0000000..326e0db --- /dev/null +++ b/src/main/java/com/grilledsausage/molva/exception/custom/FilmmakerNotFoundByIdException.java @@ -0,0 +1,13 @@ +package com.grilledsausage.molva.exception.custom; + +import org.springframework.http.HttpStatus; + +public class FilmmakerNotFoundByIdException extends CustomException { + public FilmmakerNotFoundByIdException(String message) { + super(message); + } + + public FilmmakerNotFoundByIdException(HttpStatus httpStatus, String message) { + super(httpStatus, message); + } +} diff --git a/src/main/java/com/grilledsausage/molva/exception/custom/MovieNotFoundByIdException.java b/src/main/java/com/grilledsausage/molva/exception/custom/MovieNotFoundByIdException.java new file mode 100644 index 0000000..860aecc --- /dev/null +++ b/src/main/java/com/grilledsausage/molva/exception/custom/MovieNotFoundByIdException.java @@ -0,0 +1,14 @@ +package com.grilledsausage.molva.exception.custom; + +import org.springframework.http.HttpStatus; + +public class MovieNotFoundByIdException extends CustomException { + + public MovieNotFoundByIdException(String message) { + super(message); + } + + public MovieNotFoundByIdException(HttpStatus httpStatus, String message) { + super(httpStatus, message); + } +} diff --git a/src/main/java/com/grilledsausage/molva/exception/custom/PreferenceNotFoundByIdException.java b/src/main/java/com/grilledsausage/molva/exception/custom/PreferenceNotFoundByIdException.java new file mode 100644 index 0000000..0ed5189 --- /dev/null +++ b/src/main/java/com/grilledsausage/molva/exception/custom/PreferenceNotFoundByIdException.java @@ -0,0 +1,13 @@ +package com.grilledsausage.molva.exception.custom; + +import org.springframework.http.HttpStatus; + +public class PreferenceNotFoundByIdException extends CustomException { + public PreferenceNotFoundByIdException(String message) { + super(message); + } + + public PreferenceNotFoundByIdException(HttpStatus httpStatus, String message) { + super(httpStatus, message); + } +} diff --git a/src/main/java/com/grilledsausage/molva/exception/custom/RatingNotFoundByIdException.java b/src/main/java/com/grilledsausage/molva/exception/custom/RatingNotFoundByIdException.java new file mode 100644 index 0000000..907000f --- /dev/null +++ b/src/main/java/com/grilledsausage/molva/exception/custom/RatingNotFoundByIdException.java @@ -0,0 +1,13 @@ +package com.grilledsausage.molva.exception.custom; + +import org.springframework.http.HttpStatus; + +public class RatingNotFoundByIdException extends CustomException { + public RatingNotFoundByIdException(String message) { + super(message); + } + + public RatingNotFoundByIdException(HttpStatus httpStatus, String message) { + super(httpStatus, message); + } +} diff --git a/src/main/java/com/grilledsausage/molva/exception/custom/ValueOutOfBoundaryException.java b/src/main/java/com/grilledsausage/molva/exception/custom/ValueOutOfBoundaryException.java new file mode 100644 index 0000000..9f8e5f0 --- /dev/null +++ b/src/main/java/com/grilledsausage/molva/exception/custom/ValueOutOfBoundaryException.java @@ -0,0 +1,13 @@ +package com.grilledsausage.molva.exception.custom; + +import org.springframework.http.HttpStatus; + +public class ValueOutOfBoundaryException extends CustomException { + public ValueOutOfBoundaryException(String message) { + super(message); + } + + public ValueOutOfBoundaryException(HttpStatus httpStatus, String message) { + super(httpStatus, message); + } +}