diff --git a/src/main/java/com/tiki/server/document/adapter/DocumentFinder.java b/src/main/java/com/tiki/server/document/adapter/DocumentFinder.java index 55f7cbb3..451155dd 100644 --- a/src/main/java/com/tiki/server/document/adapter/DocumentFinder.java +++ b/src/main/java/com/tiki/server/document/adapter/DocumentFinder.java @@ -1,6 +1,7 @@ package com.tiki.server.document.adapter; import static com.tiki.server.document.message.ErrorCode.INVALID_DOCUMENT; +import static com.tiki.server.folder.constant.Constant.ROOT_PATH; import java.util.List; import java.util.Objects; @@ -47,4 +48,8 @@ public List findAllByTeamId(long teamId) { public boolean existsById(Long timeBlockId) { return documentRepository.existsById(timeBlockId); } + + public List findByTeamIdAndFolderId(final long teamId, final Long folderId) { + return documentRepository.findAllByTeamIdAndFolderIdOrderByCreatedAtDesc(teamId, folderId); + } } diff --git a/src/main/java/com/tiki/server/document/controller/DocumentController.java b/src/main/java/com/tiki/server/document/controller/DocumentController.java index bc452dfe..47be9c77 100644 --- a/src/main/java/com/tiki/server/document/controller/DocumentController.java +++ b/src/main/java/com/tiki/server/document/controller/DocumentController.java @@ -28,13 +28,13 @@ @RestController @RequiredArgsConstructor -@RequestMapping("api/v1/documents") +@RequestMapping("api/v1") public class DocumentController implements DocumentControllerDocs { private final DocumentService documentService; @Override - @GetMapping("/team/{teamId}/timeline") + @GetMapping("/documents/team/{teamId}/timeline") public ResponseEntity> getAllDocuments( Principal principal, @PathVariable long teamId, @@ -46,7 +46,7 @@ public ResponseEntity> getAllDocuments( } @Override - @DeleteMapping("/team/{teamId}/document/{documentId}") + @DeleteMapping("/documents/team/{teamId}/document/{documentId}") public ResponseEntity deleteDocument( Principal principal, @PathVariable long teamId, @@ -57,7 +57,7 @@ public ResponseEntity deleteDocument( return ResponseEntity.noContent().build(); } - @PostMapping + @PostMapping("/documents") public ResponseEntity> createDocuments( Principal principal, @RequestHeader("team-id") long teamId, @@ -68,4 +68,15 @@ public ResponseEntity> createDocuments( return ResponseEntity.created(UriGenerator.getUri("api/v1/documents")) .body(SuccessResponse.success(SUCCESS_CREATE_DOCUMENTS.getMessage(), response)); } + + @GetMapping("/teams/{teamId}/documents") + public ResponseEntity> getDocuments( + final Principal principal, + @PathVariable long teamId, + @RequestParam(required = false) Long folderId + ) { + long memberId = Long.parseLong(principal.getName()); + DocumentsGetResponse response = documentService.get(memberId, teamId, folderId); + return ResponseEntity.ok(SuccessResponse.success(SUCCESS_GET_DOCUMENTS.getMessage(), response)); + } } diff --git a/src/main/java/com/tiki/server/document/dto/response/DocumentsGetResponse.java b/src/main/java/com/tiki/server/document/dto/response/DocumentsGetResponse.java index 3ef03743..6ae8be32 100644 --- a/src/main/java/com/tiki/server/document/dto/response/DocumentsGetResponse.java +++ b/src/main/java/com/tiki/server/document/dto/response/DocumentsGetResponse.java @@ -2,6 +2,7 @@ import static lombok.AccessLevel.PRIVATE; +import java.time.LocalDateTime; import java.util.List; import com.tiki.server.document.entity.Document; @@ -14,29 +15,29 @@ public record DocumentsGetResponse( List documents ) { - public static DocumentsGetResponse from(List documents) { + public static DocumentsGetResponse from(final List documents) { return DocumentsGetResponse.builder() - .documents(documents.stream().map(DocumentGetResponse::from).toList()) - .build(); + .documents(documents.stream().map(DocumentGetResponse::from).toList()) + .build(); } @Builder(access = PRIVATE) private record DocumentGetResponse( long documentId, - @NonNull String fileName, - @NonNull String fileUrl, - @NonNull String blockName, - @NonNull String color + @NonNull String name, + @NonNull String url, + double capacity, + @NonNull LocalDateTime createdTime ) { - public static DocumentGetResponse from(Document document) { + public static DocumentGetResponse from(final Document document) { return DocumentGetResponse.builder() - .documentId(document.getId()) - .fileName(document.getFileName()) - .fileUrl(document.getFileUrl()) - .blockName(document.getTimeBlock().getName()) - .color(document.getTimeBlock().getColor()) - .build(); + .documentId(document.getId()) + .name(document.getFileName()) + .url(document.getFileUrl()) + .capacity(document.getCapacity()) + .createdTime(document.getCreatedAt()) + .build(); } } } diff --git a/src/main/java/com/tiki/server/document/repository/DocumentRepository.java b/src/main/java/com/tiki/server/document/repository/DocumentRepository.java index d3ac52b2..9704be04 100644 --- a/src/main/java/com/tiki/server/document/repository/DocumentRepository.java +++ b/src/main/java/com/tiki/server/document/repository/DocumentRepository.java @@ -22,4 +22,6 @@ public interface DocumentRepository extends JpaRepository { Document findByIdWithTimeBlock(long documentId); void deleteAllByTimeBlockId(long timeBlockId); + + List findAllByTeamIdAndFolderIdOrderByCreatedAtDesc(long teamId, Long folderId); } diff --git a/src/main/java/com/tiki/server/document/service/DocumentService.java b/src/main/java/com/tiki/server/document/service/DocumentService.java index 18017734..e42b51dd 100644 --- a/src/main/java/com/tiki/server/document/service/DocumentService.java +++ b/src/main/java/com/tiki/server/document/service/DocumentService.java @@ -56,6 +56,12 @@ public DocumentsCreateResponse createDocuments(long memberId, long teamId, Docum return DocumentsCreateResponse.from(documentIds); } + public DocumentsGetResponse get(final long memberId, final long teamId, final Long folderId) { + memberTeamManagerFinder.findByMemberIdAndTeamId(memberId, teamId); + List documents = documentFinder.findByTeamIdAndFolderId(teamId, folderId); + return DocumentsGetResponse.from(documents); + } + private DocumentsGetResponse getAllDocumentsByType(long teamId, Position accessiblePosition) { List documents = documentFinder.findAllByTeamIdAndAccessiblePosition(teamId, accessiblePosition); return DocumentsGetResponse.from(documents); diff --git a/src/main/java/com/tiki/server/folder/adapter/FolderFinder.java b/src/main/java/com/tiki/server/folder/adapter/FolderFinder.java index eb4111e1..d74576ae 100644 --- a/src/main/java/com/tiki/server/folder/adapter/FolderFinder.java +++ b/src/main/java/com/tiki/server/folder/adapter/FolderFinder.java @@ -25,8 +25,8 @@ public Folder findById(long id) { public List findByTeamIdAndPath(final long teamId, final String path) { if (path.equals(ROOT_PATH)) { - return folderRepository.findAllByTeamIdAndPath(teamId, path); + return folderRepository.findAllByTeamIdAndPathOrderByCreatedAtDesc(teamId, path); } - return folderRepository.findAllByPath(path); + return folderRepository.findAllByPathOrderByCreatedAtDesc(path); } } diff --git a/src/main/java/com/tiki/server/folder/repository/FolderRepository.java b/src/main/java/com/tiki/server/folder/repository/FolderRepository.java index 5406a145..34a11781 100644 --- a/src/main/java/com/tiki/server/folder/repository/FolderRepository.java +++ b/src/main/java/com/tiki/server/folder/repository/FolderRepository.java @@ -7,6 +7,6 @@ import com.tiki.server.folder.entity.Folder; public interface FolderRepository extends JpaRepository { - List findAllByTeamIdAndPath(long teamId, String path); - List findAllByPath(String path); + List findAllByTeamIdAndPathOrderByCreatedAtDesc(long teamId, String path); + List findAllByPathOrderByCreatedAtDesc(String path); }