Skip to content

Commit 6310773

Browse files
committed
Merge branch 'develop' into refactor/PRODUCT-235
# Conflicts: # src/main/resources/db/migration/V5__story_description_available_null.sql
2 parents a9983ed + 1220cb8 commit 6310773

File tree

28 files changed

+351
-207
lines changed

28 files changed

+351
-207
lines changed

src/main/java/eatda/controller/cheer/CheerController.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,17 @@ public ResponseEntity<CheerResponse> registerCheer(@RequestPart("request") Cheer
4141
}
4242

4343
@GetMapping("/api/cheer")
44-
public ResponseEntity<CheersResponse> getCheers(@RequestParam @Min(1) @Max(50) int size) {
45-
CheersResponse response = cheerService.getCheers(size);
44+
public ResponseEntity<CheersResponse> getCheers(@RequestParam(defaultValue = "0") @Min(0) int page,
45+
@RequestParam(defaultValue = "5") @Min(1) @Max(50) int size) {
46+
CheersResponse response = cheerService.getCheers(page, size);
4647
return ResponseEntity.ok(response);
4748
}
4849

4950
@GetMapping("/api/shops/{storeId}/cheers")
5051
public ResponseEntity<CheersInStoreResponse> getCheersByStoreId(@PathVariable Long storeId,
51-
@RequestParam @Min(1) @Max(50) int size) {
52-
CheersInStoreResponse response = cheerService.getCheersByStoreId(storeId, size);
52+
@RequestParam(defaultValue = "0") @Min(0) int page,
53+
@RequestParam(defaultValue = "5") @Min(1) @Max(50) int size) {
54+
CheersInStoreResponse response = cheerService.getCheersByStoreId(storeId, page, size);
5355
return ResponseEntity.ok(response);
5456
}
5557
}

src/main/java/eatda/controller/store/StoreController.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,11 @@ public ResponseEntity<ImagesResponse> getStoreImages(@PathVariable long storeId)
2929
}
3030

