refactor: register Movie API
This commit is contained in:
@@ -5,6 +5,7 @@ import static com.ticketing.server.user.domain.UserGrade.ROLES.STAFF;
|
||||
import com.ticketing.server.movie.application.request.MovieRegisterRequest;
|
||||
import com.ticketing.server.movie.application.response.MovieListResponse;
|
||||
import com.ticketing.server.movie.application.response.MovieInfoResponse;
|
||||
import com.ticketing.server.movie.service.dto.RegisteredMovieDTO;
|
||||
import com.ticketing.server.movie.service.interfaces.MovieService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
@@ -33,11 +34,11 @@ public class MovieController {
|
||||
@ApiOperation(value = "영화 정보 등록")
|
||||
@Secured(STAFF)
|
||||
public ResponseEntity<MovieInfoResponse> registerMovie(@RequestBody @Valid MovieRegisterRequest request) {
|
||||
RegisteredMovieDTO registeredMovieDto = movieService.registerMovie(request.getTitle(), request.getRunningTime());
|
||||
|
||||
return ResponseEntity.status(HttpStatus.OK)
|
||||
.body(
|
||||
MovieInfoResponse.from(
|
||||
movieService.registerMovie(request.getTitle(), request.getRunningTime())
|
||||
)
|
||||
registeredMovieDto.toResponse()
|
||||
);
|
||||
}
|
||||
|
||||
@@ -46,7 +47,7 @@ public class MovieController {
|
||||
public ResponseEntity<MovieListResponse> getMovies() {
|
||||
return ResponseEntity.status(HttpStatus.OK)
|
||||
.body(
|
||||
MovieListResponse.from(
|
||||
new MovieListResponse(
|
||||
movieService.getMovies()
|
||||
)
|
||||
);
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
package com.ticketing.server.movie.application.response;
|
||||
|
||||
import com.ticketing.server.movie.service.dto.MovieDTO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
@AllArgsConstructor
|
||||
public class MovieInfoResponse {
|
||||
|
||||
@ApiModelProperty(value = "영화 ID")
|
||||
@@ -16,8 +14,4 @@ public class MovieInfoResponse {
|
||||
@ApiModelProperty(value = "영화 제목")
|
||||
private String title;
|
||||
|
||||
public static MovieInfoResponse from(MovieDTO movieDto) {
|
||||
return new MovieInfoResponse(movieDto.getMovieId(), movieDto.getTitle());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,19 +3,14 @@ package com.ticketing.server.movie.application.response;
|
||||
import com.ticketing.server.movie.service.dto.MovieDTO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import java.util.List;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
@AllArgsConstructor
|
||||
public class MovieListResponse {
|
||||
|
||||
@ApiModelProperty(value = "영화 제목")
|
||||
private List<MovieDTO> movieDtos;
|
||||
|
||||
public static MovieListResponse from(List<MovieDTO> movieDtos) {
|
||||
return new MovieListResponse(movieDtos);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.ticketing.server.movie.domain;
|
||||
|
||||
import com.ticketing.server.global.dto.repository.AbstractEntity;
|
||||
import javax.persistence.Column;
|
||||
import com.ticketing.server.movie.service.dto.MovieDTO;
|
||||
import javax.persistence.Entity;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import lombok.AccessLevel;
|
||||
@@ -27,4 +27,8 @@ public class Movie extends AbstractEntity {
|
||||
this.runningTime = runningTime;
|
||||
}
|
||||
|
||||
public MovieDTO toMovieDTO() {
|
||||
return new MovieDTO(this.id, this.title);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.ticketing.server.global.exception.ErrorCode;
|
||||
import com.ticketing.server.movie.domain.Movie;
|
||||
import com.ticketing.server.movie.domain.repository.MovieRepository;
|
||||
import com.ticketing.server.movie.service.dto.MovieDTO;
|
||||
import com.ticketing.server.movie.service.dto.MovieRegisterDTO;
|
||||
import com.ticketing.server.movie.service.dto.RegisteredMovieDTO;
|
||||
import com.ticketing.server.movie.service.interfaces.MovieService;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
@@ -21,7 +21,7 @@ public class MovieServiceImpl implements MovieService {
|
||||
private final MovieRepository movieRepository;
|
||||
|
||||
@Override
|
||||
public MovieDTO registerMovie(String title, Long runningTime) {
|
||||
public RegisteredMovieDTO registerMovie(String title, Long runningTime) {
|
||||
Optional<Movie> movie = movieRepository.findValidMovieWithTitle(title);
|
||||
|
||||
if(movie.isEmpty()) {
|
||||
@@ -29,7 +29,7 @@ public class MovieServiceImpl implements MovieService {
|
||||
new Movie(title, runningTime)
|
||||
);
|
||||
|
||||
return new MovieDTO(newMovie.getId(), newMovie.getTitle());
|
||||
return new RegisteredMovieDTO(newMovie);
|
||||
}
|
||||
|
||||
throw ErrorCode.throwDuplicateMovie();
|
||||
@@ -40,9 +40,8 @@ public class MovieServiceImpl implements MovieService {
|
||||
List<Movie> movies = movieRepository.findValidMovies();
|
||||
|
||||
return movies.stream()
|
||||
.map(MovieDTO::from)
|
||||
.map(movie -> movie.toMovieDTO())
|
||||
.collect(Collectors.toList());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.ticketing.server.movie.service.dto;
|
||||
|
||||
import com.ticketing.server.movie.application.response.MovieInfoResponse;
|
||||
import com.ticketing.server.movie.domain.Movie;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class RegisteredMovieDTO {
|
||||
|
||||
private final Long id;
|
||||
|
||||
private final String title;
|
||||
|
||||
public RegisteredMovieDTO(Movie movie) {
|
||||
this(
|
||||
movie.getId(),
|
||||
movie.getTitle()
|
||||
);
|
||||
}
|
||||
|
||||
public MovieInfoResponse toResponse() {
|
||||
return new MovieInfoResponse(id, title);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,15 +1,12 @@
|
||||
package com.ticketing.server.movie.service.interfaces;
|
||||
|
||||
import com.ticketing.server.movie.domain.Movie;
|
||||
import com.ticketing.server.movie.service.dto.MovieDTO;
|
||||
import com.ticketing.server.movie.service.dto.MovieRegisterDTO;
|
||||
import com.ticketing.server.movie.service.dto.RegisteredMovieDTO;
|
||||
import java.util.List;
|
||||
|
||||
public interface MovieService {
|
||||
|
||||
MovieDTO registerMovie(String title, Long runningTime);
|
||||
RegisteredMovieDTO registerMovie(String title, Long runningTime);
|
||||
|
||||
List<MovieDTO> getMovies();
|
||||
|
||||
Movie findValidMovieWithTitle(String title);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user