Skip to content

Commit

Permalink
Merge pull request #15 from syyling/feat/10
Browse files Browse the repository at this point in the history
[feat] 플레이리스트에 영화 담는 기능 추가
  • Loading branch information
syyling authored Mar 14, 2024
2 parents 26e9344 + d803229 commit ffe19a8
Show file tree
Hide file tree
Showing 6 changed files with 129 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.mookive.mookive_backend.movieInPlaylist.application.dto.request;

import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.List;

public class MovieInPlaylistRequest {

@Getter
@NoArgsConstructor
public static class MovieInPlaylistCreateRequest {

private List<Long> movieIdList;
private Long playlistId;

public MovieInPlaylistCreateRequest(List<Long> movieIdList, Long playlistId) {
this.movieIdList = movieIdList;
this.playlistId = playlistId;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.mookive.mookive_backend.movieInPlaylist.application.mapper;

import com.mookive.mookive_backend.movie.domain.entity.Movie;
import com.mookive.mookive_backend.movieInPlaylist.domain.entity.MovieInPlaylist;
import com.mookive.mookive_backend.playlist.domain.entity.Playlist;

public class MovieInPlaylistMapper {

public static MovieInPlaylist mapToMovieInPlaylist(Movie movie, Playlist playlist) {
return MovieInPlaylist.builder()
.movie(movie)
.playlist(playlist)
.build();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.mookive.mookive_backend.movieInPlaylist.application.service;

import com.mookive.mookive_backend.movie.domain.entity.Movie;
import com.mookive.mookive_backend.movie.domain.service.MovieQueryService;
import com.mookive.mookive_backend.movieInPlaylist.application.dto.request.MovieInPlaylistRequest;
import com.mookive.mookive_backend.movieInPlaylist.application.mapper.MovieInPlaylistMapper;
import com.mookive.mookive_backend.movieInPlaylist.domain.entity.MovieInPlaylist;
import com.mookive.mookive_backend.movieInPlaylist.domain.service.MovieInPlaylistSaveService;
import com.mookive.mookive_backend.playlist.domain.entity.Playlist;
import com.mookive.mookive_backend.playlist.domain.service.PlaylistQueryService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
@RequiredArgsConstructor
public class MovieInPlaylistCreateService {

private final PlaylistQueryService playlistQueryService;
private final MovieQueryService movieQueryService;
private final MovieInPlaylistSaveService movieInPlaylistSaveService;

public void createMovieInPlaylist(MovieInPlaylistRequest.MovieInPlaylistCreateRequest movieInPlaylistCreateRequest) {
Long playlistId = movieInPlaylistCreateRequest.getPlaylistId();
Playlist playlist = playlistQueryService.findById(playlistId);
List<Long> movieIdList = movieInPlaylistCreateRequest.getMovieIdList();

for(Long movieId : movieIdList) {
Movie movie = movieQueryService.findById(movieId);
MovieInPlaylist movieInPlaylist = MovieInPlaylistMapper.mapToMovieInPlaylist(movie, playlist);
movieInPlaylistSaveService.save(movieInPlaylist);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.mookive.mookive_backend.movieInPlaylist.domain.service;


import com.mookive.mookive_backend.movieInPlaylist.domain.entity.MovieInPlaylist;
import com.mookive.mookive_backend.movieInPlaylist.domain.respository.MovieInPlaylistRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class MovieInPlaylistSaveService {

private final MovieInPlaylistRepository movieInPlaylistRepository;

public void save(MovieInPlaylist movieInPlaylist) {
movieInPlaylistRepository.save(movieInPlaylist);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.mookive.mookive_backend.movieInPlaylist.presentation;


import com.mookive.mookive_backend.movieInPlaylist.application.dto.request.MovieInPlaylistRequest;
import com.mookive.mookive_backend.movieInPlaylist.application.service.MovieInPlaylistCreateService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
public class MovieInPlayListController {

private final MovieInPlaylistCreateService movieInPlaylistCreateService;

@PostMapping("/movieInPlaylist")
public void createMovieInPlaylist(@RequestBody MovieInPlaylistRequest.MovieInPlaylistCreateRequest movieInPlaylistCreateRequest) {
movieInPlaylistCreateService.createMovieInPlaylist(movieInPlaylistCreateRequest);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.mookive.mookive_backend.playlist.domain.service;

import com.mookive.mookive_backend.playlist.domain.entity.Playlist;
import com.mookive.mookive_backend.playlist.domain.repository.PlaylistRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class PlaylistQueryService {

private final PlaylistRepository playlistRepository;

public Playlist findById(Long id) {
return playlistRepository.findById(id)
.orElseThrow(() -> new IllegalArgumentException("Playlist not found"));
}
}

0 comments on commit ffe19a8

Please sign in to comment.