diff --git a/src/main/java/com/seoultech/synergybe/domain/apply/repository/ApplyRepository.java b/src/main/java/com/seoultech/synergybe/domain/apply/repository/ApplyRepository.java index b8d455fc..4a13ef6b 100644 --- a/src/main/java/com/seoultech/synergybe/domain/apply/repository/ApplyRepository.java +++ b/src/main/java/com/seoultech/synergybe/domain/apply/repository/ApplyRepository.java @@ -11,6 +11,7 @@ @Repository public interface ApplyRepository extends JpaRepository, ApplyRepositoryCustom { + Apply findByApplyToken(String applyToken); // @Query(value = "SELECT * FROM apply WHERE user_id = :userId AND project_id = :projectId", nativeQuery = true) // Optional findByUserIdAndProjectId(@Param("userId") String userId, @Param("projectId") Long projectId); diff --git a/src/main/java/com/seoultech/synergybe/domain/apply/service/ApplyService.java b/src/main/java/com/seoultech/synergybe/domain/apply/service/ApplyService.java index d8864f86..ea5cd1f2 100644 --- a/src/main/java/com/seoultech/synergybe/domain/apply/service/ApplyService.java +++ b/src/main/java/com/seoultech/synergybe/domain/apply/service/ApplyService.java @@ -60,10 +60,11 @@ public GetApplyResponse createApply(String userToken, String projectToken) { } @Transactional - public void deleteApply(String userId, String applyId) { + public void deleteApply(String userId, String applyToken) { // todo // 사용자 권한 검증 User user = userService.getUserByToken(userId); + Long applyId = getApplyId(applyToken); Apply apply = getApply(applyId); validateApplyUser(user, apply); applyRepository.delete(apply); @@ -75,6 +76,10 @@ private void validateApplyUser(User user, Apply apply) { } } + public Long getApplyId(String applyToken) { + return applyRepository.findByApplyToken(applyToken).getId(); + } + @Transactional public void updateApplyStatusToAccept(String leaderId, String applyUserId, String projectId) { Apply apply = applyRepository.findApplyByUserIdAndProjectId(applyUserId, projectId); @@ -140,7 +145,7 @@ public GetListApplyUserResponse getApplyUserList(String projectId) { return ApplyMapperEntityToDto.userListToResponse(users); } - public Apply getApply(String applyId) { + public Apply getApply(Long applyId) { return applyRepository.findById(applyId).orElseThrow(() -> new ApplyNotFoundException("신청내역이 존재하지 않습니다.")); } } diff --git a/src/main/java/com/seoultech/synergybe/domain/comment/repository/CommentRepository.java b/src/main/java/com/seoultech/synergybe/domain/comment/repository/CommentRepository.java index 960967c6..a80c7447 100644 --- a/src/main/java/com/seoultech/synergybe/domain/comment/repository/CommentRepository.java +++ b/src/main/java/com/seoultech/synergybe/domain/comment/repository/CommentRepository.java @@ -7,9 +7,12 @@ import org.springframework.stereotype.Repository; import java.util.List; +import java.util.Optional; @Repository public interface CommentRepository extends JpaRepository { @Query(value = "SELECT comment_id FROM comment WHERE post_id = :postId", nativeQuery = true) List findCommentIdsByPostId(@Param("postId") String postId); + + Comment findByCommentToken(String commentToken); } diff --git a/src/main/java/com/seoultech/synergybe/domain/comment/service/CommentService.java b/src/main/java/com/seoultech/synergybe/domain/comment/service/CommentService.java index ab088344..e83401d4 100644 --- a/src/main/java/com/seoultech/synergybe/domain/comment/service/CommentService.java +++ b/src/main/java/com/seoultech/synergybe/domain/comment/service/CommentService.java @@ -19,6 +19,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; @Service @@ -63,8 +64,7 @@ public GetCommentResponse updateComment(UpdateCommentRequest request) { } public Comment findCommentById(String commentId) { - return commentRepository.findById(commentId) - .orElseThrow(() -> new CommentNotFoundException("존재하지 않는 댓글입니다.")); + return commentRepository.findByCommentToken(commentId); } public void deleteComment(String commentId) { @@ -72,8 +72,16 @@ public void deleteComment(String commentId) { commentRepository.delete(comment); } + public Long getCommentId(String commentToken) { + return commentRepository.findByCommentToken(commentToken).getId(); + } + public ListResponse getCommentList(String postId) { - List commentIds = commentRepository.findCommentIdsByPostId(postId); + List commentTokens = commentRepository.findCommentIdsByPostId(postId); + List commentIds = new ArrayList<>(); + for (String commentToken : commentTokens) { + commentIds.add(getCommentId(commentToken)); + } List comments = commentRepository.findAllById(commentIds); diff --git a/src/main/java/com/seoultech/synergybe/domain/notice/repository/NoticeRepository.java b/src/main/java/com/seoultech/synergybe/domain/notice/repository/NoticeRepository.java index 525678c8..fc5dee6b 100644 --- a/src/main/java/com/seoultech/synergybe/domain/notice/repository/NoticeRepository.java +++ b/src/main/java/com/seoultech/synergybe/domain/notice/repository/NoticeRepository.java @@ -12,4 +12,6 @@ public interface NoticeRepository extends JpaRepository { @Query(value = "SELECT notice_id FROM notice WHERE project_id = :projectId", nativeQuery = true) List findNoticeIdsByProjectId(@Param("projectId") String projectId); + + Notice findByNoticeToken(String noticeToken); } diff --git a/src/main/java/com/seoultech/synergybe/domain/notice/service/NoticeService.java b/src/main/java/com/seoultech/synergybe/domain/notice/service/NoticeService.java index 1105d7c8..5c742601 100644 --- a/src/main/java/com/seoultech/synergybe/domain/notice/service/NoticeService.java +++ b/src/main/java/com/seoultech/synergybe/domain/notice/service/NoticeService.java @@ -18,6 +18,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -64,12 +65,19 @@ public GetNoticeResponse getNotice(String noticeId) { } public Notice findNoticeById(String noticeId) { - return this.noticeRepository.findById(noticeId) - .orElseThrow(() -> new NoticeNotFoundException("존재하지 않는 공지입니다.")); + return this.noticeRepository.findByNoticeToken(noticeId); + } + + public Long getNoticeId(String noticeToken) { + return noticeRepository.findByNoticeToken(noticeToken).getId(); } public ListResponse getNoticeList(String projectId) { - List noticeIds = noticeRepository.findNoticeIdsByProjectId(projectId); + List noticeTokens = noticeRepository.findNoticeIdsByProjectId(projectId); + List noticeIds = new ArrayList<>(); + for (String noticeToken : noticeTokens) { + noticeIds.add(getNoticeId(noticeToken)); + } List notices = noticeRepository.findAllById(noticeIds); diff --git a/src/main/java/com/seoultech/synergybe/domain/project/domain/service/ProjectService.java b/src/main/java/com/seoultech/synergybe/domain/project/domain/service/ProjectService.java index 1cbc26ec..802e5c23 100644 --- a/src/main/java/com/seoultech/synergybe/domain/project/domain/service/ProjectService.java +++ b/src/main/java/com/seoultech/synergybe/domain/project/domain/service/ProjectService.java @@ -112,7 +112,12 @@ public GetProjectResponse deleteProject(String userId, String projectId) { return GetProjectResponse.builder().build(); } - public Project findProjectById(String projectId) { + public Long getProjectId(String projectToken) { + return projectRepository.findByProjectToken(projectToken).getId(); + } + + public Project findProjectById(String projectToken) { + Long projectId = getProjectId(projectToken); return projectRepository.findById(projectId) .orElseThrow(() -> new ProjectNotFoundException("존재하지 않는 프로젝트입니다.")); } @@ -179,7 +184,12 @@ public Predicate toPredicate(Root projectRoot, CriteriaQuery query, } public ListResponse getLikedProjectList(User user) { - List projectIds = projectLikeService.findLikedProjectIds(user); + List projectTokens = projectLikeService.findLikedProjectIds(user); + List projectIds = new ArrayList<>(); + for (String projectToken : projectTokens) { + projectIds.add(getProjectId(projectToken)); + } + List projects = projectRepository.findAllById(projectIds); return new ListResponse(projects); @@ -232,8 +242,12 @@ public ListResponse getRecommendListByUser(User user, Long e int endIdx = Math.min(startIdx + 10, projectIds.size()); List result = projectIds.subList(startIdx, endIdx); + List resultProjectIds = new ArrayList<>(); + for (String projectToken : result) { + resultProjectIds.add(getProjectId(projectToken)); + } - List projects = projectRepository.findAllById(result); + List projects = projectRepository.findAllById(resultProjectIds); log.info("Response from FastAPI: {}", response); diff --git a/src/main/java/com/seoultech/synergybe/domain/project/infrastructure/ProjectRepository.java b/src/main/java/com/seoultech/synergybe/domain/project/infrastructure/ProjectRepository.java index 4a8eaeb2..4cc5597f 100644 --- a/src/main/java/com/seoultech/synergybe/domain/project/infrastructure/ProjectRepository.java +++ b/src/main/java/com/seoultech/synergybe/domain/project/infrastructure/ProjectRepository.java @@ -20,4 +20,6 @@ public interface ProjectRepository extends JpaRepository, Project @Query(value = "SELECT * FROM project WHERE leader_id = :userId", nativeQuery = true) List findAllByLeaderId(@Param("userId") String userId); + + Project findByProjectToken(String projectToken); } diff --git a/src/main/java/com/seoultech/synergybe/domain/projectlike/service/ProjectLikeService.java b/src/main/java/com/seoultech/synergybe/domain/projectlike/service/ProjectLikeService.java index 43546019..a5f263dc 100644 --- a/src/main/java/com/seoultech/synergybe/domain/projectlike/service/ProjectLikeService.java +++ b/src/main/java/com/seoultech/synergybe/domain/projectlike/service/ProjectLikeService.java @@ -57,8 +57,7 @@ public synchronized ProjectLike update(User user, String projectId, LikeStatus s Long projectLikeId = idGenerator.generateId(); String projectLikeToken = tokenGenerator.generateToken(IdPrefix.PROJECT_LIKE); // Project project = projectService.findProjectById(projectId); - Project project = projectRepository.findById(projectId) - .orElseThrow(); + Project project = projectRepository.findByProjectToken(projectId); ProjectLike projectLike = ProjectLike.builder() .id(projectLikeId) .projectLikeToken(projectLikeToken) diff --git a/src/main/java/com/seoultech/synergybe/domain/projectuser/repository/ProjectUserRepository.java b/src/main/java/com/seoultech/synergybe/domain/projectuser/repository/ProjectUserRepository.java index e51e63f8..822e59b6 100644 --- a/src/main/java/com/seoultech/synergybe/domain/projectuser/repository/ProjectUserRepository.java +++ b/src/main/java/com/seoultech/synergybe/domain/projectuser/repository/ProjectUserRepository.java @@ -11,7 +11,7 @@ @Repository public interface ProjectUserRepository extends JpaRepository { - Optional findByProjectIdAndUserId(String projectId, String userId); + Optional findByProjectUserTokenAndProjectUserToken(String projectId, String userId); @Query(value = "SELECT user_id FROM project_user WHERE project_id = :projectId", nativeQuery = true) List findProjectUserIdsByProjectId(@Param("projectId") String projectId); diff --git a/src/main/java/com/seoultech/synergybe/domain/projectuser/service/ProjectUserService.java b/src/main/java/com/seoultech/synergybe/domain/projectuser/service/ProjectUserService.java index 549b66b9..2cce5031 100644 --- a/src/main/java/com/seoultech/synergybe/domain/projectuser/service/ProjectUserService.java +++ b/src/main/java/com/seoultech/synergybe/domain/projectuser/service/ProjectUserService.java @@ -27,7 +27,7 @@ public class ProjectUserService { private final ProjectRepository projectRepository; public void createProjectUser(Project project, User user) { - Optional projectUserOptional = projectUserRepository.findByProjectIdAndUserId(project.getProjectToken(), user.getUserToken()); + Optional projectUserOptional = projectUserRepository.findByProjectUserTokenAndProjectUserToken(project.getProjectToken(), user.getUserToken()); if (projectUserOptional.isPresent()) { // 이미 생성됨 @@ -51,7 +51,7 @@ public List getProjectUserIds(String projectId) { } public void deleteProjectUser(Project project, User user) { - Optional projectUserOptional = projectUserRepository.findByProjectIdAndUserId(project.getProjectToken(), user.getUserToken()); + Optional projectUserOptional = projectUserRepository.findByProjectUserTokenAndProjectUserToken(project.getProjectToken(), user.getUserToken()); if (projectUserOptional.isPresent()) { projectUserRepository.delete(projectUserOptional.get()); diff --git a/src/main/java/com/seoultech/synergybe/domain/schedule/repository/ScheduleRepository.java b/src/main/java/com/seoultech/synergybe/domain/schedule/repository/ScheduleRepository.java index d5cc2760..9abb1558 100644 --- a/src/main/java/com/seoultech/synergybe/domain/schedule/repository/ScheduleRepository.java +++ b/src/main/java/com/seoultech/synergybe/domain/schedule/repository/ScheduleRepository.java @@ -5,4 +5,5 @@ public interface ScheduleRepository extends JpaRepository { + Schedule findByScheduleToken(String scheduleToken); } diff --git a/src/main/java/com/seoultech/synergybe/domain/schedule/service/ScheduleService.java b/src/main/java/com/seoultech/synergybe/domain/schedule/service/ScheduleService.java index 2f567635..e6ac3df3 100644 --- a/src/main/java/com/seoultech/synergybe/domain/schedule/service/ScheduleService.java +++ b/src/main/java/com/seoultech/synergybe/domain/schedule/service/ScheduleService.java @@ -43,9 +43,8 @@ public void updateSchedule(CreateScheduleRequest request, String scheduleId) { scheduleRepository.save(schedule); } - private Schedule findScheduleById(String scheduleId) { - return scheduleRepository.findById(scheduleId) - .orElseThrow(() -> new ScheduleNotFoundException("존재하지 않는 일정입니다.")); + private Schedule findScheduleById(String scheduleToken) { + return scheduleRepository.findByScheduleToken(scheduleToken); } public void deleteSchedule(String scheduleId) { diff --git a/src/main/java/com/seoultech/synergybe/domain/ticket/repository/TicketRepository.java b/src/main/java/com/seoultech/synergybe/domain/ticket/repository/TicketRepository.java index b1be014e..0375e003 100644 --- a/src/main/java/com/seoultech/synergybe/domain/ticket/repository/TicketRepository.java +++ b/src/main/java/com/seoultech/synergybe/domain/ticket/repository/TicketRepository.java @@ -37,4 +37,6 @@ public interface TicketRepository extends JpaRepository { + "FROM ticket " + "WHERE status = UPPER(:status) AND project_id = :projectId", nativeQuery = true) Integer findLastOrderNumber(@Param("status") String status, @Param("projectId") String projectId); + + Ticket findByTicketToken(String ticketToken); } diff --git a/src/main/java/com/seoultech/synergybe/domain/ticket/service/TicketService.java b/src/main/java/com/seoultech/synergybe/domain/ticket/service/TicketService.java index 958612b8..18ed4fcd 100644 --- a/src/main/java/com/seoultech/synergybe/domain/ticket/service/TicketService.java +++ b/src/main/java/com/seoultech/synergybe/domain/ticket/service/TicketService.java @@ -91,13 +91,12 @@ public ListResponse getTicketList(String projectId) { * 이전 status의 ticket들의 orderNum이 큰 ticket에 대해 -1 * 수정 할 status의 ticket들 중 orderNum이 큰 ticket들에 대해 +1 */ - public ListResponse changeTickets(CreateTicketRequest request, User user, String ticketId) { + public ListResponse changeTickets(CreateTicketRequest request, User user, String ticketToken) { // check User List authUsers = projectService.getUserListByProject(request.projectId()); checkUser(authUsers, user); - Ticket ticket = ticketRepository.findById(ticketId) - .orElseThrow(() -> new TicketNotFoundException("존재하지 않는 티켓입니다.")); + Ticket ticket = ticketRepository.findByTicketToken(ticketToken); boolean isEqualStatus = false; @@ -219,8 +218,7 @@ private TicketStatus checkStatus(String status) { } public GetTicketResponse deleteTicket(String ticketId, User user) { - Ticket ticket = ticketRepository.findById(ticketId) - .orElseThrow(() -> new TicketNotFoundException("존재하지 않는 티켓입니다.")); + Ticket ticket = ticketRepository.findByTicketToken(ticketId); // check User List authUsers = projectService.getUserListByProject(ticket.getProject().getProjectToken()); @@ -233,8 +231,8 @@ public GetTicketResponse deleteTicket(String ticketId, User user) { } public void updateTicket(CreateTicketRequest request, User user, String ticketId) { - Ticket ticket = ticketRepository.findById(ticketId) - .orElseThrow(() -> new TicketNotFoundException("존재하지 않는 티켓입니다.")); + Ticket ticket = ticketRepository.findByTicketToken(ticketId); + // check User List authUsers = projectService.getUserListByProject(ticket.getProject().getProjectToken()); checkUser(authUsers, user); diff --git a/src/main/java/com/seoultech/synergybe/domain/ticketUser/repository/TicketUserRepository.java b/src/main/java/com/seoultech/synergybe/domain/ticketUser/repository/TicketUserRepository.java index 12077cf3..7149e1e7 100644 --- a/src/main/java/com/seoultech/synergybe/domain/ticketUser/repository/TicketUserRepository.java +++ b/src/main/java/com/seoultech/synergybe/domain/ticketUser/repository/TicketUserRepository.java @@ -12,7 +12,7 @@ @Repository public interface TicketUserRepository extends JpaRepository { - Optional findByTicketIdAndUserId(String id, String userId); + Optional findByTicketTicketTokenAndTicketUserToken(String id, String userId); @Query(value = "SELECT user_id FROM ticket_user WHERE ticket_id = :ticketId", nativeQuery = true) List findTicketUserIdsByTicketId(@Param("ticketId") String ticketId); diff --git a/src/main/java/com/seoultech/synergybe/domain/ticketUser/service/TicketUserService.java b/src/main/java/com/seoultech/synergybe/domain/ticketUser/service/TicketUserService.java index 73494a6a..f76d2c48 100644 --- a/src/main/java/com/seoultech/synergybe/domain/ticketUser/service/TicketUserService.java +++ b/src/main/java/com/seoultech/synergybe/domain/ticketUser/service/TicketUserService.java @@ -21,7 +21,7 @@ public class TicketUserService { private final TokenGenerator tokenGenerator; public void createTicketUser(Ticket ticket, User user) { - Optional ticketUserOptional = ticketUserRepository.findByTicketIdAndUserId(ticket.getTicketToken(), user.getUserToken()); + Optional ticketUserOptional = ticketUserRepository.findByTicketTicketTokenAndTicketUserToken(ticket.getTicketToken(), user.getUserToken()); if (ticketUserOptional.isPresent()) { // 이미 생성됨 diff --git a/src/main/java/com/seoultech/synergybe/domain/user/IdTest.java b/src/main/java/com/seoultech/synergybe/domain/user/IdTest.java new file mode 100644 index 00000000..01d4eedf --- /dev/null +++ b/src/main/java/com/seoultech/synergybe/domain/user/IdTest.java @@ -0,0 +1,23 @@ +package com.seoultech.synergybe.domain.user; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@NoArgsConstructor +public class IdTest { + @Id + private Long id; + + private String text; + + @Builder + public IdTest(Long id, String text) { + this.id = id; + this.text = text; + } +} diff --git a/src/main/java/com/seoultech/synergybe/domain/user/IdTestRepository.java b/src/main/java/com/seoultech/synergybe/domain/user/IdTestRepository.java new file mode 100644 index 00000000..8341d5f2 --- /dev/null +++ b/src/main/java/com/seoultech/synergybe/domain/user/IdTestRepository.java @@ -0,0 +1,8 @@ +package com.seoultech.synergybe.domain.user; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface IdTestRepository extends JpaRepository { +} diff --git a/src/main/java/com/seoultech/synergybe/domain/user/UUIDTest.java b/src/main/java/com/seoultech/synergybe/domain/user/UUIDTest.java new file mode 100644 index 00000000..88cc7ce5 --- /dev/null +++ b/src/main/java/com/seoultech/synergybe/domain/user/UUIDTest.java @@ -0,0 +1,23 @@ +package com.seoultech.synergybe.domain.user; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +@Entity +@Getter +@NoArgsConstructor +public class UUIDTest { + @Id + private String id; + + private String text; + + @Builder + public UUIDTest(String id, String text) { + this.id = id; + this.text = text; + } +} diff --git a/src/main/java/com/seoultech/synergybe/domain/user/UUIDTestRepository.java b/src/main/java/com/seoultech/synergybe/domain/user/UUIDTestRepository.java new file mode 100644 index 00000000..35f18828 --- /dev/null +++ b/src/main/java/com/seoultech/synergybe/domain/user/UUIDTestRepository.java @@ -0,0 +1,8 @@ +package com.seoultech.synergybe.domain.user; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface UUIDTestRepository extends JpaRepository { +} diff --git a/src/test/java/com/seoultech/synergybe/domain/common/generator/TokenGeneratorUUIDTest.java b/src/test/java/com/seoultech/synergybe/domain/common/generator/TokenGeneratorUUIDTest.java index f6f5fe6c..4f2f8a8a 100644 --- a/src/test/java/com/seoultech/synergybe/domain/common/generator/TokenGeneratorUUIDTest.java +++ b/src/test/java/com/seoultech/synergybe/domain/common/generator/TokenGeneratorUUIDTest.java @@ -1,9 +1,13 @@ package com.seoultech.synergybe.domain.common.generator; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import java.util.ArrayList; +import java.util.List; + import static org.assertj.core.api.Assertions.assertThat; @SpringBootTest @@ -11,19 +15,48 @@ public class TokenGeneratorUUIDTest { @Autowired IdGenerator idGenerator; + @Autowired + TokenGenerator tokenGenerator; + @Test - void generateUUID() { -// List list = new ArrayList<>(); + void generateLongId() { + List longList = new ArrayList<>(); + + // test start + long startTime = System.currentTimeMillis(); + + for (int i = 0; i < 10000; i++) { + Long longId = idGenerator.generateId(); + System.out.println("longId : " + i + " 번째 : "+ longId); + longList.add(longId); - for (int i = 0; i < 100; i++) { - Long postId = idGenerator.generateId(); - System.out.println("postId : " + i + " 번째 : "+ postId); -// list.add(postId); } + // test end + long endTime = System.currentTimeMillis(); + System.out.println("longId Total execution time: " + (endTime - startTime) + " milliseconds"); + + assertThat(longList.size()).isEqualTo(10000); + } + + @Test + void generateStringId() { + List stringList = new ArrayList<>(); + + // test start + long startTime = System.currentTimeMillis(); + + for (int i = 0; i < 10000; i++) { + String stringId = tokenGenerator.generateToken(IdPrefix.POST); + System.out.println("stringId : " + i + " 번째 : "+ stringId); + stringList.add(stringId); + } + // test end + long endTime = System.currentTimeMillis(); + System.out.println("stringId Total execution time: " + (endTime - startTime) + " milliseconds"); -// assertThat() + assertThat(stringList.size()).isEqualTo(10000); } diff --git a/src/test/java/com/seoultech/synergybe/domain/idtest/IdGenerateTest.java b/src/test/java/com/seoultech/synergybe/domain/idtest/IdGenerateTest.java new file mode 100644 index 00000000..742ee10f --- /dev/null +++ b/src/test/java/com/seoultech/synergybe/domain/idtest/IdGenerateTest.java @@ -0,0 +1,88 @@ +package com.seoultech.synergybe.domain.idtest; + +import com.seoultech.synergybe.domain.common.generator.IdGenerator; +import com.seoultech.synergybe.domain.common.generator.IdPrefix; +import com.seoultech.synergybe.domain.common.generator.TokenGenerator; +import com.seoultech.synergybe.domain.user.IdTest; +import com.seoultech.synergybe.domain.user.IdTestRepository; +import com.seoultech.synergybe.domain.user.UUIDTest; +import com.seoultech.synergybe.domain.user.UUIDTestRepository; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import java.util.ArrayList; +import java.util.List; + +@SpringBootTest +public class IdGenerateTest { + @Autowired + IdGenerator idGenerator; + + @Autowired + TokenGenerator tokenGenerator; + + @Autowired + IdTestRepository idTestRepository; + + @Autowired + UUIDTestRepository uuidTestRepository; + + @Test + void generateLongId() { + // test start + long startTime = System.currentTimeMillis(); + + + + for (int j = 0; j < 100; j++) { + List idTestList = new ArrayList<>(); + + for (int i = 0; i < 10000; i++) { + Long id = idGenerator.generateId(); + IdTest idTest = IdTest.builder() + .id(id) + .text("text") + .build(); + + idTestList.add(idTest); + } + System.out.println("longId : " + j + " 번째 : "); + idTestRepository.saveAll(idTestList); + } + + // test end + long endTime = System.currentTimeMillis(); + System.out.println("longId Total execution time: " + (endTime - startTime) + " milliseconds"); + + } + + @Test + void generateStringId() { + // test start + long startTime = System.currentTimeMillis(); + + + + for (int j = 0; j < 100; j++) { + List uuidTestList = new ArrayList<>(); + + for (int i = 0; i < 10000; i++) { + String id = tokenGenerator.generateToken(IdPrefix.POST_LIKE); + UUIDTest idTest = UUIDTest.builder() + .id(id) + .text("text") + .build(); + + uuidTestList.add(idTest); + } + System.out.println("StringId : " + j + " 번째 : "); + uuidTestRepository.saveAll(uuidTestList); + } + + // test end + long endTime = System.currentTimeMillis(); + System.out.println("StringId Total execution time: " + (endTime - startTime) + " milliseconds"); + + } +} diff --git a/src/test/java/com/seoultech/synergybe/domain/post/PostGeneratorTest.java b/src/test/java/com/seoultech/synergybe/domain/post/PostGeneratorTest.java index db2a5b44..b321dfb3 100644 --- a/src/test/java/com/seoultech/synergybe/domain/post/PostGeneratorTest.java +++ b/src/test/java/com/seoultech/synergybe/domain/post/PostGeneratorTest.java @@ -43,6 +43,7 @@ void generatePost() { User user = User.builder() .id(userId) + .userToken(userToken) .password("3e4r5t6y6y7u") .passwordEncoder(passwordEncoder) .email("email@email.com")