Skip to content

Commit

Permalink
Merge pull request #304 from depromeet/feature/#303-feed-v2
Browse files Browse the repository at this point in the history
feat: v2 엔드 포인트 및 모델 추가
  • Loading branch information
char-yb authored Oct 15, 2024
2 parents f8951d4 + ab0fb52 commit 0bed347
Show file tree
Hide file tree
Showing 7 changed files with 80 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@

import com.depromeet.stonebed.domain.feed.application.FeedService;
import com.depromeet.stonebed.domain.feed.dto.request.FeedGetRequest;
import com.depromeet.stonebed.domain.feed.dto.response.FeedContentGetResponse;
import com.depromeet.stonebed.domain.feed.dto.response.FeedGetResponse;
import com.depromeet.stonebed.domain.feed.dto.response.v1.FeedContentGetResponse;
import com.depromeet.stonebed.domain.feed.dto.response.v1.FeedGetResponse;
import com.depromeet.stonebed.domain.feed.dto.response.v2.FeedGetResponseV2;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
Expand All @@ -23,6 +24,12 @@ public FeedGetResponse feedFind(@Valid FeedGetRequest request) {
return feedService.findFeed(request);
}

@Operation(summary = "피드 조회", description = "내 피드를 조회하는 API입니다.")
@GetMapping("/v2")
public FeedGetResponseV2 feedFindV2(@Valid FeedGetRequest request) {
return feedService.findFeedV2(request);
}

@Operation(summary = "단일 피드 조회", description = "단일 피드를 조회하는 API입니다.")
@GetMapping("/{recordId}")
public FeedContentGetResponse feedFindOne(@PathVariable Long recordId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
import com.depromeet.stonebed.domain.feed.dao.FeedRepository;
import com.depromeet.stonebed.domain.feed.dto.FindFeedDto;
import com.depromeet.stonebed.domain.feed.dto.request.FeedGetRequest;
import com.depromeet.stonebed.domain.feed.dto.response.FeedContentGetResponse;
import com.depromeet.stonebed.domain.feed.dto.response.FeedGetResponse;
import com.depromeet.stonebed.domain.feed.dto.response.v1.FeedContentGetResponse;
import com.depromeet.stonebed.domain.feed.dto.response.v1.FeedGetResponse;
import com.depromeet.stonebed.domain.feed.dto.response.v2.FeedContentGetResponseV2;
import com.depromeet.stonebed.domain.feed.dto.response.v2.FeedGetResponseV2;
import com.depromeet.stonebed.global.error.ErrorCode;
import com.depromeet.stonebed.global.error.exception.CustomException;
import java.util.List;
Expand Down Expand Up @@ -83,4 +85,19 @@ public FeedContentGetResponse findFeedOne(Long recordId) {
}
return FeedContentGetResponse.from(feedOne);
}

