Skip to content
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,15 @@ SELECT COUNT(c) > 0 FROM Child c
boolean existsByChildIdAndParentId(@Param("childId") Long childId, @Param("parentId") Long parentId);

Optional<Child> findByHomecam(Homecam homecam);

@Query("""
SELECT c FROM Child c
JOIN ParentChild pc ON pc.child.id = c.id
WHERE c.id = :childId
AND pc.parent.id = :parentId
AND c.deletedAt IS NULL
""")
Optional<Child> findByIdAndParentId(
@Param("childId") Long childId,
@Param("parentId") Long parentId);
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package final_project.momeasy.domain.room_condition.service;

import final_project.momeasy.domain.child.exception.ChildErrorCode;
import final_project.momeasy.domain.child.exception.ChildException;
import final_project.momeasy.domain.child.repository.ChildRepository;
import final_project.momeasy.domain.parent.entity.Parent;
import final_project.momeasy.domain.room_condition.converter.RoomConditionConverter;
Expand All @@ -27,27 +25,26 @@ public class RoomConditionQueryServiceImpl implements RoomConditionQueryService

@Override
public RoomConditionResponseDTO.RoomConditionViewDTO getRoomCondition(Long childId, Parent parent) {
childRepository.findById(childId).orElseThrow(() -> new ChildException(ChildErrorCode.NOT_FOUND));
if (!childRepository.existsByChildIdAndParentId(childId, parent.getId())) {
throw new RoomConditionException(RoomConditionErrorCode.UNAUTHORIZED_ACCESS);
}
RoomCondition roomCondition = roomConditionRepository.findTopByChildIdOrderByCreatedAtDesc(childId).orElseThrow(() -> new RoomConditionException(RoomConditionErrorCode.NOT_FOUND));
validateChildAccess(childId, parent);
RoomCondition roomCondition = roomConditionRepository.findTopByChildIdOrderByCreatedAtDesc(childId)
.orElseThrow(() ->
new RoomConditionException(RoomConditionErrorCode.NOT_FOUND));
return RoomConditionConverter.toRoomConditionViewDTO(roomCondition);
}

@Override
public RoomConditionResponseDTO.RoomConditionListViewDTO getRoomConditionPage(Long childId, Long cursor, Integer size, Parent parent) {
childRepository.findById(childId).orElseThrow(() -> new ChildException(ChildErrorCode.NOT_FOUND));
if (!childRepository.existsByChildIdAndParentId(childId, parent.getId())) {
throw new RoomConditionException(RoomConditionErrorCode.UNAUTHORIZED_ACCESS);
}
validateChildAccess(childId, parent);

if (cursor == 0) {
cursor = Long.MAX_VALUE;
}
Pageable pageable = PageRequest.of(0, size);
Slice<RoomCondition> roomConditionList = roomConditionRepository.findRoomConditionCursorPagination(childId, cursor, pageable);
List<RoomCondition> roomConditions = roomConditionList.toList();
List<RoomConditionResponseDTO.RoomConditionViewDTO> roomConditionViewDTOS = roomConditions.stream().map(RoomConditionConverter::toRoomConditionViewDTO).toList();
List<RoomConditionResponseDTO.RoomConditionViewDTO> roomConditionViewDTOS = roomConditions.stream()
.map(RoomConditionConverter::toRoomConditionViewDTO)
.toList();
if (roomConditionList.isEmpty()) {
throw new RoomConditionException(RoomConditionErrorCode.NOT_FOUND);
}
Expand All @@ -57,33 +54,32 @@ public RoomConditionResponseDTO.RoomConditionListViewDTO getRoomConditionPage(Lo
nextCursor = roomConditions.get(roomConditions.size() - 1).getId();
}

return RoomConditionConverter.toRoomConditionListViewDTO(roomConditionViewDTOS, roomConditionList.hasNext(), nextCursor);
return RoomConditionConverter
.toRoomConditionListViewDTO(roomConditionViewDTOS, roomConditionList.hasNext(), nextCursor);
}

@Override
public List<RoomConditionResponseDTO.RoomConditionGrpahDTO> getRoomConditionGraphDay1(Long childId, Parent parent) {
childRepository.findById(childId).orElseThrow(() -> new ChildException(ChildErrorCode.NOT_FOUND));
if (!childRepository.existsByChildIdAndParentId(childId, parent.getId())) {
throw new RoomConditionException(RoomConditionErrorCode.UNAUTHORIZED_ACCESS);
}
validateChildAccess(childId, parent);
return roomConditionGraphGenerator.createDay1(childId);
}

@Override
public List<RoomConditionResponseDTO.RoomConditionGrpahDTO> getRoomConditionGraphDay3(Long childId, Parent parent) {
childRepository.findById(childId).orElseThrow(() -> new ChildException(ChildErrorCode.NOT_FOUND));
if (!childRepository.existsByChildIdAndParentId(childId, parent.getId())) {
throw new RoomConditionException(RoomConditionErrorCode.UNAUTHORIZED_ACCESS);
}
validateChildAccess(childId, parent);
return roomConditionGraphGenerator.createDay3(childId);
}

@Override
public List<RoomConditionResponseDTO.RoomConditionGrpahDTO> getRoomConditionGraphDay7(Long childId, Parent parent) {
childRepository.findById(childId).orElseThrow(() -> new ChildException(ChildErrorCode.NOT_FOUND));
if (!childRepository.existsByChildIdAndParentId(childId, parent.getId())) {
throw new RoomConditionException(RoomConditionErrorCode.UNAUTHORIZED_ACCESS);
}
validateChildAccess(childId, parent);
return roomConditionGraphGenerator.createDay7(childId);
}

private void validateChildAccess(Long childId, Parent parent) {
childRepository.findByIdAndParentId(childId, parent.getId())
.orElseThrow(() ->
new RoomConditionException(RoomConditionErrorCode.UNAUTHORIZED_ACCESS)
);
}
}