diff --git a/.github/workflows/develop_build_deploy.yml b/.github/workflows/develop_build_deploy.yml index b8f026a5..53ad8822 100644 --- a/.github/workflows/develop_build_deploy.yml +++ b/.github/workflows/develop_build_deploy.yml @@ -4,6 +4,9 @@ on: push: branches: - develop + pull_request: + branches: + - develop env: DOCKERHUB_USERNAME: ht3064 diff --git a/src/main/java/com/amcamp/domain/team/api/TeamController.java b/src/main/java/com/amcamp/domain/team/api/TeamController.java index 6f0a1e61..0c6d71d6 100644 --- a/src/main/java/com/amcamp/domain/team/api/TeamController.java +++ b/src/main/java/com/amcamp/domain/team/api/TeamController.java @@ -12,6 +12,7 @@ import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; +import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Slice; import org.springframework.http.ResponseEntity; @@ -78,6 +79,7 @@ public TeamAdminResponse teamFindAdmin(@PathVariable Long teamId) { return teamService.findTeamAdmin(teamId); } + @Deprecated @Operation(summary = "팀 목록 조회", description = "회원이 참여한 팀 목록을 조회합니다.") @GetMapping("/list") public Slice teamFindAll( @@ -88,4 +90,10 @@ public Slice teamFindAll( int pageSize) { return teamService.findAllTeam(lastTeamId, pageSize); } + + @Operation(summary = "팀 목록 조회", description = "회원이 참여한 팀 목록을 조회합니다.") + @GetMapping("/list/all") + public List teamFindAll() { + return teamService.findAllTeamV2(); + } } diff --git a/src/main/java/com/amcamp/domain/team/application/TeamService.java b/src/main/java/com/amcamp/domain/team/application/TeamService.java index c9bdf2dc..fdd45d0c 100644 --- a/src/main/java/com/amcamp/domain/team/application/TeamService.java +++ b/src/main/java/com/amcamp/domain/team/application/TeamService.java @@ -20,6 +20,7 @@ import com.amcamp.global.util.MemberUtil; import com.amcamp.global.util.RandomUtil; import com.amcamp.global.util.RedisUtil; +import java.util.List; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Slice; @@ -179,6 +180,12 @@ public Slice findAllTeam(Long lastTeamId, int pageSize) { return teamRepository.findAllTeamByMemberId(currentMember.getId(), lastTeamId, pageSize); } + @Transactional(readOnly = true) + public List findAllTeamV2() { + Member currentMember = memberUtil.getCurrentMember(); + return teamRepository.findAllTeamByMemberIdV2(currentMember.getId()); + } + @Transactional(readOnly = true) public TeamAdminResponse findTeamAdmin(Long teamId) { Member member = memberUtil.getCurrentMember(); diff --git a/src/main/java/com/amcamp/domain/team/dao/TeamRepositoryCustom.java b/src/main/java/com/amcamp/domain/team/dao/TeamRepositoryCustom.java index ae43fc26..aadf9362 100644 --- a/src/main/java/com/amcamp/domain/team/dao/TeamRepositoryCustom.java +++ b/src/main/java/com/amcamp/domain/team/dao/TeamRepositoryCustom.java @@ -1,8 +1,11 @@ package com.amcamp.domain.team.dao; import com.amcamp.domain.team.dto.response.TeamInfoResponse; +import java.util.List; import org.springframework.data.domain.Slice; public interface TeamRepositoryCustom { Slice findAllTeamByMemberId(Long memberId, Long lastTeamId, int pageSize); + + List findAllTeamByMemberIdV2(Long memberId); } diff --git a/src/main/java/com/amcamp/domain/team/dao/TeamRepositoryImpl.java b/src/main/java/com/amcamp/domain/team/dao/TeamRepositoryImpl.java index 2aff504f..8980d856 100644 --- a/src/main/java/com/amcamp/domain/team/dao/TeamRepositoryImpl.java +++ b/src/main/java/com/amcamp/domain/team/dao/TeamRepositoryImpl.java @@ -49,6 +49,24 @@ public Slice findAllTeamByMemberId( return checkLastPage(pageSize, results); } + @Override + public List findAllTeamByMemberIdV2(Long memberId) { + return jpaQueryFactory + .select( + Projections.constructor( + TeamInfoResponse.class, + team.id, + team.name, + team.description, + team.emoji)) + .from(teamParticipant) + .leftJoin(teamParticipant.team, team) + .on(team.id.eq(teamParticipant.team.id)) + .where(teamParticipant.member.id.eq(memberId)) + .orderBy(teamParticipant.createdDt.desc()) + .fetch(); + } + private BooleanExpression lastTeamId(Long teamId) { if (teamId == null) { return null;