Skip to content

Commit

Permalink
refactor: add field to response
Browse files Browse the repository at this point in the history
  • Loading branch information
aiaiaiai1 committed Nov 7, 2024
1 parent 441b114 commit 306d6ca
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 52 deletions.
18 changes: 3 additions & 15 deletions src/main/java/gymmi/workspace/controller/WorkspaceController.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,8 @@
import gymmi.workspace.request.EditingIntroductionOfWorkspaceRequest;
import gymmi.workspace.request.JoiningWorkspaceRequest;
import gymmi.workspace.request.MatchingWorkspacePasswordRequest;
import gymmi.workspace.request.WorkingMissionInWorkspaceRequest;
import gymmi.workspace.request.WorkoutRequest;
import gymmi.workspace.response.CheckingCreationOfWorkspaceResponse;
import gymmi.workspace.response.CheckingEntranceOfWorkspaceResponse;
import gymmi.workspace.response.InsideWorkspaceResponse;
import gymmi.workspace.response.JoinedWorkspaceResponse;
import gymmi.workspace.response.MatchingWorkspacePasswordResponse;
import gymmi.workspace.response.MissionResponse;
import gymmi.workspace.response.OpeningTasksBoxResponse;
import gymmi.workspace.response.WorkingScoreResponse;
import gymmi.workspace.response.WorkoutContextResponse;
import gymmi.workspace.response.WorkoutRecordResponse;
import gymmi.workspace.response.WorkspaceIntroductionResponse;
import gymmi.workspace.response.WorkspaceResponse;
import gymmi.workspace.response.*;
import gymmi.workspace.service.WorkspaceCommandService;
import gymmi.workspace.service.WorkspaceQueryService;
import java.util.List;
Expand Down Expand Up @@ -220,11 +208,11 @@ public ResponseEntity<Void> toggleRegistrationOfFavoriteMission(
}

@GetMapping("/workspace/{workspaceId}/missions/favorite")
public ResponseEntity<List<MissionResponse>> seeFavoriteMissions(
public ResponseEntity<List<FavoriteMissionResponse>> seeFavoriteMissions(
@Logined User user,
@PathVariable Long workspaceId
) {
List<MissionResponse> responses = workspaceQueryService.getFavoriteMissions(user, workspaceId);
List<FavoriteMissionResponse> responses = workspaceQueryService.getFavoriteMissions(user, workspaceId);
return ResponseEntity.ok().body(responses);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
package gymmi.workspace.domain.entity;

import gymmi.entity.TimeEntity;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.*;
import lombok.AccessLevel;
import lombok.EqualsAndHashCode;
import lombok.Getter;
Expand Down Expand Up @@ -35,4 +29,5 @@ public FavoriteMission(Worker worker, Mission mission) {
this.worker = worker;
this.mission = mission;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package gymmi.workspace.response;

import gymmi.workspace.domain.entity.Mission;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@NoArgsConstructor(access = AccessLevel.PROTECTED) // for test
public class FavoriteMissionResponse {

private Long id;
private String mission;
private Integer score;

public FavoriteMissionResponse(Mission mission) {
this.id = mission.getId();
this.mission = mission.getName();
this.score = mission.getScore();
}

}
4 changes: 3 additions & 1 deletion src/main/java/gymmi/workspace/response/MissionResponse.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,13 @@ public class MissionResponse {
private Long id;
private String mission;
private Integer score;
private Boolean isFavorite;

public MissionResponse(Mission mission) {
public MissionResponse(Mission mission, boolean isFavorite) {
this.id = mission.getId();
this.mission = mission.getName();
this.score = mission.getScore();
this.isFavorite = isFavorite;
}

}
48 changes: 19 additions & 29 deletions src/main/java/gymmi/workspace/service/WorkspaceQueryService.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,39 +3,22 @@
import gymmi.entity.User;
import gymmi.exceptionhandler.exception.NotHavePermissionException;
import gymmi.exceptionhandler.message.ErrorCode;
import gymmi.workspace.domain.entity.FavoriteMission;
import gymmi.workspace.domain.entity.Mission;
import gymmi.workspace.domain.entity.WorkoutHistory;
import gymmi.workspace.domain.entity.Worker;
import gymmi.workspace.domain.WorkoutMetric;
import gymmi.workspace.domain.entity.WorkoutRecord;
import gymmi.workspace.domain.entity.Workspace;
import gymmi.workspace.domain.WorkspaceGateChecker;
import gymmi.workspace.domain.WorkspaceStatus;
import gymmi.workspace.repository.FavoriteMissionRepository;
import gymmi.workspace.repository.MissionRepository;
import gymmi.workspace.repository.WorkoutHistoryRepository;
import gymmi.workspace.repository.WorkerRepository;
import gymmi.workspace.repository.WorkoutRecordRepository;
import gymmi.workspace.repository.WorkspaceRepository;
import gymmi.workspace.response.CheckingCreationOfWorkspaceResponse;
import gymmi.workspace.response.CheckingEntranceOfWorkspaceResponse;
import gymmi.workspace.response.InsideWorkspaceResponse;
import gymmi.workspace.response.JoinedWorkspaceResponse;
import gymmi.workspace.response.MatchingWorkspacePasswordResponse;
import gymmi.workspace.response.MissionResponse;
import gymmi.workspace.response.WorkoutContextResponse;
import gymmi.workspace.response.WorkoutRecordResponse;
import gymmi.workspace.response.WorkspaceIntroductionResponse;
import gymmi.workspace.response.WorkspaceResponse;
import java.util.List;
import java.util.Map;
import gymmi.workspace.domain.entity.*;
import gymmi.workspace.repository.*;
import gymmi.workspace.response.*;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
Expand Down Expand Up @@ -90,11 +73,18 @@ public MatchingWorkspacePasswordResponse matchesWorkspacePassword(Long workspace
}

public List<MissionResponse> getMissionsInWorkspace(User loginedUser, Long workspaceId) {
validateIfWorkerIsInWorkspace(loginedUser.getId(), workspaceId);
Worker worker = validateIfWorkerIsInWorkspace(loginedUser.getId(), workspaceId);
List<Mission> missions = missionRepository.getAllByWorkspaceId(workspaceId);
return missions.stream()
.map(MissionResponse::new)
List<Mission> favoriteMissions = favoriteMissionRepository.getAllByWorkerId(worker.getId()).stream()
.map(favoriteMission -> favoriteMission.getMission())
.toList();

List<MissionResponse> responses = new ArrayList<>();
for (Mission mission : missions) {
boolean isFavorite = favoriteMissions.contains(mission);
responses.add(new MissionResponse(mission, isFavorite));
}
return responses;
}

public WorkoutContextResponse getWorkoutContext(
Expand Down Expand Up @@ -159,14 +149,14 @@ public InsideWorkspaceResponse enterWorkspace(User logiendUser, Long workspaceId
return new InsideWorkspaceResponse(workspace, workers, achievementScore, logiendUser);
}

public List<MissionResponse> getFavoriteMissions(User user, Long workspaceId) {
public List<FavoriteMissionResponse> getFavoriteMissions(User user, Long workspaceId) {
Workspace workspace = workspaceRepository.getWorkspaceById(workspaceId);
Worker worker = validateIfWorkerIsInWorkspace(user.getId(), workspace.getId());
List<FavoriteMission> favoriteMissions = favoriteMissionRepository.getAllByWorkerId(worker.getId());

return favoriteMissions.stream()
.map(FavoriteMission::getMission)
.map(MissionResponse::new)
.map(FavoriteMissionResponse::new)
.toList();
}

Expand Down

0 comments on commit 306d6ca

Please sign in to comment.