Skip to content

Commit

Permalink
Merge pull request #40 from Indipage/feature/#39
Browse files Browse the repository at this point in the history
[FEAT] 공간 북마크 여부 조회 API를 구현한다.
  • Loading branch information
Jin409 authored Jul 13, 2023
2 parents 042ab87 + ead1bcc commit 10b351f
Show file tree
Hide file tree
Showing 6 changed files with 64 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,11 @@ public ApiResponse createArticleBookmark(@PathVariable Long articleId) {
userService.createArticleBookmark(1L, articleId);
return ApiResponse.success(Success.CREATE_ARTICLE_BOOKMARK_SUCCESS);
}

@GetMapping("/bookmark/space/{spaceId}")
@ResponseStatus(HttpStatus.OK)
public ApiResponse<IsBookmarkedResponseDto> readIsSpaceBookmarked(@PathVariable Long spaceId) {
return ApiResponse.success(Success.READ_IS_SPACE_BOOKMARKED_SUCCESS,
userService.readIsSpaceBookmarked(1L, spaceId));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,10 @@
import indipage.org.indipage.domain.Relation.ArticleBookmarkRelationId;
import indipage.org.indipage.domain.Relation.InviteSpaceRelation;
import indipage.org.indipage.domain.Relation.InviteSpaceRelationId;
import indipage.org.indipage.domain.Relation.SpaceBookmarkRelation;
import indipage.org.indipage.domain.Relation.SpaceBookmarkRelationId;
import indipage.org.indipage.domain.Space;
import indipage.org.indipage.domain.SpaceBookmarkRelationRepository;
import indipage.org.indipage.domain.SpaceRepository;
import indipage.org.indipage.domain.Ticket;
import indipage.org.indipage.domain.User;
Expand All @@ -34,6 +37,8 @@ public class UserService {
private final SpaceRepository spaceRepository;
private final InviteSpaceRelationRepository inviteSpaceRelationRepository;
private final ArticleBookmarkRelationRepository articleBookmarkRelationRepository;
private final SpaceBookmarkRelationRepository spaceBookmarkRelationRepository;


public UserDto readUser(final Long userId) {
return UserDto.of(findUser(userId));
Expand Down Expand Up @@ -118,6 +123,17 @@ public void createArticleBookmark(final Long userId, final Long articleId) {
articleBookmarkRelationRepository.save(relation);
}

public IsBookmarkedResponseDto readIsSpaceBookmarked(final Long userId, final Long spaceId) {

User user = findUser(userId);
Space space = findSpace(spaceId);

if (!isBookMarked(user, space)) {
return IsBookmarkedResponseDto.of(false);
}
return IsBookmarkedResponseDto.of(true);
}

private Space findSpace(Long spaceId) {
return spaceRepository.findById(spaceId).orElseThrow(
() -> new NotFoundException(Error.NOT_FOUND_SPACE_EXCEPTION,
Expand All @@ -140,4 +156,15 @@ private boolean isBookMarked(User user, Article article) {

return true;
}

private boolean isBookMarked(User user, Space space) {
Optional<SpaceBookmarkRelation> relation = spaceBookmarkRelationRepository.findSpaceBookmarkRelationBySpaceBookmarkRelationId(
SpaceBookmarkRelationId.newInstance(user, space));

if (relation.isEmpty()) {
return false;
}

return true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,13 @@
import javax.persistence.ManyToOne;
import javax.persistence.MapsId;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Entity
@Getter
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public class SpaceBookmarkRelation extends CreatedTimeBaseEntity {
@EmbeddedId
Expand All @@ -29,4 +31,9 @@ public class SpaceBookmarkRelation extends CreatedTimeBaseEntity {
@JoinColumn(name = "user_id")
private User user;

public static SpaceBookmarkRelation newInstance(Space space, User user) {
return new SpaceBookmarkRelation(
SpaceBookmarkRelationId.newInstance(user, space), space, user);
}

}
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
package indipage.org.indipage.domain.Relation;

import indipage.org.indipage.domain.Space;
import indipage.org.indipage.domain.User;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Embeddable;
import lombok.AllArgsConstructor;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

@Embeddable
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
public class SpaceBookmarkRelationId implements Serializable {
Expand All @@ -16,4 +20,8 @@ public class SpaceBookmarkRelationId implements Serializable {

@Column(name = "space_id", nullable = false)
private Long spaceId;

public static SpaceBookmarkRelationId newInstance(User user, Space space) {
return new SpaceBookmarkRelationId(user.getId(), space.getId());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package indipage.org.indipage.domain;

import indipage.org.indipage.domain.Relation.SpaceBookmarkRelation;
import indipage.org.indipage.domain.Relation.SpaceBookmarkRelationId;
import java.util.Optional;
import org.springframework.data.repository.Repository;

public interface SpaceBookmarkRelationRepository extends
Repository<SpaceBookmarkRelation, SpaceBookmarkRelationId> {
Optional<SpaceBookmarkRelation> findSpaceBookmarkRelationBySpaceBookmarkRelationId(
SpaceBookmarkRelationId spaceBookmarkRelationId);

}
4 changes: 2 additions & 2 deletions src/main/java/indipage/org/indipage/exception/Success.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public enum Success {
READ_IF_USER_HAS_RECEIVED_TICKET_SUCCESS(HttpStatus.OK, "티켓 수령 여부 조회를 성공했습니다."),
READ_ARTICLE_SUMMARY_LIST_SUCCESS(HttpStatus.OK, "아티클 전체 목록 조회에 성공했습니다."),
READ_IS_ARTICLE_BOOKMARKED_SUCCESS(HttpStatus.OK, "아티클 북마크 여부 조회 성공"),
READ_IS_SPACE_BOOKMARKED_SUCCESS(HttpStatus.OK, "공간 북마크 여부 조회 성공"),
/**
* 201 CREATED
*/
Expand All @@ -31,8 +32,7 @@ public enum Success {

CREATE_FOLLOW_SPACE_SUCCESS(HttpStatus.CREATED, "조르기 등록에 성공했습니다."),
CREATE_RECEIVE_TICKET_SUCCESS(HttpStatus.CREATED, "티켓 수령에 성공했습니다."),
CREATE_ARTICLE_BOOKMARK_SUCCESS(HttpStatus.CREATED, "아티클 북마크 등록에 성공했습니다.")
;
CREATE_ARTICLE_BOOKMARK_SUCCESS(HttpStatus.CREATED, "아티클 북마크 등록에 성공했습니다.");

private final HttpStatus httpStatus;
private final String message;
Expand Down

0 comments on commit 10b351f

Please sign in to comment.