diff --git a/src/main/java/com/example/eightyage/domain/auth/controller/AuthController.java b/src/main/java/com/example/eightyage/domain/auth/controller/AuthController.java index 9ae8d48..99693ec 100644 --- a/src/main/java/com/example/eightyage/domain/auth/controller/AuthController.java +++ b/src/main/java/com/example/eightyage/domain/auth/controller/AuthController.java @@ -13,8 +13,8 @@ import org.springframework.security.access.annotation.Secured; import org.springframework.web.bind.annotation.*; -import static com.example.eightyage.domain.user.entity.UserRole.Authority.ADMIN; -import static com.example.eightyage.domain.user.entity.UserRole.Authority.USER; +import static com.example.eightyage.domain.user.userrole.UserRole.Authority.ADMIN; +import static com.example.eightyage.domain.user.userrole.UserRole.Authority.USER; @RestController @RequiredArgsConstructor diff --git a/src/main/java/com/example/eightyage/domain/product/entity/Product.java b/src/main/java/com/example/eightyage/domain/product/entity/Product.java index 5f061f9..10587ef 100644 --- a/src/main/java/com/example/eightyage/domain/product/entity/Product.java +++ b/src/main/java/com/example/eightyage/domain/product/entity/Product.java @@ -41,6 +41,10 @@ public class Product extends TimeStamped { @Temporal(TemporalType.TIMESTAMP) private LocalDateTime deletedAt; + public Product(Long id) { + this.id = id; + } + @Builder public Product(String name, Category category, String content, Integer price, SaleState saleState) { this.name = name; diff --git a/src/main/java/com/example/eightyage/domain/product/repository/ProductBulkRepository.java b/src/main/java/com/example/eightyage/domain/product/repository/ProductBulkRepository.java index 272b3e8..64f1e61 100644 --- a/src/main/java/com/example/eightyage/domain/product/repository/ProductBulkRepository.java +++ b/src/main/java/com/example/eightyage/domain/product/repository/ProductBulkRepository.java @@ -20,13 +20,10 @@ public class ProductBulkRepository { public void bulkInsertProduct(List products) { String sql = "INSERT INTO product (category, name, sale_state) values (?, ?, ?)"; - Random random = new Random(); - jdbcTemplate.batchUpdate(sql, products, BATCH_SIZE, (ps, argument) -> { - Category randomCategory = Category.values()[random.nextInt(Category.values().length)]; - ps.setString(1, randomCategory.name()); + ps.setString(1, argument.getCategory().name()); ps.setString(2, argument.getName()); - ps.setString(3, random.nextBoolean() ? SaleState.FOR_SALE.name() : SaleState.SOLD_OUT.name()); + ps.setString(3, argument.getSaleState().name()); }); } } diff --git a/src/main/java/com/example/eightyage/domain/product/service/ProductService.java b/src/main/java/com/example/eightyage/domain/product/service/ProductService.java index 052a4a0..29d4ec8 100644 --- a/src/main/java/com/example/eightyage/domain/product/service/ProductService.java +++ b/src/main/java/com/example/eightyage/domain/product/service/ProductService.java @@ -148,4 +148,6 @@ public Product findProductByIdOrElseThrow(Long productId) { () -> new NotFoundException("해당 제품이 존재하지 않습니다.") ); } + + } diff --git a/src/main/java/com/example/eightyage/domain/review/repository/ReviewBulkRepository.java b/src/main/java/com/example/eightyage/domain/review/repository/ReviewBulkRepository.java index 7b72dd5..c9bf85a 100644 --- a/src/main/java/com/example/eightyage/domain/review/repository/ReviewBulkRepository.java +++ b/src/main/java/com/example/eightyage/domain/review/repository/ReviewBulkRepository.java @@ -18,12 +18,10 @@ public class ReviewBulkRepository { public void bulkInsertReviews(List reviews) { String sql = "INSERT INTO review (user_id, product_id, score) values (?, ?, ?)"; - Random random = new Random(); - jdbcTemplate.batchUpdate(sql, reviews, BATCH_SIZE, (ps, argument) -> { - ps.setInt(1, 1); - ps.setInt(2, random.nextInt(1000) + 1); - ps.setDouble(3, random.nextDouble() * 5); + ps.setLong(1, argument.getUser().getId()); + ps.setLong(2, argument.getProduct().getId()); + ps.setDouble(3, argument.getScore()); }); } diff --git a/src/main/java/com/example/eightyage/domain/user/entity/User.java b/src/main/java/com/example/eightyage/domain/user/entity/User.java index 5847eec..c857965 100644 --- a/src/main/java/com/example/eightyage/domain/user/entity/User.java +++ b/src/main/java/com/example/eightyage/domain/user/entity/User.java @@ -1,5 +1,6 @@ package com.example.eightyage.domain.user.entity; +import com.example.eightyage.domain.user.userrole.UserRole; import com.example.eightyage.global.dto.AuthUser; import com.example.eightyage.global.entity.TimeStamped; import jakarta.persistence.*; diff --git a/src/main/java/com/example/eightyage/domain/user/repository/UserBulkRepository.java b/src/main/java/com/example/eightyage/domain/user/repository/UserBulkRepository.java index 2a861c0..8c953a3 100644 --- a/src/main/java/com/example/eightyage/domain/user/repository/UserBulkRepository.java +++ b/src/main/java/com/example/eightyage/domain/user/repository/UserBulkRepository.java @@ -17,15 +17,12 @@ public class UserBulkRepository { private final int BATCH_SIZE = 1000; public void bulkInsertUsers(List users) { - String sql = "INSERT INTO user (email, password, nickname, deleted_at) values (?, ?, ?, ?)"; - - Random random = new Random(); + String sql = "INSERT INTO user (email, password, nickname) values (?, ?, ?)"; jdbcTemplate.batchUpdate(sql, users, BATCH_SIZE, (ps, argument) -> { ps.setString(1, argument.getEmail()); ps.setString(2, argument.getPassword()); ps.setString(3, argument.getNickname()); - ps.setString(4, random.nextBoolean() ? null : LocalDateTime.now().toString()); // 랜덤으로 유저 삭제 }); } } diff --git a/src/main/java/com/example/eightyage/domain/user/service/UserService.java b/src/main/java/com/example/eightyage/domain/user/service/UserService.java index fc18d0c..8840f3d 100644 --- a/src/main/java/com/example/eightyage/domain/user/service/UserService.java +++ b/src/main/java/com/example/eightyage/domain/user/service/UserService.java @@ -2,7 +2,7 @@ import com.example.eightyage.domain.user.dto.request.UserDeleteRequestDto; import com.example.eightyage.domain.user.entity.User; -import com.example.eightyage.domain.user.entity.UserRole; +import com.example.eightyage.domain.user.userrole.UserRole; import com.example.eightyage.domain.user.repository.UserRepository; import com.example.eightyage.global.dto.AuthUser; import com.example.eightyage.global.exception.BadRequestException; diff --git a/src/main/java/com/example/eightyage/domain/user/entity/UserRole.java b/src/main/java/com/example/eightyage/domain/user/userrole/UserRole.java similarity index 94% rename from src/main/java/com/example/eightyage/domain/user/entity/UserRole.java rename to src/main/java/com/example/eightyage/domain/user/userrole/UserRole.java index 7f92a4f..49b1fb1 100644 --- a/src/main/java/com/example/eightyage/domain/user/entity/UserRole.java +++ b/src/main/java/com/example/eightyage/domain/user/userrole/UserRole.java @@ -1,4 +1,4 @@ -package com.example.eightyage.domain.user.entity; +package com.example.eightyage.domain.user.userrole; import com.example.eightyage.global.exception.UnauthorizedException; import lombok.Getter; diff --git a/src/main/java/com/example/eightyage/global/dto/AuthUser.java b/src/main/java/com/example/eightyage/global/dto/AuthUser.java index 022a0d4..07f565e 100644 --- a/src/main/java/com/example/eightyage/global/dto/AuthUser.java +++ b/src/main/java/com/example/eightyage/global/dto/AuthUser.java @@ -1,6 +1,6 @@ package com.example.eightyage.global.dto; -import com.example.eightyage.domain.user.entity.UserRole; +import com.example.eightyage.domain.user.userrole.UserRole; import lombok.Builder; import lombok.Getter; import org.springframework.security.core.GrantedAuthority; diff --git a/src/main/java/com/example/eightyage/global/filter/JwtAuthenticationFilter.java b/src/main/java/com/example/eightyage/global/filter/JwtAuthenticationFilter.java index 1e626ec..dccf118 100644 --- a/src/main/java/com/example/eightyage/global/filter/JwtAuthenticationFilter.java +++ b/src/main/java/com/example/eightyage/global/filter/JwtAuthenticationFilter.java @@ -1,6 +1,6 @@ package com.example.eightyage.global.filter; -import com.example.eightyage.domain.user.entity.UserRole; +import com.example.eightyage.domain.user.userrole.UserRole; import com.example.eightyage.global.config.JwtAuthenticationToken; import com.example.eightyage.global.util.JwtUtil; import com.example.eightyage.global.dto.AuthUser; diff --git a/src/main/java/com/example/eightyage/global/util/JwtUtil.java b/src/main/java/com/example/eightyage/global/util/JwtUtil.java index 8547e15..1716dd0 100644 --- a/src/main/java/com/example/eightyage/global/util/JwtUtil.java +++ b/src/main/java/com/example/eightyage/global/util/JwtUtil.java @@ -4,7 +4,7 @@ import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import io.jsonwebtoken.security.Keys; -import com.example.eightyage.domain.user.entity.UserRole; +import com.example.eightyage.domain.user.userrole.UserRole; import jakarta.annotation.PostConstruct; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; diff --git a/src/test/java/com/example/eightyage/bulk/ProductBulkTest.java b/src/test/java/com/example/eightyage/bulk/ProductBulkTest.java index 3b2584c..810f73d 100644 --- a/src/test/java/com/example/eightyage/bulk/ProductBulkTest.java +++ b/src/test/java/com/example/eightyage/bulk/ProductBulkTest.java @@ -1,6 +1,8 @@ //package com.example.eightyage.bulk; // +//import com.example.eightyage.domain.product.entity.Category; //import com.example.eightyage.domain.product.entity.Product; +//import com.example.eightyage.domain.product.entity.SaleState; //import com.example.eightyage.domain.product.repository.ProductBulkRepository; //import org.junit.jupiter.api.Test; //import org.springframework.beans.factory.annotation.Autowired; @@ -9,6 +11,7 @@ // //import java.util.ArrayList; //import java.util.List; +//import java.util.Random; //import java.util.UUID; // //@SpringBootTest @@ -29,15 +32,21 @@ // insertCount = 1000000; // 로컬, 개발 서버 등에서는 많게 // } // +// Random random = new Random(); +// // List batchList = new ArrayList<>(); // // for (int i = 0; i < insertCount; i++) { +// Category randomCategory = Category.values()[random.nextInt(Category.values().length)]; // Product product = Product.builder() -// .name(UUID.randomUUID().toString()) -// .build(); +// .category(randomCategory) +// .name(UUID.randomUUID().toString()) +// .saleState(random.nextBoolean() ? SaleState.FOR_SALE : SaleState.SOLD_OUT) +// .build(); +// // batchList.add(product); // -// if (batchList.size() == insertCount) { +// if (batchList.size() == insertCount / 100) { // productBulkRepository.bulkInsertProduct(batchList); // batchList.clear(); // diff --git a/src/test/java/com/example/eightyage/bulk/ReviewBulkTest.java b/src/test/java/com/example/eightyage/bulk/ReviewBulkTest.java index ebd86aa..9ecb4e1 100644 --- a/src/test/java/com/example/eightyage/bulk/ReviewBulkTest.java +++ b/src/test/java/com/example/eightyage/bulk/ReviewBulkTest.java @@ -1,7 +1,9 @@ //package com.example.eightyage.bulk; // +//import com.example.eightyage.domain.product.entity.Product; //import com.example.eightyage.domain.review.entity.Review; //import com.example.eightyage.domain.review.repository.ReviewBulkRepository; +//import com.example.eightyage.domain.user.entity.User; //import org.junit.jupiter.api.Test; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.boot.test.context.SpringBootTest; @@ -9,6 +11,7 @@ // //import java.util.ArrayList; //import java.util.List; +//import java.util.Random; // //@SpringBootTest //@ActiveProfiles("ci") @@ -28,17 +31,21 @@ // insertCount = 1000000; // 로컬, 개발 서버 등에서는 많게 // } // +// Random random = new Random(); // List batchList = new ArrayList<>(); // // for (int i = 0; i < insertCount; i++) { -// Review review = new Review(); +// User user = User.builder().id(1L).build(); +// Product product = new Product((long) (random.nextInt(100) + 1)); +// +// Review review = new Review(user, product, random.nextDouble() * 5, "content" + i); // batchList.add(review); // -// if (batchList.size() == insertCount) { +// if (batchList.size() == insertCount / 100) { // reviewBulkRepository.bulkInsertReviews(batchList); // batchList.clear(); // -// sleep(500); +//// sleep(500); // } // } // diff --git a/src/test/java/com/example/eightyage/bulk/UserBulkTest.java b/src/test/java/com/example/eightyage/bulk/UserBulkTest.java index 084b16f..51ec056 100644 --- a/src/test/java/com/example/eightyage/bulk/UserBulkTest.java +++ b/src/test/java/com/example/eightyage/bulk/UserBulkTest.java @@ -1,8 +1,9 @@ //package com.example.eightyage.bulk; // //import com.example.eightyage.domain.user.entity.User; -//import com.example.eightyage.domain.user.entity.UserRole; +//import com.example.eightyage.domain.user.userrole.UserRole; //import com.example.eightyage.domain.user.repository.UserBulkRepository; +//import com.example.eightyage.global.util.RandomCodeGenerator; //import org.junit.jupiter.api.Test; //import org.springframework.beans.factory.annotation.Autowired; //import org.springframework.boot.test.context.SpringBootTest; @@ -19,7 +20,7 @@ // private UserBulkRepository userBulkRepository; // // @Test -// void 유저_데이터_백만건_생성() { +// void 유저_데이터_생성() { // // int insertCount; // @@ -33,18 +34,18 @@ // // for (int i = 0; i < insertCount; i++) { // User user = User.builder() -// .email(i + "@email.com") +// .email(RandomCodeGenerator.generateCouponCode(8) + "@email.com") // .nickname("nickname" + i) // .password("password") // .userRole(UserRole.ROLE_USER) // .build(); // batchList.add(user); // -// if (batchList.size() == insertCount) { +// if (batchList.size() == insertCount / 100) { // userBulkRepository.bulkInsertUsers(batchList); // batchList.clear(); // -// sleep(500); +//// sleep(500); // } // } // diff --git a/src/test/java/com/example/eightyage/domain/auth/service/AuthServiceTest.java b/src/test/java/com/example/eightyage/domain/auth/service/AuthServiceTest.java index c65ea01..7254b8e 100644 --- a/src/test/java/com/example/eightyage/domain/auth/service/AuthServiceTest.java +++ b/src/test/java/com/example/eightyage/domain/auth/service/AuthServiceTest.java @@ -4,7 +4,7 @@ import com.example.eightyage.domain.auth.dto.request.AuthSignupRequestDto; import com.example.eightyage.domain.auth.dto.response.AuthTokensResponseDto; import com.example.eightyage.domain.user.entity.User; -import com.example.eightyage.domain.user.entity.UserRole; +import com.example.eightyage.domain.user.userrole.UserRole; import com.example.eightyage.domain.user.service.UserService; import com.example.eightyage.global.exception.BadRequestException; import com.example.eightyage.global.exception.UnauthorizedException; diff --git a/src/test/java/com/example/eightyage/domain/auth/service/TokenServiceTest.java b/src/test/java/com/example/eightyage/domain/auth/service/TokenServiceTest.java index 584784f..455f169 100644 --- a/src/test/java/com/example/eightyage/domain/auth/service/TokenServiceTest.java +++ b/src/test/java/com/example/eightyage/domain/auth/service/TokenServiceTest.java @@ -3,7 +3,7 @@ import com.example.eightyage.domain.auth.entity.RefreshToken; import com.example.eightyage.domain.auth.repository.RefreshTokenRepository; import com.example.eightyage.domain.user.entity.User; -import com.example.eightyage.domain.user.entity.UserRole; +import com.example.eightyage.domain.user.userrole.UserRole; import com.example.eightyage.domain.user.service.UserService; import com.example.eightyage.global.exception.NotFoundException; import com.example.eightyage.global.exception.UnauthorizedException; diff --git a/src/test/java/com/example/eightyage/domain/user/service/UserServiceTest.java b/src/test/java/com/example/eightyage/domain/user/service/UserServiceTest.java index 8041ceb..e2fd5f7 100644 --- a/src/test/java/com/example/eightyage/domain/user/service/UserServiceTest.java +++ b/src/test/java/com/example/eightyage/domain/user/service/UserServiceTest.java @@ -2,7 +2,7 @@ import com.example.eightyage.domain.user.dto.request.UserDeleteRequestDto; import com.example.eightyage.domain.user.entity.User; -import com.example.eightyage.domain.user.entity.UserRole; +import com.example.eightyage.domain.user.userrole.UserRole; import com.example.eightyage.domain.user.repository.UserRepository; import com.example.eightyage.global.dto.AuthUser; import com.example.eightyage.global.exception.BadRequestException; diff --git a/src/test/resources/application-test.yml b/src/test/resources/application-test.yml index da95d4b..bb86911 100644 --- a/src/test/resources/application-test.yml +++ b/src/test/resources/application-test.yml @@ -7,10 +7,27 @@ spring: jpa: hibernate: - ddl-auto: create + ddl-auto: update properties: hibernate: show_sql: true format_sql: true use_sql_comments: true - dialect: org.hibernate.dialect.MySQLDialect \ No newline at end of file + dialect: org.hibernate.dialect.MySQLDialect + cloud: + aws: + credentials: + access-key: ${AWS_ACCESS_KEY} + secret-key: ${AWS_SECRET_KEY} + region: + static: ap-northeast-2 + s3: + bucket: my-gom-bucket + +aws: + credentials: + access-key: ${AWS_ACCESS_KEY} + secret-key: ${AWS_SECRET_KEY} + region: ap-northeast-2 + s3: + bucket: my-gom-bucket \ No newline at end of file