Skip to content

Commit

Permalink
Merge pull request #178 from ITZipProject/feature/resume
Browse files Browse the repository at this point in the history
🛠️ 리팩토링 : CQRS 패턴 Read 레포지토리 분리 작업 및 테스트 코드 추가
  • Loading branch information
hanseu9839 authored Nov 26, 2024
2 parents b290059 + 4a72d2b commit 1a7a487
Show file tree
Hide file tree
Showing 102 changed files with 806 additions and 526 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import darkoverload.itzip.feature.resume.controller.response.CreateResumeResponse;
import darkoverload.itzip.feature.resume.controller.response.SearchResumeResponse;
import darkoverload.itzip.feature.resume.controller.response.UpdateResumeResponse;
import darkoverload.itzip.feature.resume.domain.resume.Resume;
import darkoverload.itzip.feature.resume.service.resume.ResumeReadService;
import darkoverload.itzip.feature.resume.service.resume.ResumeService;
import darkoverload.itzip.global.config.response.code.CommonExceptionCode;
Expand All @@ -30,7 +29,6 @@
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.stream.Collectors;


@Slf4j
Expand Down Expand Up @@ -58,6 +56,8 @@ public CreateResumeResponse createResume(@Valid @RequestBody CreateResumeRequest
summary = "이력서 수정",
description = "이력서 수정 시 객체 리스트에 존재하는 값 체크"
)
@ResponseCodeAnnotation(CommonResponseCode.SUCCESS)
@ExceptionCodeAnnotations(CommonExceptionCode.BAD_REQUEST)
@PatchMapping("")
public UpdateResumeResponse updateResume(@SwaggerRequestBody(description = "이력서 수정 정보", content = @Content(
schema = @Schema(implementation = UpdateResumeRequest.class)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package darkoverload.itzip.feature.resume.controller.response;

public record GetResumeDetailsResponse() {

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
@Setter
@Getter
@ToString
@EqualsAndHashCode
public class MySkill {
// 이력서
private Resume resume;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name="achievements")
@EqualsAndHashCode(callSuper = false)
public class AchievementEntity extends AuditingFields {

@Id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,9 @@
@Getter
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name="activites")
@Table(name="activities")
@EqualsAndHashCode(callSuper = false)
@ToString
public class ActivityEntity extends AuditingFields {

@Id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name="careers")
@EqualsAndHashCode(callSuper = false)
public class CareerEntity extends AuditingFields {

@Id
Expand Down Expand Up @@ -50,4 +51,5 @@ public Career convertToDomain(){
.endDate(this.endDate)
.build();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name="educations")
@EqualsAndHashCode(callSuper = false)
@ToString
public class EducationEntity extends AuditingFields {

@Id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name="languages")
@EqualsAndHashCode(callSuper = false)
public class LanguageEntity extends AuditingFields {

@Id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name="MySkills")
@EqualsAndHashCode(callSuper = false)
public class MySkillEntity extends AuditingFields {

@Id
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
@AllArgsConstructor
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@Table(name="qualifications")
@EqualsAndHashCode(callSuper = false)
public class QualificationEntity extends AuditingFields {

@Id
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package darkoverload.itzip.feature.resume.repository.achievement;

import darkoverload.itzip.feature.resume.entity.AchievementEntity;
import darkoverload.itzip.feature.resume.repository.achievement.custom.CustomAchievementRepository;
import org.springframework.data.jpa.repository.JpaRepository;

public interface AchievementJpaRepository extends JpaRepository<AchievementEntity, Long> , CustomAchievementRepository {

public interface AchievementJpaRepository extends JpaRepository<AchievementEntity, Long> {

}
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package darkoverload.itzip.feature.resume.repository.achievement.custom;
package darkoverload.itzip.feature.resume.repository.achievement;

import darkoverload.itzip.feature.resume.entity.AchievementEntity;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface CustomAchievementRepository {
public interface AchievementReadJpaRepository extends JpaRepository<AchievementEntity, Long> {
List<AchievementEntity> findAllByResumeId(Long resumeId);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package darkoverload.itzip.feature.resume.repository.achievement;

import darkoverload.itzip.feature.resume.domain.achievement.Achievement;
import darkoverload.itzip.feature.resume.entity.AchievementEntity;
import darkoverload.itzip.feature.resume.service.resume.port.achievement.AchievementReadRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
@RequiredArgsConstructor
public class AchievementReadRepositoryImpl implements AchievementReadRepository {

private final AchievementReadJpaRepository repository;

@Override
public List<Achievement> findAllByResumeId(Long resumeId) {
return repository.findAllByResumeId(resumeId).stream().map(AchievementEntity::convertToDomain).toList();
}

}
Original file line number Diff line number Diff line change
@@ -1,26 +1,19 @@
package darkoverload.itzip.feature.resume.repository.achievement;

import darkoverload.itzip.feature.resume.domain.achievement.Achievement;
import darkoverload.itzip.feature.resume.domain.resume.Resume;
import darkoverload.itzip.feature.resume.entity.AchievementEntity;
import darkoverload.itzip.feature.resume.service.resume.port.AchievementRepository;
import darkoverload.itzip.feature.resume.service.resume.port.achievement.AchievementRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Objects;

@Repository
@RequiredArgsConstructor
public class AchievementRepositoryImpl implements AchievementRepository {

private final AchievementJpaRepository repository;

@Override
public List<Achievement> findAllByResumeId(Long resumeId) {
return repository.findAllByResumeId(resumeId).stream().map(AchievementEntity::convertToDomain).toList();
}

@Override
public Achievement save(Achievement achievement) {
return repository.save(achievement.toEntity()).convertToDomain();
Expand All @@ -47,22 +40,4 @@ public void deleteAllAchievements(List<Achievement> deleteAchievements) {
repository.deleteAll(deleteAchievements.stream().map(Achievement::toEntity).toList());
}

private List<Long> getDeleteAchievementIds(List<Achievement> achievements, Resume resume) {
List<Long> achievementIds = getAchievementIds(resume.getResumeId());

List<Long> updateIds = getUpdateAchievementIds(achievements);

return achievementIds.stream()
.filter(id -> !updateIds.contains(id)).toList();
}

private List<Long> getUpdateAchievementIds(List<Achievement> achievements) {
return achievements.stream().filter(Objects::nonNull).map(Achievement::getAchievementId).toList();
}

private List<Long> getAchievementIds(Long resumeId) {
return findAllByResumeId(resumeId).stream().map(Achievement::getAchievementId).toList();
}


}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package darkoverload.itzip.feature.resume.repository.activity;

import darkoverload.itzip.feature.resume.entity.ActivityEntity;
import darkoverload.itzip.feature.resume.repository.activity.Custom.CustomActivityRepository;
import org.springframework.data.jpa.repository.JpaRepository;

public interface ActivityJpaRepository extends JpaRepository<ActivityEntity, Long> , CustomActivityRepository {
public interface ActivityJpaRepository extends JpaRepository<ActivityEntity, Long> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package darkoverload.itzip.feature.resume.repository.activity;

import darkoverload.itzip.feature.resume.entity.ActivityEntity;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface ActivityReadJpaRepository extends JpaRepository <ActivityEntity, Long> {
List<ActivityEntity> findAllByResumeId(Long id);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package darkoverload.itzip.feature.resume.repository.activity;

import darkoverload.itzip.feature.resume.domain.activity.Activity;
import darkoverload.itzip.feature.resume.entity.ActivityEntity;
import darkoverload.itzip.feature.resume.service.resume.port.activity.ActivityReadRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Repository;

import java.util.List;

@Slf4j
@Repository
@RequiredArgsConstructor
public class ActivityReadRepositoryImpl implements ActivityReadRepository {

private final ActivityReadJpaRepository repository;

@Override
public List<Activity> findAllByResumeId(Long resumeId) {
return repository.findAllByResumeId(resumeId).stream().map(ActivityEntity::convertToDomain).toList();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import darkoverload.itzip.feature.resume.domain.activity.Activity;
import darkoverload.itzip.feature.resume.domain.resume.Resume;
import darkoverload.itzip.feature.resume.entity.ActivityEntity;
import darkoverload.itzip.feature.resume.service.resume.port.ActivityRepository;
import darkoverload.itzip.feature.resume.service.resume.port.activity.ActivityRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;

Expand All @@ -17,11 +17,6 @@ public class ActivityRepositoryImpl implements ActivityRepository {

private final ActivityJpaRepository repository;

@Override
public List<Activity> findAllByResumeId(Long resumeId) {
return repository.findAllByResumeId(resumeId).stream().map(ActivityEntity::convertToDomain).toList();
}

@Override
public Activity save(Activity activity) {

Expand All @@ -33,11 +28,6 @@ public List<Activity> update(List<Activity> activities) {
return saveAll(activities);
}

@Override
public void deleteAllByIds(List<Long> ids) {
repository.deleteAllById(ids);
}

@Override
public List<Activity> saveAll(List<Activity> activities) {
List<ActivityEntity> activityEntities = activities.stream().map(Activity::toEntity).toList();
Expand All @@ -49,20 +39,4 @@ public void deleteAllActivities(List<Activity> deleteActivities) {
repository.deleteAll(deleteActivities.stream().map(Activity::toEntity).toList());
}

private List<Long> getDeleteActivityIds(List<Activity> activities, Resume resume) {
List<Long> activityIds = getActivityIds(resume.getResumeId());
List<Long> updateIds = getUpdateActivityIds(activities);

return activityIds.stream()
.filter(id -> !updateIds.contains(id)).toList();
}

private List<Long> getUpdateActivityIds(List<Activity> activities) {
return activities.stream().filter(Objects::nonNull).map(Activity::getActivityId).toList();
}

private List<Long> getActivityIds(Long resumeId) {
return findAllByResumeId(resumeId).stream().map(Activity::getActivityId).toList();
}

}

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
package darkoverload.itzip.feature.resume.repository.career;

import darkoverload.itzip.feature.resume.entity.CareerEntity;
import darkoverload.itzip.feature.resume.repository.career.Custom.CustomCareerRepository;
import org.springframework.data.jpa.repository.JpaRepository;

public interface CareerJpaRepository extends JpaRepository<CareerEntity, Long> , CustomCareerRepository {
public interface CareerJpaRepository extends JpaRepository<CareerEntity, Long> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package darkoverload.itzip.feature.resume.repository.career;

import darkoverload.itzip.feature.resume.entity.CareerEntity;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface CareerReadJpaRepository extends JpaRepository<CareerEntity, Long> {
List<CareerEntity> findAllByResumeId(Long id);

}
Loading

0 comments on commit 1a7a487

Please sign in to comment.