Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 3 additions & 11 deletions src/main/java/com/petlog/diary/controller/DiaryController.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
import com.petlog.diary.controller.dto.response.GetDiaryResponseDto;
import com.petlog.diary.service.DiaryService;
import com.petlog.diary.service.dto.CreateDiaryDto;
import com.petlog.diary.service.dto.GetDailyDiaryDto;
import com.petlog.diary.service.dto.GetDiaryInfoDto;
import com.petlog.docs.DiaryControllerDocs;
import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -59,18 +58,11 @@ public ResponseEntity<ApiResponse<Void>> createDiary(

@GetMapping
public ResponseEntity<ApiResponse<GetAllDiaryResponseDto>> getAllDiary(
@Authenticated final Long memberId,
@PathVariable final Long groupId
) {
final List<GetDiaryInfoDto> dailyDiary1 = List.of(
new GetDiaryInfoDto(1L, "잠자는 아이", "https://잠자는 여름이.png"),
new GetDiaryInfoDto(2L, "날뛰는 아이", "https://날뛰는 여름이.png")
);

final GetDailyDiaryDto dailyDiary = new GetDailyDiaryDto(LocalDate.now(), dailyDiary1);

final List<GetDailyDiaryDto> allDailyDiary = List.of(dailyDiary);

final GetAllDiaryResponseDto allDiary = new GetAllDiaryResponseDto(allDailyDiary);
final List<GetDiaryInfoDto> diaries = diaryService.getAllDiaries(memberId, groupId);
final GetAllDiaryResponseDto allDiary = GetAllDiaryResponseDto.from(diaries);

return ResponseEntity.ok(
ApiResponse.successWithData(GET_ALL_DIARY, allDiary)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,34 @@
package com.petlog.diary.controller.dto.response;

import com.petlog.diary.service.dto.GetDailyDiaryDto;
import com.petlog.diary.service.dto.GetDiaryInfoDto;

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

public record GetAllDiaryResponseDto(

List<GetDailyDiaryDto> allDiary
List<GetDailyDiaryDto> diary

) {
public GetAllDiaryResponseDto(final List<GetDailyDiaryDto> allDiary) {
this.allDiary = allDiary;

public static GetAllDiaryResponseDto from(List<GetDiaryInfoDto> diaryList) {

List<GetDailyDiaryDto> grouped =
diaryList.stream()
.collect(Collectors.groupingBy(GetDiaryInfoDto::writtenAt))
.entrySet()
.stream()
.map(entry ->
new GetDailyDiaryDto(
entry.getKey(),
entry.getValue()
)
)
.sorted(Comparator.comparing(GetDailyDiaryDto::writtenAt).reversed())
.toList();

return new GetAllDiaryResponseDto(grouped);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
package com.petlog.diary.repository;

import com.petlog.diary.entity.Diary;
import com.petlog.petgroup.entity.PetGroup;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;

public interface DiaryRepository extends JpaRepository<Diary, Long> {

List<Diary> findAllByPetGroup(PetGroup petGroup);
}
21 changes: 21 additions & 0 deletions src/main/java/com/petlog/diary/service/DiaryService.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.petlog.diary.repository.DiaryImageRepository;
import com.petlog.diary.repository.DiaryRepository;
import com.petlog.diary.service.dto.CreateDiaryDto;
import com.petlog.diary.service.dto.GetDiaryInfoDto;
import com.petlog.member.entity.Member;
import com.petlog.member.repository.MemberRepository;
import com.petlog.petgroup.entity.PetGroup;
Expand Down Expand Up @@ -62,4 +63,24 @@ private PetGroupMember getPetGroupMember(final Member member, final PetGroup pet
return petGroupMemberRepository.findByMemberAndPetGroup(member, petGroup)
.orElseThrow(() -> new IllegalArgumentException("그룹에 존재하지 않는 회원입니다."));
}

public List<GetDiaryInfoDto> getAllDiaries(final Long memberId, final Long groupId) {
final Member member = getMember(memberId);
final PetGroup petGroup = getPetGroup(groupId);
getPetGroupMember(member, petGroup);

final List<Diary> diaries = diaryRepository.findAllByPetGroup(petGroup);

return diaries.stream()
.map(info -> new GetDiaryInfoDto(
info.getId(),
info.getTitle(),
info.getImages().stream()
.findFirst()
.map(DiaryImage::getImageUrl)
.orElse(null),
info.getWrittenAt()
))
.toList();
}
}
15 changes: 5 additions & 10 deletions src/main/java/com/petlog/diary/service/dto/GetDiaryInfoDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,18 @@

import io.swagger.v3.oas.annotations.media.Schema;

import java.time.LocalDate;

public record GetDiaryInfoDto(

Long diaryId,

@Schema(description = "10글자 제한")
String title,

String image
String image,

LocalDate writtenAt

) {
public GetDiaryInfoDto(
final Long diaryId,
final String title,
final String image
) {
this.diaryId = diaryId;
this.title = title;
this.image = image;
}
}
2 changes: 1 addition & 1 deletion src/main/java/com/petlog/docs/DiaryControllerDocs.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public interface DiaryControllerDocs {

@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "일기 전체 조회에 성공하였습니다.")
@Operation(summary = "일기 전체 조회 API")
ResponseEntity<ApiResponse<GetAllDiaryResponseDto>> getAllDiary(@PathVariable final Long groupId);
ResponseEntity<ApiResponse<GetAllDiaryResponseDto>> getAllDiary(@Authenticated final Long memberId, @PathVariable final Long groupId);

@io.swagger.v3.oas.annotations.responses.ApiResponse(responseCode = "200", description = "일기 상세 조회에 성공하였습니다.")
@Operation(summary = "일기 상세 조회 API")
Expand Down
Loading