Skip to content

Commit 004044e

Browse files
authored
refactor/#86 UUID 로직 최적화 (#87)
1 parent ac4b736 commit 004044e

File tree

23 files changed

+127
-93
lines changed

23 files changed

+127
-93
lines changed

soridam-api/src/main/java/sorisoop/soridam/api/noise/application/NoiseFacade.java

Lines changed: 34 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
package sorisoop.soridam.api.noise.application;
22

3+
import static sorisoop.soridam.globalutil.uuid.UuidPrefix.NOISE;
4+
import static sorisoop.soridam.globalutil.uuid.UuidPrefix.USER;
5+
36
import java.util.List;
47
import java.util.Optional;
58

@@ -9,10 +12,11 @@
912
import lombok.RequiredArgsConstructor;
1013
import sorisoop.soridam.api.noise.presentation.request.NoiseCreateRequest;
1114
import sorisoop.soridam.api.noise.presentation.request.NoiseSearchRequest;
12-
import sorisoop.soridam.api.noise.presentation.response.NoiseReviewResponse;
1315
import sorisoop.soridam.api.noise.presentation.response.NoiseListResponse;
1416
import sorisoop.soridam.api.noise.presentation.response.NoisePersistResponse;
1517
import sorisoop.soridam.api.noise.presentation.response.NoiseResponse;
18+
import sorisoop.soridam.api.noise.presentation.response.NoiseReviewResponse;
19+
import sorisoop.soridam.api.noise.presentation.response.NoiseSummaryListResponse;
1620
import sorisoop.soridam.api.noise.presentation.response.NoiseSummaryResponse;
1721
import sorisoop.soridam.api.review.presentation.response.ReviewResponse;
1822
import sorisoop.soridam.domain.address.application.AddressCommandService;
@@ -29,6 +33,8 @@
2933
@Component
3034
@RequiredArgsConstructor
3135
public class NoiseFacade {
36+
private static final String NOISE_PREFIX = NOISE.getPrefix();
37+
3238
private final NoiseCommandService noiseCommandService;
3339
private final NoiseQueryService noiseQueryService;
3440
private final UserQueryService userQueryService;
@@ -45,8 +51,8 @@ public Optional<NoiseReviewResponse> getDetailNoise(double x, double y) {
4551

4652
if (results.isEmpty()) return Optional.empty();
4753

48-
List<NoiseResponse> noises = results.stream()
49-
.map(NoiseResponse::from)
54+
List<NoiseSummaryResponse> noises = results.stream()
55+
.map(NoiseSummaryResponse::from)
5056
.toList();
5157

5258
List<ReviewResponse> reviews = reviewQueryService.getByTargetIdIn(resultIds).stream()
@@ -57,26 +63,31 @@ public Optional<NoiseReviewResponse> getDetailNoise(double x, double y) {
5763
}
5864

5965
@Transactional(readOnly = true)
60-
public NoiseListResponse getNearbyNoise(
66+
public NoiseSummaryListResponse getNearbyNoise(
6167
NoiseSearchRequest requests, Radius radius, NoiseLevel noiseLevel) {
62-
List<NoiseResponse> responses = noiseQueryService.getNearbyNoise(requests.x(), requests.y(), radius, noiseLevel).stream()
63-
.map(NoiseResponse::from)
68+
List<NoiseSummaryResponse> responses = noiseQueryService.getNearbyNoise(requests.x(), requests.y(), radius, noiseLevel).stream()
69+
.map(NoiseSummaryResponse::from)
6470
.toList();
6571

66-
return NoiseListResponse.of(responses);
72+
return NoiseSummaryListResponse.of(responses);
6773
}
6874

6975
@Transactional(readOnly = true)
70-
public NoiseSummaryResponse getNoise(String id) {
71-
Noise noise = noiseQueryService.getNoise(id);
72-
return NoiseSummaryResponse.from(noise);
76+
public NoiseResponse getNoise(String id) {
77+
Noise noise = noiseQueryService.getNoise(NOISE_PREFIX + id);
78+
return NoiseResponse.from(noise);
7379
}
7480

7581
@Transactional
7682
public NoisePersistResponse createNoise(NoiseCreateRequest request) {
7783
User user = userQueryService.me();
78-
Address address = addressCommandService.save(request.x(), request.y(), request.roadAddress(),
79-
request.regionAddress());
84+
Address address = addressCommandService.save(
85+
request.x(),
86+
request.y(),
87+
request.roadAddress(),
88+
request.regionAddress()
89+
);
90+
8091
Noise noise = noiseCommandService.createNoise(
8192
user,
8293
address,
@@ -90,6 +101,16 @@ public NoisePersistResponse createNoise(NoiseCreateRequest request) {
90101
@Transactional
91102
public void deleteNoise(String id) {
92103
User user = userQueryService.me();
93-
noiseCommandService.deleteNoise(user, id);
104+
noiseCommandService.deleteNoise(user, NOISE_PREFIX + id);
105+
}
106+
107+
@Transactional(readOnly = true)
108+
public NoiseListResponse getNoisesByUserId(String userId) {
109+
List<Noise> noises = noiseQueryService.getNoisesByUserId(USER.getPrefix() + userId);
110+
List<NoiseResponse> responses = noises.stream()
111+
.map(NoiseResponse::from)
112+
.toList();
113+
114+
return NoiseListResponse.of(responses);
94115
}
95116
}

soridam-api/src/main/java/sorisoop/soridam/api/noise/presentation/NoiseApiController.java

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@
2323
import sorisoop.soridam.api.noise.application.NoiseFacade;
2424
import sorisoop.soridam.api.noise.presentation.request.NoiseCreateRequest;
2525
import sorisoop.soridam.api.noise.presentation.request.NoiseSearchRequest;
26-
import sorisoop.soridam.api.noise.presentation.response.NoiseReviewResponse;
2726
import sorisoop.soridam.api.noise.presentation.response.NoiseListResponse;
2827
import sorisoop.soridam.api.noise.presentation.response.NoisePersistResponse;
29-
import sorisoop.soridam.api.noise.presentation.response.NoiseSummaryResponse;
28+
import sorisoop.soridam.api.noise.presentation.response.NoiseResponse;
29+
import sorisoop.soridam.api.noise.presentation.response.NoiseReviewResponse;
30+
import sorisoop.soridam.api.noise.presentation.response.NoiseSummaryListResponse;
3031
import sorisoop.soridam.domain.noise.domain.NoiseLevel;
3132
import sorisoop.soridam.domain.noise.domain.Radius;
3233

@@ -41,12 +42,12 @@ public class NoiseApiController {
4142
- Description : 이 API는 해당 소음 데이터를 조회합니다.
4243
""")
4344
@ApiResponse(responseCode = "200")
44-
@GetMapping("/{noiseId}")
45-
public ResponseEntity<NoiseSummaryResponse> getUserNoiseDetail(
45+
@GetMapping("/{id}")
46+
public ResponseEntity<NoiseResponse> getUserNoiseDetail(
4647
@Parameter(description = "조회할 noise 데이터의 ID", example = "10", required = true)
47-
@PathVariable String noiseId
48+
@PathVariable String id
4849
) {
49-
NoiseSummaryResponse response = noiseFacade.getNoise(noiseId);
50+
NoiseResponse response = noiseFacade.getNoise(id);
5051
return ResponseEntity.ok(response);
5152
}
5253

@@ -56,7 +57,7 @@ public ResponseEntity<NoiseSummaryResponse> getUserNoiseDetail(
5657
@ApiResponse(responseCode = "200", description = "요청 성공")
5758
@ApiResponse(responseCode = "204", description = "결과 없음")
5859
@PostMapping("/nearby")
59-
public ResponseEntity<NoiseListResponse> getNearbyNoise(
60+
public ResponseEntity<NoiseSummaryListResponse> getNearbyNoise(
6061
@Valid @RequestBody NoiseSearchRequest request,
6162

6263
@RequestParam(required = false, defaultValue = "FIVE_HUNDRED_METERS")
@@ -67,7 +68,7 @@ public ResponseEntity<NoiseListResponse> getNearbyNoise(
6768
@Parameter(description = "소음 검색 범위", example = "QUIET", required = true)
6869
NoiseLevel level
6970
) {
70-
NoiseListResponse response = noiseFacade.getNearbyNoise(request, radius, level);
71+
NoiseSummaryListResponse response = noiseFacade.getNearbyNoise(request, radius, level);
7172
return ResponseEntity.ok(response);
7273
}
7374

@@ -76,7 +77,7 @@ public ResponseEntity<NoiseListResponse> getNearbyNoise(
7677
""")
7778
@ApiResponse(responseCode = "200", description = "요청 성공")
7879
@ApiResponse(responseCode = "204", description = "결과 없음")
79-
@GetMapping
80+
@GetMapping("/location")
8081
public ResponseEntity<NoiseReviewResponse> getDetailNoise(
8182
@RequestParam
8283
@Parameter(description = "x 좌표", example = "127.07150", required = true)
@@ -118,5 +119,16 @@ public ResponseEntity<Void> deleteNoise(
118119
return ResponseEntity.noContent().build();
119120
}
120121

121-
122+
@Operation(summary = "본인이 등록한 noise 데이터 조회 API", description = """
123+
- Description : 이 API는 댓글을 수정합니다.
124+
""")
125+
@ApiResponse(responseCode = "200")
126+
@GetMapping
127+
public ResponseEntity<NoiseListResponse> getUserNoises(
128+
@Parameter(description = "조회할 사용자의 ID", example = "9f3b462d-0fe9-4e7a-ae5d-74f9d9fc3ba4")
129+
@RequestParam String userId
130+
) {
131+
NoiseListResponse response = noiseFacade.getNoisesByUserId(userId);
132+
return ResponseEntity.ok(response);
133+
}
122134
}

soridam-api/src/main/java/sorisoop/soridam/api/noise/presentation/response/NoiseListResponse.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99

1010
@Builder
1111
public record NoiseListResponse(
12-
@Schema(description = "소음 데이터 목록", requiredMode = REQUIRED)
13-
List<NoiseResponse> noises
12+
@Schema(description = "소음 요약 정보 목록", requiredMode = REQUIRED)
13+
List<NoiseResponse> responses
1414
) {
15-
public static NoiseListResponse of(List<NoiseResponse> noises) {
15+
public static NoiseListResponse of(List<NoiseResponse> responses) {
1616
return builder()
17-
.noises(noises)
17+
.responses(responses)
1818
.build();
1919
}
2020
}

soridam-api/src/main/java/sorisoop/soridam/api/noise/presentation/response/NoiseResponse.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,22 +12,30 @@
1212

1313
@Builder
1414
public record NoiseResponse(
15+
@Schema(description = "소음 ID", example = "1", requiredMode = REQUIRED)
16+
String id,
17+
1518
@Schema(description = "소음 발생 지점 주소", requiredMode = REQUIRED)
1619
AddressResponse address,
1720

18-
@Schema(description = "평균 소음 데시벨", example = "50", requiredMode = REQUIRED)
21+
@Schema(description = "평균 데시벨", example = "50", requiredMode = REQUIRED)
1922
int avgDecibel,
2023

21-
@Schema(description = "데이터 생성 시간", example = "2024년 12월 14일 21시 37분", requiredMode = REQUIRED)
24+
@Schema(description = "최대 데시벨", example = "70", requiredMode = REQUIRED)
25+
int maxDecibel,
26+
27+
@Schema(description = "작성일자", example = "2024년 12월 14일 21시 37분", requiredMode = REQUIRED)
2228
String createdAt
2329
) {
2430
public static NoiseResponse from(Noise noise) {
2531
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 HH시 mm분");
2632
AddressResponse addressResponse = AddressResponse.from(noise.getAddress());
2733
return builder()
34+
.id(noise.extractUuid())
2835
.address(addressResponse)
2936
.avgDecibel(noise.getAvgDecibel())
30-
.createdAt(formatter.format(noise.getCreatedAt()))
37+
.maxDecibel(noise.getMaxDecibel())
38+
.createdAt(noise.getCreatedAt().format(formatter))
3139
.build();
3240
}
3341
}

soridam-api/src/main/java/sorisoop/soridam/api/noise/presentation/response/NoiseReviewResponse.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,13 @@
1111
@Builder
1212
public record NoiseReviewResponse(
1313
@Schema(description = "소음 데이터 목록", requiredMode = REQUIRED)
14-
List<NoiseResponse> noises,
14+
List<NoiseSummaryResponse> noises,
1515

1616
@Schema(description = "소음 리뷰 데이터 목록", requiredMode = REQUIRED)
1717
List<ReviewResponse> reviews
1818

1919
) {
20-
public static NoiseReviewResponse of(List<NoiseResponse> noises, List<ReviewResponse> reviews) {
20+
public static NoiseReviewResponse of(List<NoiseSummaryResponse> noises, List<ReviewResponse> reviews) {
2121
return builder()
2222
.noises(noises)
2323
.reviews(reviews)

soridam-api/src/main/java/sorisoop/soridam/api/noise/presentation/response/NoiseSummaryListResponse.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99

1010
@Builder
1111
public record NoiseSummaryListResponse(
12-
@Schema(description = "소음 요약 정보 목록", requiredMode = REQUIRED)
13-
List<NoiseSummaryResponse> responses
12+
@Schema(description = "소음 데이터 목록", requiredMode = REQUIRED)
13+
List<NoiseSummaryResponse> noises
1414
) {
15-
public static NoiseSummaryListResponse of(List<NoiseSummaryResponse> responses) {
15+
public static NoiseSummaryListResponse of(List<NoiseSummaryResponse> noises) {
1616
return builder()
17-
.responses(responses)
17+
.noises(noises)
1818
.build();
1919
}
2020
}

soridam-api/src/main/java/sorisoop/soridam/api/noise/presentation/response/NoiseSummaryResponse.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,30 +12,22 @@
1212

1313
@Builder
1414
public record NoiseSummaryResponse(
15-
@Schema(description = "소음 ID", example = "1", requiredMode = REQUIRED)
16-
String id,
17-
1815
@Schema(description = "소음 발생 지점 주소", requiredMode = REQUIRED)
1916
AddressResponse address,
2017

21-
@Schema(description = "평균 데시벨", example = "50", requiredMode = REQUIRED)
18+
@Schema(description = "평균 소음 데시벨", example = "50", requiredMode = REQUIRED)
2219
int avgDecibel,
2320

24-
@Schema(description = "최대 데시벨", example = "70", requiredMode = REQUIRED)
25-
int maxDecibel,
26-
27-
@Schema(description = "작성일자", example = "2024년 12월 14일 21시 37분", requiredMode = REQUIRED)
21+
@Schema(description = "데이터 생성 시간", example = "2024년 12월 14일 21시 37분", requiredMode = REQUIRED)
2822
String createdAt
2923
) {
3024
public static NoiseSummaryResponse from(Noise noise) {
3125
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy년 MM월 dd일 HH시 mm분");
3226
AddressResponse addressResponse = AddressResponse.from(noise.getAddress());
3327
return builder()
34-
.id(noise.extractUuid())
3528
.address(addressResponse)
3629
.avgDecibel(noise.getAvgDecibel())
37-
.maxDecibel(noise.getMaxDecibel())
38-
.createdAt(noise.getCreatedAt().format(formatter))
30+
.createdAt(formatter.format(noise.getCreatedAt()))
3931
.build();
4032
}
4133
}

soridam-api/src/main/java/sorisoop/soridam/api/review/ReviewApiController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public ResponseEntity<ReviewListResponse> getReviews(
7171
@PathVariable String targetId,
7272
@Parameter(description = "리뷰 종류", example = "NOISE", required = true)
7373
@RequestParam UuidPrefix reviewType) {
74-
ReviewListResponse response = reviewFacade.getReviews(reviewType.getPrefix() + targetId);
74+
ReviewListResponse response = reviewFacade.getReviews(targetId, reviewType);
7575
return ResponseEntity.ok(response);
7676
}
7777
}

soridam-api/src/main/java/sorisoop/soridam/api/review/application/ReviewFacade.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package sorisoop.soridam.api.review.application;
22

3+
import static sorisoop.soridam.globalutil.uuid.UuidPrefix.REVIEW;
4+
35
import java.util.List;
46

57
import org.springframework.stereotype.Component;
@@ -16,10 +18,13 @@
1618
import sorisoop.soridam.domain.review.domain.Review;
1719
import sorisoop.soridam.domain.user.application.UserQueryService;
1820
import sorisoop.soridam.domain.user.domain.User;
21+
import sorisoop.soridam.globalutil.uuid.UuidPrefix;
1922

2023
@Component
2124
@RequiredArgsConstructor
2225
public class ReviewFacade {
26+
private final static String REVIEW_PREFIX = REVIEW.getPrefix();
27+
2328
private final ReviewCommandService reviewCommandService;
2429
private final ReviewQueryService reviewQueryService;
2530
private final UserQueryService userQueryService;
@@ -42,20 +47,20 @@ public ReviewPersistResponse create(ReviewCreateRequest request) {
4247
@Transactional
4348
public void update(String reviewId, ReviewUpdateRequest request) {
4449
User user = userQueryService.me();
45-
Review review = reviewQueryService.getById(reviewId);
50+
Review review = reviewQueryService.getById(REVIEW_PREFIX + reviewId);
4651
reviewCommandService.update(user, review, request.content(), request.rating());
4752
}
4853

4954
@Transactional
5055
public void delete(String reviewId) {
5156
User user = userQueryService.me();
52-
Review review = reviewQueryService.getById(reviewId);
57+
Review review = reviewQueryService.getById(REVIEW_PREFIX + reviewId);
5358
reviewCommandService.delete(user, review);
5459
}
5560

5661
@Transactional(readOnly = true)
57-
public ReviewListResponse getReviews(String targetId) {
58-
List<Review> reviews = reviewQueryService.getByTargetIdAndReviewType(targetId);
62+
public ReviewListResponse getReviews(String targetId, UuidPrefix reviewType) {
63+
List<Review> reviews = reviewQueryService.getByTargetId(reviewType.getPrefix() + targetId);
5964
List<ReviewResponse> responses = reviews.stream()
6065
.map(ReviewResponse::from)
6166
.toList();
Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,23 @@
11
package sorisoop.soridam.api.user.application;
22

3-
import java.util.List;
3+
import static sorisoop.soridam.globalutil.uuid.UuidPrefix.USER;
44

55
import org.springframework.stereotype.Component;
66
import org.springframework.transaction.annotation.Transactional;
77

88
import lombok.RequiredArgsConstructor;
9-
import sorisoop.soridam.api.noise.presentation.response.NoiseSummaryListResponse;
10-
import sorisoop.soridam.api.noise.presentation.response.NoiseSummaryResponse;
119
import sorisoop.soridam.api.user.presentation.request.UserCreateRequest;
1210
import sorisoop.soridam.api.user.presentation.response.UserInfoResponse;
1311
import sorisoop.soridam.api.user.presentation.response.UserPersistResponse;
14-
import sorisoop.soridam.domain.noise.domain.Noise;
1512
import sorisoop.soridam.domain.user.application.UserCommandService;
1613
import sorisoop.soridam.domain.user.application.UserQueryService;
1714
import sorisoop.soridam.domain.user.domain.User;
1815

1916
@Component
2017
@RequiredArgsConstructor
2118
public class UserFacade {
19+
private static final String USER_PREFIX = USER.getPrefix();
20+
2221
private final UserCommandService userCommandService;
2322
private final UserQueryService userQueryService;
2423

@@ -36,19 +35,9 @@ public UserPersistResponse signUp(UserCreateRequest request){
3635
return UserPersistResponse.from(user);
3736
}
3837

39-
@Transactional(readOnly = true)
40-
public NoiseSummaryListResponse getUserNoises(String id) {
41-
List<Noise> noises = userQueryService.getUserNoises(id);
42-
List<NoiseSummaryResponse> responses = noises.stream()
43-
.map(NoiseSummaryResponse::from)
44-
.toList();
45-
46-
return NoiseSummaryListResponse.of(responses);
47-
}
48-
4938
@Transactional(readOnly = true)
5039
public UserInfoResponse getById(String id) {
51-
User user = userQueryService.getById(id);
40+
User user = userQueryService.getById(USER_PREFIX + id);
5241
return UserInfoResponse.from(user);
5342
}
5443
}

0 commit comments

Comments
 (0)