Skip to content

Commit 4bd898a

Browse files
committed
feat: 다솜소식 수정, 삭제기능 추가
1 parent c173492 commit 4bd898a

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

src/main/java/dmu/dasom/api/domain/news/entity/NewsEntity.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@
55
import dmu.dasom.api.domain.news.dto.NewsResponseDto;
66
import io.swagger.v3.oas.annotations.media.Schema;
77
import jakarta.persistence.*;
8+
import jakarta.validation.constraints.NotBlank;
89
import jakarta.validation.constraints.NotNull;
10+
import jakarta.validation.constraints.Size;
911
import lombok.*;
1012

1113
@Getter
@@ -44,4 +46,25 @@ public void updateStatus(Status status) {
4446
public NewsResponseDto toResponseDto() {
4547
return new NewsResponseDto(id, title, content, getCreatedAt(), imageUrl);
4648
}
49+
50+
//수정기능
51+
public void update(String title, String content, String imageUrl) {
52+
if (title == null || title.isBlank()) {
53+
throw new IllegalArgumentException("제목은 필수입니다");
54+
}
55+
if (title.length() > 100) {
56+
throw new IllegalArgumentException("제목은 100자까지");
57+
}
58+
if (content == null || content.isBlank()) {
59+
throw new IllegalArgumentException("내용은 필수입니다");
60+
}
61+
if (imageUrl != null && imageUrl.length() > 255) {
62+
throw new IllegalArgumentException("이미지 URL은 255자까지");
63+
}
64+
65+
this.title = title;
66+
this.content = content;
67+
this.imageUrl = imageUrl;
68+
}
69+
4770
}

src/main/java/dmu/dasom/api/domain/news/service/NewsService.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import dmu.dasom.api.domain.news.entity.NewsEntity;
66
import dmu.dasom.api.domain.news.repository.NewsRepository;
77
import org.springframework.stereotype.Service;
8+
import org.springframework.transaction.annotation.Transactional;
89
import java.util.List;
910
import java.util.stream.Collectors;
1011

@@ -43,4 +44,22 @@ public NewsResponseDto createNews(NewsRequestDto requestDto) {
4344
return savedNews.toResponseDto();
4445
}
4546

46-
}
47+
// 수정
48+
@Transactional
49+
public NewsResponseDto updateNews(Long id, NewsRequestDto requestDto) {
50+
NewsEntity news = newsRepository.findById(id)
51+
.orElseThrow(() -> new IllegalArgumentException("해당 뉴스가 존재하지 않습니다. ID: " + id));
52+
53+
news.update(requestDto.getTitle(), requestDto.getContent(), requestDto.getImageUrl());
54+
return news.toResponseDto();
55+
}
56+
57+
// 삭제
58+
@Transactional
59+
public void deleteNews(Long id) {
60+
NewsEntity news = newsRepository.findById(id)
61+
.orElseThrow(() -> new IllegalArgumentException("해당 뉴스가 존재하지 않습니다. ID: " + id));
62+
63+
newsRepository.delete(news);
64+
}
65+
}

0 commit comments

Comments
 (0)