feat : Delete Article Controller, Service, Repository Implement. Entity add cascade

This commit is contained in:
kms
2022-10-24 22:44:35 +09:00
parent 8f4f75d9f7
commit 422ace7dce
4 changed files with 21 additions and 3 deletions

View File

@@ -28,4 +28,9 @@ public class ArticleController {
public ArticleResponse createArticle(@AuthenticationPrincipal UserAuth userAuth, @Valid @RequestBody Articledto articledto) {
return articleService.createArticle(userAuth, articledto);
}
@DeleteMapping("/{slug}")
public void deleteArticle(@AuthenticationPrincipal UserAuth userAuth, @PathVariable("slug") String slug) {
articleService.deleteArticle(userAuth, slug);
}
}

View File

@@ -38,14 +38,14 @@ public class Article extends DateEntity {
@Column(nullable = false)
private String body;
@OneToMany(mappedBy = "article", fetch = FetchType.LAZY)
@OneToMany(mappedBy = "article", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<Tag> tagList;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(nullable = false)
private User author;
@OneToMany(mappedBy = "article", fetch = FetchType.LAZY)
@OneToMany(mappedBy = "article", fetch = FetchType.LAZY,cascade = CascadeType.ALL)
private List<Favorite> favorites;

View File

@@ -10,4 +10,6 @@ public interface ArticleService {
ArticleResponse createArticle(UserAuth userAuth, Articledto article);
void deleteArticle(UserAuth userAuth,String slug);
}

View File

@@ -24,6 +24,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Slf4j
@Service
@@ -37,7 +38,7 @@ public class ArticleServiceImpl implements ArticleService {
private final FavoriteRepository favoriteRepository;
// TODO token을 받을수도 있음.
// token을 받을수도 안 받을수도 있음.
@Override
public ArticleResponse getArticle(UserAuth userAuth, String slug) {
Optional<Article> article = articleRepository.findAll().stream().filter(findArticle -> findArticle.getSlug().equals(slug)).findAny();
@@ -63,6 +64,16 @@ public class ArticleServiceImpl implements ArticleService {
return convertDtoWithUser(articleEntity, userAuth);
}
public void deleteArticle(UserAuth userAuth,String slug){
Stream<Article> articles = articleRepository.findAll().stream().filter(findArticle -> findArticle.getSlug().equals(slug));
for(Article article : articles.toList()){
if(article.getAuthor().getUsername().equals(userAuth.getUsername())){
System.out.println(article.getId());
articleRepository.delete(article);
}
}
}
private String initSlug(String title) {
return title.toLowerCase().replace(' ', '-');
}