public FeedGetResponseV2 findFeedV2(FeedGetRequest request) {
List<FindFeedDto> feeds = getFeeds(request.cursor(), request.memberId(), request.limit());

List<FeedContentGetResponseV2> feedContentList =
feeds.stream().map(FeedContentGetResponseV2::from).toList();

String nextCursor = getNextCursor(feeds, request.limit());

if (nextFeedNotExists(feeds, request.memberId())) {
nextCursor = null;
}

return FeedGetResponseV2.from(feedContentList, nextCursor);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.depromeet.stonebed.domain.feed.dto.response;
package com.depromeet.stonebed.domain.feed.dto.response.v1;

import com.depromeet.stonebed.domain.feed.dto.FindFeedDto;
import io.swagger.v3.oas.annotations.media.Schema;
Expand All @@ -17,7 +17,6 @@ public record FeedContentGetResponse(
String missionRecordImageUrl,
@Schema(description = "미션 기록 생성일") LocalDate createdDate,
@Schema(description = "부스트") Long totalBoostCount,
@Schema(description = "댓글 수", example = "12") Integer totalCommentCount,
@Schema(description = "미션 기록 컨텐츠") String content) {
public static FeedContentGetResponse from(FindFeedDto missionRecord) {
return new FeedContentGetResponse(
Expand All @@ -31,7 +30,6 @@ public static FeedContentGetResponse from(FindFeedDto missionRecord) {
missionRecord.missionRecord().getImageUrl(),
missionRecord.missionRecord().getCreatedAt().toLocalDate(),
missionRecord.totalBoostCount(),
missionRecord.totalCommentCount(),
missionRecord.missionRecord().getContent());
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.depromeet.stonebed.domain.feed.dto.response;
package com.depromeet.stonebed.domain.feed.dto.response.v1;

import io.swagger.v3.oas.annotations.media.Schema;
import java.util.List;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.depromeet.stonebed.domain.feed.dto.response.v2;

import com.depromeet.stonebed.domain.feed.dto.FindFeedDto;
import io.swagger.v3.oas.annotations.media.Schema;
import java.time.LocalDate;

public record FeedContentGetResponseV2(
@Schema(description = "미션 ID", example = "1") Long missionId,
@Schema(description = "미션 제목", example = "산책하기") String missionTitle,
@Schema(description = "미션 완료 메시지", example = "산책하기 미션을 수행했어요!")
String missionCompleteMessage,
@Schema(description = "미션 기록 ID", example = "1") Long missionRecordId,
@Schema(description = "작성자 ID", example = "1") Long authorId,
@Schema(description = "작성자 프로필 닉네임") String authorProfileNickname,
@Schema(description = "작성자 프로필 이미지 URL") String authorProfileImageUrl,
@Schema(description = "미션 기록 이미지 URL", example = "example.jpeg")
String missionRecordImageUrl,
@Schema(description = "미션 기록 생성일") LocalDate createdDate,
@Schema(description = "부스트") Long totalBoostCount,
@Schema(description = "댓글 수", example = "12") Integer totalCommentCount,
@Schema(description = "미션 기록 컨텐츠") String content) {
public static FeedContentGetResponseV2 from(FindFeedDto missionRecord) {
return new FeedContentGetResponseV2(
missionRecord.mission().getId(),
missionRecord.mission().getTitle(),
missionRecord.mission().getCompleteMessage(),
missionRecord.missionRecord().getId(),
missionRecord.author().getId(),
missionRecord.author().getProfile().getNickname(),
missionRecord.author().getProfile().getProfileImageUrl(),
missionRecord.missionRecord().getImageUrl(),
missionRecord.missionRecord().getCreatedAt().toLocalDate(),
missionRecord.totalBoostCount(),
missionRecord.totalCommentCount(),
missionRecord.missionRecord().getContent());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.depromeet.stonebed.domain.feed.dto.response.v2;

import io.swagger.v3.oas.annotations.media.Schema;
import java.util.List;

public record FeedGetResponseV2(
List<FeedContentGetResponseV2> list,
@Schema(description = "커서 위치", example = "1") String nextCursor) {
public static FeedGetResponseV2 from(List<FeedContentGetResponseV2> list, String nextCursor) {
return new FeedGetResponseV2(list, nextCursor);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import com.depromeet.stonebed.domain.feed.dao.FeedRepository;
import com.depromeet.stonebed.domain.feed.dto.FindFeedDto;
import com.depromeet.stonebed.domain.feed.dto.request.FeedGetRequest;
import com.depromeet.stonebed.domain.feed.dto.response.FeedGetResponse;
import com.depromeet.stonebed.domain.feed.dto.response.v1.FeedGetResponse;
import com.depromeet.stonebed.domain.member.domain.Member;
import com.depromeet.stonebed.domain.mission.domain.Mission;
import com.depromeet.stonebed.domain.missionRecord.domain.MissionRecord;
Expand Down

0 comments on commit 0bed347

Please sign in to comment.