3131
@GetMapping("/api/shops")
32-
public ResponseEntity<StoresResponse> getStores(@RequestParam @Min(1) @Max(50) int size,
32+
public ResponseEntity<StoresResponse> getStores(@RequestParam(defaultValue = "0") @Min(0) int page,
33+
@RequestParam(defaultValue = "5") @Min(1) @Max(50) int size,
3334
@RequestParam(required = false) String category) {
34-
return ResponseEntity.ok(storeService.getStores(size, category));
35+
StoresResponse response = storeService.getStores(page, size, category);
36+
return ResponseEntity.ok(response);
3537
}
3638

3739
@GetMapping("/api/shops/{storeId}")

src/main/java/eatda/domain/Image.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,15 @@
33
import eatda.exception.BusinessErrorCode;
44
import eatda.exception.BusinessException;
55
import java.util.Set;
6-
import lombok.Getter;
76
import org.springframework.lang.Nullable;
87
import org.springframework.web.multipart.MultipartFile;
98

10-
@Getter
11-
public class Image {
9+
public record Image(ImageDomain domain, MultipartFile file) {
1210

1311
private static final Set<String> ALLOWED_CONTENT_TYPES = Set.of("image/jpg", "image/jpeg", "image/png");
1412
private static final String EXTENSION_DELIMITER = ".";
1513
private static final String DEFAULT_CONTENT_TYPE = "bin";
1614

17-
private final ImageDomain domain;
18-
private final MultipartFile file;
19-
2015
public Image(ImageDomain domain, @Nullable MultipartFile file) {
2116
validateContentType(file);
2217
this.domain = domain;

src/main/java/eatda/domain/store/Coordinates.java

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,16 @@ public class Coordinates {
1919
private static final double MAX_LATITUDE = 37.715133;
2020
private static final double MIN_LONGITUDE = 126.734086;
2121
private static final double MAX_LONGITUDE = 127.269311;
22+
@Column(nullable = false)
23+
private Double latitude;
24+
@Column(nullable = false)
25+
private Double longitude;
26+
27+
public Coordinates(Double latitude, Double longitude) {
28+
validate(latitude, longitude);
29+
this.latitude = latitude;
30+
this.longitude = longitude;
31+
}
2232

2333
public static double getMinLatitude() {
2434
return MIN_LATITUDE;
@@ -36,18 +46,6 @@ public static double getMaxLongitude() {
3646
return MAX_LONGITUDE;
3747
}
3848

39-
@Column(nullable = false)
40-
private Double latitude;
41-
42-
@Column(nullable = false)
43-
private Double longitude;
44-
45-
public Coordinates(Double latitude, Double longitude) {
46-
validate(latitude, longitude);
47-
this.latitude = latitude;
48-
this.longitude = longitude;
49-
}
50-
5149
private void validate(Double latitude, Double longitude) {
5250
validateNotNull(latitude, longitude);
5351
validateRange(latitude, longitude);

src/main/java/eatda/service/cheer/CheerService.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import eatda.storage.image.ImageStorage;
2020
import java.util.List;
2121
import lombok.RequiredArgsConstructor;
22-
import org.springframework.data.domain.Pageable;
22+
import org.springframework.data.domain.PageRequest;
2323
import org.springframework.stereotype.Service;
2424
import org.springframework.transaction.annotation.Transactional;
2525

@@ -58,8 +58,8 @@ private void validateRegisterCheer(Member member, String storeKakaoId) {
5858
}
5959

6060
@Transactional(readOnly = true)
61-
public CheersResponse getCheers(int size) {
62-
List<Cheer> cheers = cheerRepository.findAllByOrderByCreatedAtDesc(Pageable.ofSize(size));
61+
public CheersResponse getCheers(int page, int size) {
62+
List<Cheer> cheers = cheerRepository.findAllByOrderByCreatedAtDesc(PageRequest.of(page, size));
6363
return toCheersResponse(cheers);
6464
}
6565

@@ -71,9 +71,9 @@ private CheersResponse toCheersResponse(List<Cheer> cheers) {
7171
}
7272

7373
@Transactional(readOnly = true)
74-
public CheersInStoreResponse getCheersByStoreId(Long storeId, int size) {
74+
public CheersInStoreResponse getCheersByStoreId(Long storeId, int page, int size) {
7575
Store store = storeRepository.getById(storeId);
76-
List<Cheer> cheers = cheerRepository.findAllByStoreOrderByCreatedAtDesc(store, Pageable.ofSize(size));
76+
List<Cheer> cheers = cheerRepository.findAllByStoreOrderByCreatedAtDesc(store, PageRequest.of(page, size));
7777

7878
List<CheerInStoreResponse> cheersResponse = cheers.stream()
7979
.map(CheerInStoreResponse::new)

src/main/java/eatda/service/store/StoreService.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import java.util.List;
1616
import java.util.Optional;
1717
import lombok.RequiredArgsConstructor;
18-
import org.springframework.data.domain.Pageable;
18+
import org.springframework.data.domain.PageRequest;
1919
import org.springframework.lang.Nullable;
2020
import org.springframework.stereotype.Service;
2121

@@ -33,19 +33,19 @@ public StoreResponse getStore(long storeId) {
3333
}
3434

3535
// TODO : N+1 문제 해결
36-
public StoresResponse getStores(int size, @Nullable String category) {
37-
return findStores(size, category)
36+
public StoresResponse getStores(int page, int size, @Nullable String category) {
37+
return findStores(page, size, category)
3838
.stream()
3939
.map(store -> new StorePreviewResponse(store, getStoreImageUrl(store).orElse(null)))
4040
.collect(collectingAndThen(toList(), StoresResponse::new));
4141
}
4242

43-
private List<Store> findStores(int size, @Nullable String category) {
43+
private List<Store> findStores(int page, int size, @Nullable String category) {
4444
if (category == null || category.isBlank()) {
45-
return storeRepository.findAllByOrderByCreatedAtDesc(Pageable.ofSize(size));
45+
return storeRepository.findAllByOrderByCreatedAtDesc(PageRequest.of(page, size));
4646
}
4747
return storeRepository.findAllByCategoryOrderByCreatedAtDesc(
48-
StoreCategory.from(category), Pageable.ofSize(size));
48+
StoreCategory.from(category), PageRequest.of(page, size));
4949
}
5050

5151
public ImagesResponse getStoreImages(long storeId) {

src/main/java/eatda/storage/image/ExternalImageStorage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public ExternalImageStorage(FileClient fileClient) {
2222

2323
public ImageKey upload(Image image) {
2424
String createdKey = createKey(image.getDomainName(), image.getExtension());
25-
fileClient.upload(image.getFile(), createdKey);
25+
fileClient.upload(image.file(), createdKey);
2626
return new ImageKey(createdKey);
2727
}
2828

src/main/resources/db/migration/V1__init.sql

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,21 +20,21 @@ CREATE TABLE `store`
2020
`place_url` VARCHAR(255) NOT NULL,
2121
`road_address` VARCHAR(255) NOT NULL,
2222
`lot_number_address` VARCHAR(255) NOT NULL,
23-
`latitude` DOUBLE NOT NULL,
24-
`longitude` DOUBLE NOT NULL,
23+
`latitude` DOUBLE NOT NULL,
24+
`longitude` DOUBLE NOT NULL,
2525
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
2626
PRIMARY KEY (`id`)
2727
);
2828

2929
CREATE TABLE `cheer`
3030
(
31-
`id` BIGINT NOT NULL AUTO_INCREMENT,
32-
`member_id` BIGINT NOT NULL,
33-
`store_id` BIGINT NOT NULL,
34-
`description` TEXT NOT NULL,
31+
`id` BIGINT NOT NULL AUTO_INCREMENT,
32+
`member_id` BIGINT NOT NULL,
33+
`store_id` BIGINT NOT NULL,
34+
`description` TEXT NOT NULL,
3535
`image_key` VARCHAR(511) NULL,
36-
`is_admin` BOOLEAN NOT NULL DEFAULT FALSE,
37-
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
36+
`is_admin` BOOLEAN NOT NULL DEFAULT FALSE,
37+
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
3838
PRIMARY KEY (`id`),
3939
FOREIGN KEY (`member_id`) REFERENCES `member` (`id`) ON DELETE CASCADE,
4040
FOREIGN KEY (`store_id`) REFERENCES `store` (`id`) ON DELETE CASCADE

src/test/java/eatda/client/map/KakaoPropertiesTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import static org.assertj.core.api.Assertions.assertThatCode;
44
import static org.assertj.core.api.Assertions.assertThatThrownBy;
5-
import static org.junit.jupiter.api.Assertions.*;
65

76
import org.junit.jupiter.api.Nested;
87
import org.junit.jupiter.api.Test;

src/test/java/eatda/controller/cheer/CheerControllerTest.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,13 @@ class GetCheers {
6969
Cheer cheer1 = cheerGenerator.generateAdmin(member, store1, startAt);
7070
Cheer cheer2 = cheerGenerator.generateAdmin(member, store1, startAt.plusHours(1));
7171
Cheer cheer3 = cheerGenerator.generateAdmin(member, store2, startAt.plusHours(2));
72+
int page = 0;
73+
int size = 2;
7274

7375
CheersResponse response = given()
7476
.when()
75-
.queryParam("size", 2)
77+
.queryParam("page", page)
78+
.queryParam("size", size)
7679
.get("/api/cheer")
7780
.then()
7881
.statusCode(200)
@@ -99,10 +102,13 @@ class GetCheersByStoreId {
99102
Cheer cheer1 = cheerGenerator.generateCommon(member1, store);
100103
Thread.sleep(5);
101104
Cheer cheer2 = cheerGenerator.generateCommon(member2, store);
105+
int page = 0;
106+
int size = 2;
102107

103108
CheersInStoreResponse response = given()
104109
.when()
105-
.queryParam("size", 2)
110+
.queryParam("page", page)
111+
.queryParam("size", size)
106112
.get("/api/shops/{storeId}/cheers", store.getId())
107113
.then()
108114
.statusCode(200)

0 commit comments

Comments
 (0)