Skip to content

Commit 5f5da0b

Browse files
authored
Merge pull request #42 from Move-Log/feat/news-create
[REFACTOR] VerbType enum 사용에 따른 기록 생성 기능 수정
2 parents 9e6334d + 1c8724f commit 5f5da0b

File tree

5 files changed

+52
-21
lines changed

5 files changed

+52
-21
lines changed

src/main/java/com/movelog/domain/record/domain/Record.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ public class Record extends BaseEntity {
2828
@JoinColumn(name = "keyword_id")
2929
private Keyword keyword;
3030

31-
@Column(name = "verb_type")
32-
private Long verbType;
31+
@Enumerated(EnumType.STRING) // Enum을 문자열로 저장
32+
private VerbType verbType;
3333

3434
@Column(name = "record_image")
3535
private String recordImage;
@@ -38,14 +38,11 @@ public class Record extends BaseEntity {
3838
private java.time.LocalDateTime actionTime;
3939

4040
@Builder
41-
public Record(User user, Keyword keyword, Long verbType, String recordImage) {
41+
public Record(User user, Keyword keyword, VerbType verbType, String recordImage) {
4242
this.user = user;
4343
this.keyword = keyword;
4444
this.verbType = verbType;
4545
this.recordImage = recordImage;
4646
this.actionTime = actionTime == null? LocalDateTime.now():actionTime;
4747
}
48-
49-
50-
5148
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.movelog.domain.record.domain;
2+
3+
import lombok.Getter;
4+
5+
@Getter
6+
public enum VerbType {
7+
// 했어요, 먹었어요, 갔어요
8+
DO("했어요"), EAT("먹었어요"), GO("갔어요");
9+
10+
private final String verbType;
11+
12+
VerbType(String verbType) {
13+
this.verbType = verbType;
14+
}
15+
16+
// Enum 매핑 메서드 추가
17+
public static VerbType fromValue(String value) {
18+
for (VerbType type : values()) {
19+
if (type.getVerbType().equals(value)) {
20+
return type;
21+
}
22+
}
23+
throw new IllegalArgumentException("No enum constant for value: " + value);
24+
}
25+
}

src/main/java/com/movelog/domain/record/dto/req/CreateRecordReq.java renamed to src/main/java/com/movelog/domain/record/dto/request/CreateRecordReq.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.movelog.domain.record.dto.req;
1+
package com.movelog.domain.record.dto.request;
22

33
import io.swagger.v3.oas.annotations.media.Schema;
44
import lombok.AllArgsConstructor;
@@ -11,8 +11,8 @@
1111
@NoArgsConstructor
1212
@Getter
1313
public class CreateRecordReq {
14-
@Schema(type = "Long", example = "0", description = "0 -> 했어요, 1 -> 먹었어요, 2 -> 갔어요")
15-
private Long verbType;
14+
@Schema(type = "String", example = "했어요", description = "했어요, 먹었어요, 갔어요")
15+
private String verbType;
1616

1717
@Schema(type = "String", example = "헬스", description = "명사 작성")
1818
private String noun;

src/main/java/com/movelog/domain/record/presentation/RecordController.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.movelog.domain.record.presentation;
22

3-
import com.movelog.domain.record.dto.req.CreateRecordReq;
4-
import com.movelog.domain.record.repository.RecordRepository;
3+
import com.movelog.domain.record.dto.request.CreateRecordReq;
54
import com.movelog.domain.record.service.RecordService;
65
import com.movelog.global.config.security.token.UserPrincipal;
76
import com.movelog.global.payload.ApiResponse;

src/main/java/com/movelog/domain/record/service/RecordService.java

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,16 @@
22

33
import com.movelog.domain.record.domain.Keyword;
44
import com.movelog.domain.record.domain.Record;
5-
import com.movelog.domain.record.dto.req.CreateRecordReq;
5+
import com.movelog.domain.record.domain.VerbType;
6+
import com.movelog.domain.record.dto.request.CreateRecordReq;
67
import com.movelog.domain.record.repository.KeywordRepository;
78
import com.movelog.domain.record.repository.RecordRepository;
89
import com.movelog.domain.user.domain.User;
910
import com.movelog.domain.user.domain.repository.UserRepository;
1011
import com.movelog.global.DefaultAssert;
1112
import com.movelog.global.util.S3Util;
1213
import lombok.RequiredArgsConstructor;
14+
import lombok.extern.slf4j.Slf4j;
1315
import org.springframework.stereotype.Service;
1416
import org.springframework.transaction.annotation.Transactional;
1517
import org.springframework.web.multipart.MultipartFile;
@@ -24,6 +26,7 @@
2426
@Service
2527
@RequiredArgsConstructor
2628
@Transactional(readOnly = true)
29+
@Slf4j
2730
public class RecordService {
2831
private final RecordRepository recordRepository;
2932
private final UserRepository userRepository;
@@ -34,30 +37,37 @@ public class RecordService {
3437
public void createRecord(Long userId, CreateRecordReq createRecordReq, MultipartFile img) {
3538
User user = validUserById(userId);
3639
String recordImgUrl = s3Util.upload(img);
40+
log.info("recordImgUrl: {}", recordImgUrl);
3741

3842
Keyword keyword = Keyword.builder()
3943
.keyword(createRecordReq.getNoun())
4044
.build();
4145

4246
keywordRepository.save(keyword);
47+
String verb = createRecordReq.getVerbType();
48+
try {
49+
VerbType verbType = VerbType.fromValue(verb);
4350

44-
Record record = Record.builder()
45-
.user(user)
46-
.keyword(keyword)
47-
.verbType(createRecordReq.getVerbType())
48-
.recordImage(recordImgUrl)
51+
Record record = Record.builder()
52+
.user(user)
53+
.keyword(keyword)
54+
.verbType(verbType)
55+
.recordImage(recordImgUrl)
4956
// .actionTime(LocalDateTime.now())
50-
.build();
57+
.build();
58+
59+
recordRepository.save(record);
60+
} catch (IllegalArgumentException e) {
61+
throw new RuntimeException("Invalid verb type: " + verb, e);
62+
}
5163

52-
recordRepository.save(record);
5364
}
5465
private User validUserById(Long userId) {
5566
Optional<User> userOptional = userRepository.findById(userId);
56-
DefaultAssert.isOptionalPresent(userOptional);
5767
return userOptional.get();
5868
}
5969

60-
public List<Long> retrieveTodayRecord(Long userId) {
70+
public List<VerbType> retrieveTodayRecord(Long userId) {
6171
User user = validUserById(userId);
6272
// 현재 날짜 가져오기
6373
LocalDate today = LocalDate.now(); // 오늘 날짜 (2025-01-05 기준)

0 commit comments

Comments
 (0)