Skip to content

Commit

Permalink
fix: SurveyBookmark 변경감지가 동작하지 않는 버그를 수정한다
Browse files Browse the repository at this point in the history
  • Loading branch information
devxb committed Feb 25, 2024
1 parent 61d1dfa commit 11e9d97
Show file tree
Hide file tree
Showing 9 changed files with 69 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,14 @@
import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.JoinColumn;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@Embeddable
@NoArgsConstructor
@AllArgsConstructor
public class SurveyBookmarkEntity {

@Column(name = "bookmarked_survey_id")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package me.nalab.core.data.target;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CollectionTable;
import javax.persistence.Column;
Expand All @@ -11,6 +12,7 @@

import javax.persistence.Version;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
Expand Down Expand Up @@ -47,7 +49,8 @@ public class TargetEntity extends TimeBaseEntity {
name = "bookmarked_survey",
joinColumns = @JoinColumn(name = "target_id")
)
private Set<SurveyBookmarkEntity> bookmarkedSurveys;
@Builder.Default
private Set<SurveyBookmarkEntity> bookmarkedSurveys = new HashSet<>();

@Version
@Column(name = "version")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import me.nalab.survey.application.common.survey.dto.SurveyBookmarkDto;

public interface SurveyBookmarkReplaceUseCase {
public interface SurveyBookmarkUseCase {

/**
* targetId에 해당하는 유저에게 survey를 북마크합니다.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package me.nalab.survey.application.port.out.persistence.bookmark;

import me.nalab.survey.domain.target.Target;

public interface SurveyBookmarkPort {

void bookmark(Target target);
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,20 @@
import lombok.RequiredArgsConstructor;
import me.nalab.survey.application.common.survey.dto.SurveyBookmarkDto;
import me.nalab.survey.application.exception.SurveyDoesNotExistException;
import me.nalab.survey.application.port.in.web.bookmark.SurveyBookmarkReplaceUseCase;
import me.nalab.survey.application.port.in.web.bookmark.SurveyBookmarkUseCase;
import me.nalab.survey.application.port.out.persistence.bookmark.SurveyBookmarkPort;
import me.nalab.survey.application.port.out.persistence.findfeedback.SurveyExistCheckPort;
import me.nalab.survey.application.port.out.persistence.findtarget.TargetFindPort;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@RequiredArgsConstructor
public class SurveyBookmarkReplaceService implements SurveyBookmarkReplaceUseCase {
public class SurveyBookmarkService implements SurveyBookmarkUseCase {

private final TargetFindPort targetFindPort;
private final SurveyExistCheckPort surveyExistCheckPort;
private final SurveyBookmarkPort surveyBookmarkPort;

@Override
@Transactional
Expand All @@ -26,6 +28,7 @@ public SurveyBookmarkDto bookmark(Long targetId, Long surveyId) {
}

target.bookmark(surveyId);
surveyBookmarkPort.bookmark(target);

return SurveyBookmarkDto.from(surveyId, target);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ public class Target implements IdGeneratable {
private final String nickname;
private final String job;
private final String imageUrl;
@Builder.Default
private final Set<SurveyBookmark> bookmarkedSurveys = NONE_BOOKMARKED_SURVEYS;
private String position;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package me.nalab.survey.jpa.adaptor.bookmark;

import lombok.RequiredArgsConstructor;
import me.nalab.survey.application.exception.TargetDoesNotExistException;
import me.nalab.survey.application.port.out.persistence.bookmark.SurveyBookmarkPort;
import me.nalab.survey.domain.target.Target;
import me.nalab.survey.jpa.adaptor.common.mapper.TargetEntityMapper;
import me.nalab.survey.jpa.adaptor.find.repository.TargetFindRepository;
import org.springframework.stereotype.Repository;

@Repository
@RequiredArgsConstructor
public class SurveyBookmarkAdaptor implements SurveyBookmarkPort {

private final TargetFindRepository targetFindRepository;

@Override
public void bookmark(Target target) {
var savedTarget = targetFindRepository.findById(target.getId())
.orElseThrow(() -> new TargetDoesNotExistException(target.getId()));

savedTarget.setBookmarkedSurveys(TargetEntityMapper.toSurveyBookmarkEntity(target.getBookmarkedSurveys()));
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package me.nalab.survey.jpa.adaptor.common.mapper;

import java.util.Set;
import java.util.stream.Collectors;
import me.nalab.core.data.target.SurveyBookmarkEntity;
import me.nalab.core.data.target.TargetEntity;
import me.nalab.survey.domain.target.SurveyBookmark;
import me.nalab.survey.domain.target.Target;

public class TargetEntityMapper {
Expand All @@ -16,15 +20,29 @@ public static TargetEntity toTargetEntity(Target target) {
.position(target.getPosition())
.imageUrl(target.getImageUrl())
.job(target.getJob())
.bookmarkedSurveys(toSurveyBookmarkEntity(target.getBookmarkedSurveys()))
.build();
}

public static Set<SurveyBookmarkEntity> toSurveyBookmarkEntity(Set<SurveyBookmark> surveyBookmarks) {
return surveyBookmarks.stream()
.map(surveyBookmark -> new SurveyBookmarkEntity(surveyBookmark.surveyId()))
.collect(Collectors.toSet());
}

public static Target toTarget(TargetEntity targetEntity) {
return Target.builder()
.id(targetEntity.getId())
.nickname(targetEntity.getNickname())
.position(targetEntity.getPosition())
.job(targetEntity.getJob())
.bookmarkedSurveys(toSurveyBookmark(targetEntity.getBookmarkedSurveys()))
.build();
}

public static Set<SurveyBookmark> toSurveyBookmark(Set<SurveyBookmarkEntity> surveyBookmarkEntities) {
return surveyBookmarkEntities.stream()
.map(surveyBookmarkEntity -> new SurveyBookmark(surveyBookmarkEntity.getSurveyId()))
.collect(Collectors.toSet());
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package me.nalab.survey.web.adaptor.bookmark;

import lombok.RequiredArgsConstructor;
import me.nalab.survey.application.port.in.web.bookmark.SurveyBookmarkReplaceUseCase;
import me.nalab.survey.application.port.in.web.bookmark.SurveyBookmarkUseCase;
import me.nalab.survey.web.adaptor.bookmark.response.SurveyBookmarkResponse;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.PathVariable;
Expand All @@ -16,7 +16,7 @@
@RequiredArgsConstructor
public class SurveyBookmarkReplaceController {

private final SurveyBookmarkReplaceUseCase surveyBookmarkReplaceUseCase;
private final SurveyBookmarkUseCase surveyBookmarkReplaceUseCase;

@ResponseStatus(HttpStatus.OK)
@PostMapping("/surveys/{survey_id}/bookmarks")
Expand Down

0 comments on commit 11e9d97

Please sign in to comment.