Skip to content

Commit 1c280df

Browse files
authored
feat: diary total duration
# 변경점 👍 1. DiaryEntity에 totalDuration 추가 2. diary Domain DTO에 totalDuration추가 # 비고 ✏ nullable = false인 totalDuration이 들어가면 기존의 데이터가 제약조건을 만족하지 못할 것 같아서 DB default 값을 추가해서 반영했습니다.
1 parent 8ba6ff4 commit 1c280df

File tree

11 files changed

+74
-5
lines changed

11 files changed

+74
-5
lines changed

src/main/java/apptive/team5/diary/domain/DiaryEntity.java

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ public class DiaryEntity extends BaseTimeEntity {
5555

5656
@Column(nullable = false)
5757
private String duration;
58+
@Column(nullable = false, columnDefinition = "VARCHAR(255) DEFAULT '0'")
59+
private String totalDuration;
5860
@Column(nullable = false)
5961
private String start;
6062
@Column(nullable = false)
@@ -75,6 +77,7 @@ public DiaryEntity(
7577
String content,
7678
DiaryScope scope,
7779
String duration,
80+
String totalDuration,
7881
String start,
7982
String end,
8083
UserEntity user
@@ -88,6 +91,7 @@ public DiaryEntity(
8891
content,
8992
scope,
9093
duration,
94+
totalDuration,
9195
start,
9296
end,
9397
user
@@ -122,14 +126,22 @@ public void update(
122126
String albumImageUrl,
123127
String videoUrl,
124128
String content,
125-
DiaryScope scope
129+
DiaryScope scope,
130+
String duration,
131+
String totalDuration,
132+
String start,
133+
String end
126134
) {
127135
updateMusicTitle(musicTitle);
128136
updateArtist(artist);
129137
updateAlbumImageUrl(albumImageUrl);
130138
updateVideoUrl(videoUrl);
131139
updateContent(content);
132140
updateScope(scope);
141+
updateDuration(duration);
142+
updateTotalDuration(totalDuration);
143+
updateStart(start);
144+
updateEnd(end);
133145
}
134146

135147
private void updateMusicTitle(String musicTitle) {
@@ -167,4 +179,28 @@ private void updateScope(DiaryScope scope) {
167179
this.scope = scope;
168180
}
169181
}
182+
183+
private void updateDuration(String duration) {
184+
if (duration != null && !duration.isBlank()) {
185+
this.duration = duration;
186+
}
187+
}
188+
189+
private void updateTotalDuration(String totalDuration) {
190+
if (totalDuration != null && !totalDuration.isBlank()) {
191+
this.totalDuration = totalDuration;
192+
}
193+
}
194+
195+
private void updateStart(String start) {
196+
if (start != null && !start.isBlank()) {
197+
this.start = start;
198+
}
199+
}
200+
201+
private void updateEnd(String end) {
202+
if (end != null && !end.isBlank()) {
203+
this.end = end;
204+
}
205+
}
170206
}

src/main/java/apptive/team5/diary/dto/DiaryCreateRequest.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@ public record DiaryCreateRequest(
1919
String content,
2020
@NotNull(message = "공개 범위는 필수 입력입니다.")
2121
DiaryScope scope,
22-
@NotBlank(message = "영상 길이는 필수 입력입니다.")
22+
@NotBlank(message = "킬링파트 길이는 필수 입력입니다.")
2323
String duration,
24+
@NotBlank(message = "영상 길이는 필수 입력입니다.")
25+
String totalDuration,
2426
@NotBlank(message = "킬링파트 시작 시간은 필수 입력입니다.")
2527
String start,
2628
@NotBlank(message = "킬링파트 종료 시간은 필수 입력입니다.")
@@ -35,7 +37,8 @@ public static DiaryEntity toEntity(DiaryCreateRequest diaryRequest, UserEntity u
3537
diaryRequest.content,
3638
diaryRequest.scope,
3739
diaryRequest.duration,
38-
diaryRequest.start(),
40+
diaryRequest.totalDuration,
41+
diaryRequest.start,
3942
diaryRequest.end,
4043
user
4144
);

src/main/java/apptive/team5/diary/dto/DiaryUpdateDto.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public record DiaryUpdateDto(
1010
String content,
1111
DiaryScope scope,
1212
String duration,
13+
String totalDuration,
1314
String start,
1415
String end
1516
) {

src/main/java/apptive/team5/diary/dto/DiaryUpdateRequestDto.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public record DiaryUpdateRequestDto(
1010
String content,
1111
DiaryScope scope,
1212
String duration,
13+
String totalDuration,
1314
String start,
1415
String end
1516
) {
@@ -22,6 +23,7 @@ public static DiaryUpdateDto toUpdateDto(DiaryUpdateRequestDto updateRequest) {
2223
updateRequest.content,
2324
updateRequest.scope,
2425
updateRequest.duration,
26+
updateRequest.totalDuration,
2527
updateRequest.start,
2628
updateRequest.end
2729
);

src/main/java/apptive/team5/diary/dto/FeedDiaryResponseDto.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public record FeedDiaryResponseDto(
1818
String videoUrl,
1919
DiaryScope scope,
2020
String duration,
21+
String totalDuration,
2122
String start,
2223
String end,
2324
LocalDateTime createDate,
@@ -50,6 +51,7 @@ public static FeedDiaryResponseDto from(DiaryEntity diary, boolean isLiked, Long
5051
diary.getVideoUrl(),
5152
diary.getScope(),
5253
diary.getDuration(),
54+
diary.getTotalDuration(),
5355
diary.getStart(),
5456
diary.getEnd(),
5557
diary.getCreateDateTime(),

src/main/java/apptive/team5/diary/dto/MyDiaryResponseDto.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public record MyDiaryResponseDto(
1414
String videoUrl,
1515
DiaryScope scope,
1616
String duration,
17+
String totalDuration,
1718
String start,
1819
String end,
1920
LocalDateTime createDate,
@@ -29,6 +30,7 @@ public static MyDiaryResponseDto from(DiaryEntity diary) {
2930
diary.getVideoUrl(),
3031
diary.getScope(),
3132
diary.getDuration(),
33+
diary.getTotalDuration(),
3234
diary.getStart(),
3335
diary.getEnd(),
3436
diary.getCreateDateTime(),

src/main/java/apptive/team5/diary/dto/UserDiaryResponseDto.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public record UserDiaryResponseDto(
1616
String videoUrl,
1717
DiaryScope scope,
1818
String duration,
19+
String totalDuration,
1920
String start,
2021
String end,
2122
LocalDateTime createDate,
@@ -43,6 +44,7 @@ public static UserDiaryResponseDto from(DiaryEntity diary, boolean isLiked, Long
4344
diary.getVideoUrl(),
4445
diary.getScope(),
4546
diary.getDuration(),
47+
diary.getTotalDuration(),
4648
diary.getStart(),
4749
diary.getEnd(),
4850
diary.getCreateDateTime(),

src/main/java/apptive/team5/diary/service/DiaryLowService.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,11 @@ public void updateDiary(DiaryEntity diary, DiaryUpdateDto updateDto) {
6060
updateDto.albumImageUrl(),
6161
updateDto.videoUrl(),
6262
updateDto.content(),
63-
updateDto.scope()
63+
updateDto.scope(),
64+
updateDto.duration(),
65+
updateDto.totalDuration(),
66+
updateDto.start(),
67+
updateDto.end()
6468
);
6569
}
6670

src/test/java/apptive/team5/diary/controller/DiaryControllerTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ void getMyMusicDiary() throws Exception {
110110
softly.assertThat(diaryResponse.musicTitle()).isEqualTo(diary.getMusicTitle());
111111
softly.assertThat(diaryResponse.artist()).isEqualTo(diary.getArtist());
112112
softly.assertThat(diaryResponse.duration()).isEqualTo(diary.getDuration());
113+
softly.assertThat(diaryResponse.totalDuration()).isEqualTo(diary.getTotalDuration());
113114
softly.assertThat(diaryResponse.start()).isEqualTo(diary.getStart());
114115
softly.assertThat(diaryResponse.end()).isEqualTo(diary.getEnd());
115116
});
@@ -270,6 +271,7 @@ void createDiary() throws Exception {
270271
softly.assertThat(diaryEntity.getAlbumImageUrl()).isEqualTo(diaryRequest.albumImageUrl());
271272
softly.assertThat(diaryEntity.getEnd()).isEqualTo(diaryRequest.end());
272273
softly.assertThat(diaryEntity.getDuration()).isEqualTo(diaryRequest.duration());
274+
softly.assertThat(diaryEntity.getTotalDuration()).isEqualTo(diaryRequest.totalDuration());
273275
softly.assertThat(diaryEntity.getStart()).isEqualTo(diaryRequest.start());
274276
softly.assertThat(diaryEntity.getArtist()).isEqualTo(diaryRequest.artist());
275277
softly.assertThat(diaryEntity.getMusicTitle()).isEqualTo(diaryRequest.musicTitle());
@@ -291,6 +293,14 @@ void updateDiary() throws Exception {
291293
.contentType(MediaType.APPLICATION_JSON)
292294
.content(objectMapper.writeValueAsString(updateRequest)))
293295
.andExpect(status().isOk());
296+
297+
DiaryEntity updatedDiary = diaryRepository.findById(diary.getId()).orElseThrow();
298+
299+
assertSoftly(softly -> {
300+
softly.assertThat(updatedDiary.getMusicTitle()).isEqualTo(updateRequest.musicTitle());
301+
softly.assertThat(updatedDiary.getTotalDuration()).isEqualTo(updateRequest.totalDuration());
302+
softly.assertThat(updatedDiary.getContent()).isEqualTo(updateRequest.content());
303+
});
294304
}
295305

296306
@Test

src/test/java/apptive/team5/diary/service/DiaryServiceTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,11 +105,13 @@ void getUserDiaries_OtherUser() {
105105

106106
UserDiaryResponseDto publicDto = result.getContent().get(0);
107107
assertThat(publicDto.scope()).isEqualTo(DiaryScope.PUBLIC);
108+
assertThat(publicDto.totalDuration()).isEqualTo(publicDiary.getTotalDuration());
108109
assertThat(publicDto.content()).isEqualTo(publicDiary.getContent());
109110
assertThat(publicDto.isLiked()).isTrue();
110111

111112
UserDiaryResponseDto killingPartDto = result.getContent().get(1);
112113
assertThat(killingPartDto.scope()).isEqualTo(DiaryScope.KILLING_PART);
114+
assertThat(killingPartDto.totalDuration()).isEqualTo(killingPartDiary.getTotalDuration());
113115
assertThat(killingPartDto.content()).isEqualTo(UserDiaryResponseDto.defaultContentMsg);
114116
assertThat(killingPartDto.isLiked()).isFalse();
115117

@@ -152,7 +154,7 @@ void getUserDiaries_OwnUser() {
152154

153155
UserDiaryResponseDto killingPartDto = result.getContent().get(1);
154156
assertThat(killingPartDto.scope()).isEqualTo(DiaryScope.KILLING_PART);
155-
assertThat(killingPartDto.content()).isEqualTo(killingPartDiary.getContent()); // 자신의 KILLING_PART 내용은 보여야 함
157+
assertThat(killingPartDto.content()).isEqualTo(killingPartDiary.getContent());
156158
assertThat(killingPartDto.isLiked()).isFalse();
157159

158160
verify(userLowService).getReferenceById(userId);

0 commit comments

Comments
 (0)