refactor: get movie list API

This commit is contained in:
손창현
2022-07-14 03:18:49 +09:00
parent 2093a168c9
commit 1691d9e9d8
7 changed files with 78 additions and 12 deletions

View File

@@ -2,9 +2,13 @@ package com.ticketing.server.movie.application;
import static com.ticketing.server.user.domain.UserGrade.ROLES.STAFF;
import com.ticketing.server.movie.application.request.MovieDeleteRequest;
import com.ticketing.server.movie.application.request.MovieRegisterRequest;
import com.ticketing.server.movie.application.response.MovieDeleteResponse;
import com.ticketing.server.movie.application.response.MovieListResponse;
import com.ticketing.server.movie.application.response.MovieInfoResponse;
import com.ticketing.server.movie.service.dto.DeletedMovieDTO;
import com.ticketing.server.movie.service.dto.MovieListDTO;
import com.ticketing.server.movie.service.dto.RegisteredMovieDTO;
import com.ticketing.server.movie.service.interfaces.MovieService;
import io.swagger.annotations.Api;
@@ -15,6 +19,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.annotation.Secured;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -34,7 +39,8 @@ public class MovieController {
@ApiOperation(value = "영화 정보 등록")
@Secured(STAFF)
public ResponseEntity<MovieInfoResponse> registerMovie(@RequestBody @Valid MovieRegisterRequest request) {
RegisteredMovieDTO registeredMovieDto = movieService.registerMovie(request.getTitle(), request.getRunningTime());
RegisteredMovieDTO registeredMovieDto =
movieService.registerMovie(request.getTitle(), request.getRunningTime());
return ResponseEntity.status(HttpStatus.OK)
.body(
@@ -45,12 +51,22 @@ public class MovieController {
@GetMapping()
@ApiOperation(value = "영화 목록 조회")
public ResponseEntity<MovieListResponse> getMovies() {
MovieListDTO movieListDto = movieService.getMovies();
return ResponseEntity.status(HttpStatus.OK)
.body(
new MovieListResponse(
movieService.getMovies()
)
movieListDto.toResponse()
);
}
@DeleteMapping()
@ApiOperation(value = "영화 정보 삭제")
public ResponseEntity<MovieDeleteResponse> deleteMovie(@RequestBody @Valid MovieDeleteRequest request) {
DeletedMovieDTO deletedMovieDto = movieService.deleteMovie(request.getId());
return ResponseEntity.status(HttpStatus.OK)
.body(
deletedMovieDto.toResponse()
);
}
}

View File

@@ -0,0 +1,16 @@
package com.ticketing.server.movie.application.request;
import javax.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class MovieDeleteRequest {
@NotNull(message = "{validation.not.null.id}")
private Long id;
}

View File

@@ -0,0 +1,14 @@
package com.ticketing.server.movie.application.response;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public class MovieDeleteResponse {
private final Long id;
private final String title;
}

View File

@@ -5,6 +5,7 @@ import com.ticketing.server.movie.domain.Movie;
import com.ticketing.server.movie.domain.repository.MovieRepository;
import com.ticketing.server.movie.service.dto.DeletedMovieDTO;
import com.ticketing.server.movie.service.dto.MovieDTO;
import com.ticketing.server.movie.service.dto.MovieListDTO;
import com.ticketing.server.movie.service.dto.RegisteredMovieDTO;
import com.ticketing.server.movie.service.interfaces.MovieService;
import java.util.List;
@@ -37,12 +38,14 @@ public class MovieServiceImpl implements MovieService {
}
@Override
public List<MovieDTO> getMovies() {
public MovieListDTO getMovies() {
List<Movie> movies = movieRepository.findValidMovies();
return movies.stream()
List<MovieDTO> movieDtos = movies.stream()
.map(movie -> movie.toMovieDTO())
.collect(Collectors.toList());
return new MovieListDTO(movieDtos);
}
@Override

View File

@@ -1,6 +1,6 @@
package com.ticketing.server.movie.service.dto;
import com.ticketing.server.movie.application.response.MovieInfoResponse;
import com.ticketing.server.movie.application.response.MovieDeleteResponse;
import com.ticketing.server.movie.domain.Movie;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
@@ -21,8 +21,8 @@ public class DeletedMovieDTO {
);
}
public MovieInfoResponse toResponse() {
return new MovieInfoResponse(id, title);
public MovieDeleteResponse toResponse() {
return new MovieDeleteResponse(id, title);
}
}

View File

@@ -0,0 +1,18 @@
package com.ticketing.server.movie.service.dto;
import com.ticketing.server.movie.application.response.MovieListResponse;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor()
public class MovieListDTO {
private final List<MovieDTO> movieDtos;
public MovieListResponse toResponse() {
return new MovieListResponse(movieDtos);
}
}

View File

@@ -1,15 +1,14 @@
package com.ticketing.server.movie.service.interfaces;
import com.ticketing.server.movie.service.dto.DeletedMovieDTO;
import com.ticketing.server.movie.service.dto.MovieDTO;
import com.ticketing.server.movie.service.dto.MovieListDTO;
import com.ticketing.server.movie.service.dto.RegisteredMovieDTO;
import java.util.List;
public interface MovieService {
RegisteredMovieDTO registerMovie(String title, Long runningTime);
List<MovieDTO> getMovies();
MovieListDTO getMovies();
DeletedMovieDTO deleteMovie(Long id);
}