diff --git a/src/main/java/ru/soune/nocopy/repository/FileAppealRepository.java b/src/main/java/ru/soune/nocopy/repository/FileAppealRepository.java index c6ba7ef..61e340c 100644 --- a/src/main/java/ru/soune/nocopy/repository/FileAppealRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/FileAppealRepository.java @@ -22,6 +22,9 @@ public interface FileAppealRepository extends JpaRepository Page findByUserId(Long userId, Pageable pageable); + @Query("SELECT fa FROM FileAppeal fa LEFT JOIN FETCH fa.file WHERE fa.userId = :userId") + Page findByUserIdWithFile(@Param("userId") Long userId, Pageable pageable); + @Query("SELECT fa FROM FileAppeal fa WHERE fa.status = :status ORDER BY fa.createdAt ASC") Page findPendingAppeals(@Param("status") AppealStatus status, Pageable pageable); @@ -31,5 +34,8 @@ public interface FileAppealRepository extends JpaRepository @Transactional @Query("DELETE FROM FileAppeal a WHERE a.fileId IN :fileIds") void deleteAllByFileIdIn(@Param("fileIds") List fileIds); + + @Query("SELECT fa FROM FileAppeal fa JOIN FETCH fa.file") + Page findAllWithFile(Pageable pageable); } diff --git a/src/main/java/ru/soune/nocopy/service/file/moderation/ModerationService.java b/src/main/java/ru/soune/nocopy/service/file/moderation/ModerationService.java index f0c9d67..41691f2 100644 --- a/src/main/java/ru/soune/nocopy/service/file/moderation/ModerationService.java +++ b/src/main/java/ru/soune/nocopy/service/file/moderation/ModerationService.java @@ -132,7 +132,7 @@ public class ModerationService { FileAppeal saved = fileAppealRepository.save(appeal); - return convertToResponse(saved); + return convertToResponse(saved, file.getOriginalFileName()); } /** @@ -247,7 +247,7 @@ public class ModerationService { @Transactional(readOnly = true) public Page getUserAppeals(Long userId, int page, int size) { Pageable pageable = PageRequest.of(page, size, Sort.by("createdAt").descending()); - return fileAppealRepository.findByUserId(userId, pageable) + return fileAppealRepository.findByUserIdWithFile(userId, pageable) .map(this::convertToResponse); } @@ -264,7 +264,7 @@ public class ModerationService { Pageable pageable = PageRequest.of(page, size, Sort.by(Sort.Direction.fromString(sortDirection), sortBy)); - return fileAppealRepository.findAll(pageable) + return fileAppealRepository.findAllWithFile(pageable) .map(this::convertToResponse); } @@ -281,4 +281,18 @@ public class ModerationService { .resolvedAt(appeal.getResolvedAt()) .build(); } + + private AppealResponse convertToResponse(FileAppeal appeal,String fileName) { + return AppealResponse.builder() + .appealId(appeal.getId()) + .fileId(appeal.getFileId()) + .appealReason(appeal.getAppealReason()) + .additionalInfo(appeal.getAdditionalInfo()) + .status(appeal.getStatus().name()) + .adminComment(appeal.getAdminComment()) + .fileName(fileName) + .createdAt(appeal.getCreatedAt()) + .resolvedAt(appeal.getResolvedAt()) + .build(); + } }