diff --git a/src/main/java/com/potatocake/everymoment/controller/FileController.java b/src/main/java/com/potatocake/everymoment/controller/FileController.java index cb62468..d841829 100644 --- a/src/main/java/com/potatocake/everymoment/controller/FileController.java +++ b/src/main/java/com/potatocake/everymoment/controller/FileController.java @@ -1,12 +1,12 @@ package com.potatocake.everymoment.controller; import com.potatocake.everymoment.dto.SuccessResponse; -import com.potatocake.everymoment.dto.request.FileRequest; import com.potatocake.everymoment.dto.response.FileResponse; import com.potatocake.everymoment.security.MemberDetails; import com.potatocake.everymoment.service.FileService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.ArraySchema; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; @@ -34,10 +34,12 @@ public class FileController { private final FileService fileService; @Operation(summary = "파일 목록 조회", description = "특정 일기의 파일 목록을 조회합니다.") - @ApiResponse(responseCode = "200", description = "파일 목록 조회 성공", content = @Content(schema = @Schema(implementation = FileResponse.class))) + @ApiResponse(responseCode = "200", description = "파일 목록 조회 성공", content = @Content(array = @ArraySchema(schema = @Schema(implementation = FileResponse.class)))) @GetMapping - public ResponseEntity> getFiles(@Parameter(description = "조회할 일기 ID", required = true) - @PathVariable Long diaryId) { + public ResponseEntity>> getFiles( + @Parameter(description = "조회할 일기 ID", required = true) + @PathVariable Long diaryId + ) { List files = fileService.getFiles(diaryId); return ResponseEntity.ok() @@ -53,11 +55,9 @@ public ResponseEntity uploadFiles( @Parameter(description = "인증된 사용자 정보", hidden = true) @AuthenticationPrincipal MemberDetails memberDetails, @Parameter(description = "업로드할 파일 목록", required = true) - @RequestPart List files, - @Parameter(description = "일기에 보일 파일 이름과 순서", required = true) - @RequestPart List info + @RequestPart List files ) { - fileService.uploadFiles(diaryId, memberDetails.getId(), files, info); + fileService.uploadFiles(diaryId, memberDetails.getId(), files); return ResponseEntity.ok() .body(SuccessResponse.ok()); @@ -72,11 +72,9 @@ public ResponseEntity updateFiles( @Parameter(description = "인증된 사용자 정보", hidden = true) @AuthenticationPrincipal MemberDetails memberDetails, @Parameter(description = "수정할 파일 목록", required = true) - @RequestPart List files, - @Parameter(description = "일기에 보일 파일 이름과 순서", required = true) - @RequestPart List info + @RequestPart List files ) { - fileService.updateFiles(diaryId, memberDetails.getId(), files, info); + fileService.updateFiles(diaryId, memberDetails.getId(), files); return ResponseEntity.ok() .body(SuccessResponse.ok()); diff --git a/src/main/java/com/potatocake/everymoment/dto/request/FileRequest.java b/src/main/java/com/potatocake/everymoment/dto/request/FileRequest.java deleted file mode 100644 index 9d22d27..0000000 --- a/src/main/java/com/potatocake/everymoment/dto/request/FileRequest.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.potatocake.everymoment.dto.request; - -import lombok.Getter; - -@Getter -public class FileRequest { - private String filename; - private int order; -} diff --git a/src/main/java/com/potatocake/everymoment/service/FileService.java b/src/main/java/com/potatocake/everymoment/service/FileService.java index 771129e..a2b3bba 100644 --- a/src/main/java/com/potatocake/everymoment/service/FileService.java +++ b/src/main/java/com/potatocake/everymoment/service/FileService.java @@ -1,6 +1,5 @@ package com.potatocake.everymoment.service; -import com.potatocake.everymoment.dto.request.FileRequest; import com.potatocake.everymoment.dto.response.FileResponse; import com.potatocake.everymoment.entity.Diary; import com.potatocake.everymoment.entity.File; @@ -11,8 +10,6 @@ import com.potatocake.everymoment.util.S3FileUploader; import java.util.ArrayList; import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -34,29 +31,23 @@ public List getFiles(Long diaryId) { .toList(); } - public void uploadFiles(Long diaryId, Long memberId, List files, List infos) { + public void uploadFiles(Long diaryId, Long memberId, List files) { Diary diary = diaryRepository.findById(diaryId) .orElseThrow(() -> new GlobalException(ErrorCode.DIARY_NOT_FOUND)); diary.checkOwner(memberId); - Map fileMap = files.stream() - .collect(Collectors.toMap(MultipartFile::getOriginalFilename, f -> f, (f1, f2) -> f1)); - List fileEntities = new ArrayList<>(); - for (FileRequest info : infos) { - MultipartFile file = fileMap.get(info.getFilename()); - if (file == null) { - throw new GlobalException(ErrorCode.FILE_NOT_FOUND); - } + for (int i = 0; i < files.size(); i++) { + MultipartFile file = files.get(i); String url = uploader.uploadFile(file); File fileEntity = File.builder() .diary(diary) .imageUrl(url) - .order(info.getOrder()) + .order(i + 1) .build(); fileEntities.add(fileEntity); @@ -65,7 +56,7 @@ public void uploadFiles(Long diaryId, Long memberId, List files, fileRepository.saveAll(fileEntities); } - public void updateFiles(Long diaryId, Long memberId, List files, List infos) { + public void updateFiles(Long diaryId, Long memberId, List files) { Diary diary = diaryRepository.findById(diaryId) .orElseThrow(() -> new GlobalException(ErrorCode.DIARY_NOT_FOUND)); @@ -73,7 +64,7 @@ public void updateFiles(Long diaryId, Long memberId, List files, fileRepository.deleteByDiary(diary); - uploadFiles(diaryId, memberId, files, infos); + uploadFiles(diaryId, memberId, files); } }