Skip to content
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.tiki.server.document.dto.response;

import static lombok.AccessLevel.PRIVATE;

import java.time.LocalDateTime;

import com.tiki.server.document.entity.DeletedDocument;

import jakarta.validation.constraints.NotNull;
import lombok.Builder;

@Builder(access = PRIVATE)
public record DeletedDocumentResponse(
@NotNull long documentId,
@NotNull String name,
@NotNull String url,
@NotNull long capacity,
@NotNull LocalDateTime createdTime
) {

public static DeletedDocumentResponse of(final DeletedDocument document, final String url) {
return DeletedDocumentResponse.builder()
.documentId(document.getId())
.name(document.getFileName())
.url(url)
.capacity(document.getCapacity())
.createdTime(document.getCreatedAt())
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@

import java.util.List;

import com.tiki.server.document.entity.DeletedDocument;

import jakarta.validation.constraints.NotNull;
import lombok.Builder;

Expand All @@ -14,7 +12,7 @@ public record DeletedDocumentsGetResponse(
@NotNull List<DeletedDocumentGetResponse> deletedDocuments
) {

public static DeletedDocumentsGetResponse from(final List<DeletedDocument> deletedDocuments) {
public static DeletedDocumentsGetResponse from(final List<DeletedDocumentResponse> deletedDocuments) {
return DeletedDocumentsGetResponse.builder()
.deletedDocuments(deletedDocuments.stream().map(DeletedDocumentGetResponse::from).toList())
.build();
Expand All @@ -28,12 +26,12 @@ private record DeletedDocumentGetResponse(
@NotNull long capacity
) {

private static DeletedDocumentGetResponse from(final DeletedDocument deletedDocument) {
private static DeletedDocumentGetResponse from(final DeletedDocumentResponse deletedDocument) {
return DeletedDocumentGetResponse.builder()
.documentId(deletedDocument.getId())
.name(deletedDocument.getFileName())
.url(deletedDocument.getFileUrl())
.capacity(deletedDocument.getCapacity())
.documentId(deletedDocument.documentId())
.name(deletedDocument.name())
.url(deletedDocument.url())
.capacity(deletedDocument.capacity())
.build();
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.tiki.server.document.dto.response;

import static lombok.AccessLevel.PRIVATE;

import java.time.LocalDateTime;

import com.tiki.server.document.entity.Document;

import jakarta.validation.constraints.NotNull;
import lombok.Builder;

@Builder(access = PRIVATE)
public record DocumentResponse(
@NotNull long documentId,
@NotNull String name,
@NotNull String url,
@NotNull long capacity,
@NotNull LocalDateTime createdTime
) {

public static DocumentResponse of(final Document document, final String url) {
return DocumentResponse.builder()
.documentId(document.getId())
.name(document.getFileName())
.url(url)
.capacity(document.getCapacity())
.createdTime(document.getCreatedAt())
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public record DocumentsGetResponse(
@NotNull List<DocumentInfoGetResponse> documents
) {

public static DocumentsGetResponse from(final List<Document> documents) {
public static DocumentsGetResponse from(final List<DocumentResponse> documents) {
return DocumentsGetResponse.builder()
.documents(documents.stream().map(DocumentInfoGetResponse::from).toList())
.build();
Expand All @@ -30,13 +30,13 @@ private record DocumentInfoGetResponse(
@NotNull LocalDateTime createdTime
) {

public static DocumentInfoGetResponse from(final Document document) {
public static DocumentInfoGetResponse from(final DocumentResponse document) {
return DocumentInfoGetResponse.builder()
.documentId(document.getId())
.name(document.getFileName())
.url(document.getFileUrl())
.capacity(document.getCapacity())
.createdTime(document.getCreatedAt())
.documentId(document.documentId())
.name(document.name())
.url(document.url())
.capacity(document.capacity())
.createdTime(document.createdTime())
.build();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@
import com.tiki.server.document.adapter.DocumentSaver;
import com.tiki.server.document.dto.request.DocumentCreateRequest;
import com.tiki.server.document.dto.request.DocumentsCreateRequest;
import com.tiki.server.document.dto.response.DeletedDocumentResponse;
import com.tiki.server.document.dto.response.DeletedDocumentsGetResponse;
import com.tiki.server.document.dto.response.DocumentResponse;
import com.tiki.server.document.dto.response.DocumentsCreateResponse;
import com.tiki.server.document.dto.response.DocumentsGetResponse;
import com.tiki.server.document.entity.DeletedDocument;
Expand Down Expand Up @@ -53,7 +55,8 @@ public DocumentsGetResponse getAllDocuments(final long memberId, final long team
Position accessiblePosition = Position.getAccessiblePosition(type);
memberTeamManager.checkMemberAccessible(accessiblePosition);
List<Document> documents = documentFinder.findAllByTeamId(teamId);
return DocumentsGetResponse.from(documents);
List<DocumentResponse> responses = getDocumentResponses(documents);
return DocumentsGetResponse.from(responses);
}

@Transactional
Expand All @@ -69,7 +72,8 @@ public DocumentsCreateResponse createDocuments(final long memberId, final long t
public DocumentsGetResponse get(final long memberId, final long teamId, final Long folderId) {
memberTeamManagerFinder.findByMemberIdAndTeamId(memberId, teamId);
List<Document> documents = documentFinder.findByTeamIdAndFolderId(teamId, folderId);
return DocumentsGetResponse.from(documents);
List<DocumentResponse> responses = getDocumentResponses(documents);
return DocumentsGetResponse.from(responses);
}

@Transactional
Expand Down Expand Up @@ -102,7 +106,14 @@ public void restore(final long memberId, final long teamId, final List<Long> doc
public DeletedDocumentsGetResponse getTrash(final long memberId, final long teamId) {
memberTeamManagerFinder.findByMemberIdAndTeamId(memberId, teamId);
List<DeletedDocument> deletedDocuments = deletedDocumentAdapter.get(teamId);
return DeletedDocumentsGetResponse.from(deletedDocuments);
List<DeletedDocumentResponse> responses = getDeletedDocumentResponses(deletedDocuments);
return DeletedDocumentsGetResponse.from(responses);
}

private List<DocumentResponse> getDocumentResponses(final List<Document> documents) {
return documents.stream()
.map(document -> DocumentResponse.of(document, awsHandler.getDownloadPreSignedUrl(document.getFileKey())))
.toList();
}

private void validateFolder(final Long folderId, final long teamId) {
Expand Down Expand Up @@ -141,4 +152,10 @@ private void restoreTeamUsage(final long teamId, final List<DeletedDocument> del
Team team = teamFinder.findById(teamId);
team.restoreUsage(deletedDocuments.stream().mapToLong(DeletedDocument::getCapacity).sum());
}

private List<DeletedDocumentResponse> getDeletedDocumentResponses(final List<DeletedDocument> deletedDocuments) {
return deletedDocuments.stream()
.map(document -> DeletedDocumentResponse.of(document, awsHandler.getDownloadPreSignedUrl(document.getFileKey())))
.toList();
}
}
16 changes: 8 additions & 8 deletions src/main/java/com/tiki/server/drive/dto/DriveGetResponse.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import java.time.LocalDateTime;
import java.util.List;

import com.tiki.server.document.entity.Document;
import com.tiki.server.document.dto.response.DocumentResponse;
import com.tiki.server.folder.entity.Folder;

import jakarta.validation.constraints.NotNull;
Expand All @@ -17,7 +17,7 @@ public record DriveGetResponse(
@NotNull List<FolderGetResponse> folders
) {

public static DriveGetResponse of(final List<Document> documents, final List<Folder> folders) {
public static DriveGetResponse of(final List<DocumentResponse> documents, final List<Folder> folders) {
return DriveGetResponse.builder()
.documents(documents.stream().map(DocumentGetResponse::from).toList())
.folders(folders.stream().map(FolderGetResponse::from).toList())
Expand All @@ -34,13 +34,13 @@ private record DocumentGetResponse(
@NotNull String type
) {

public static DocumentGetResponse from(final Document document) {
public static DocumentGetResponse from(final DocumentResponse document) {
return DocumentGetResponse.builder()
.documentId(document.getId())
.name(document.getFileName())
.url(document.getFileUrl())
.capacity(document.getCapacity())
.createdTime(document.getCreatedAt())
.documentId(document.documentId())
.name(document.name())
.url(document.url())
.capacity(document.capacity())
.createdTime(document.createdTime())
.type("document")
.build();
}
Expand Down
12 changes: 11 additions & 1 deletion src/main/java/com/tiki/server/drive/service/DriveService.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@
import org.springframework.transaction.annotation.Transactional;

import com.tiki.server.document.adapter.DocumentFinder;
import com.tiki.server.document.dto.response.DocumentResponse;
import com.tiki.server.document.entity.Document;
import com.tiki.server.drive.dto.DriveGetResponse;
import com.tiki.server.external.util.AwsHandler;
import com.tiki.server.folder.adapter.FolderFinder;
import com.tiki.server.folder.entity.Folder;
import com.tiki.server.memberteammanager.adapter.MemberTeamManagerFinder;
Expand All @@ -24,14 +26,16 @@ public class DriveService {
private final MemberTeamManagerFinder memberTeamManagerFinder;
private final DocumentFinder documentFinder;
private final FolderFinder folderFinder;
private final AwsHandler awsHandler;

public DriveGetResponse getDrive(final long memberId, final long teamId, final Long folderId) {
memberTeamManagerFinder.findByMemberIdAndTeamId(memberId, teamId);
List<Document> documents = documentFinder.findByTeamIdAndFolderId(teamId, folderId);
Folder folder = getFolder(teamId, folderId);
String path = getChildFolderPath(folder);
List<Folder> folders = folderFinder.findByTeamIdAndPath(teamId, path);
return DriveGetResponse.of(documents, folders);
List<DocumentResponse> responses = getDocumentResponses(documents);
return DriveGetResponse.of(responses, folders);
}

private Folder getFolder(final long teamId, final Long folderId) {
Expand All @@ -49,4 +53,10 @@ private String getChildFolderPath(final Folder folder) {
}
return folder.getChildPath();
}

private List<DocumentResponse> getDocumentResponses(final List<Document> documents) {
return documents.stream()
.map(document -> DocumentResponse.of(document, awsHandler.getDownloadPreSignedUrl(document.getFileKey())))
.toList();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
import com.tiki.server.common.dto.SuccessResponse;
import com.tiki.server.external.controller.docs.FileHandlerControllerDocs;
import com.tiki.server.external.dto.request.S3DeleteRequest;
import com.tiki.server.external.dto.response.PreSignedUrlResponse;
import com.tiki.server.external.dto.response.PutObjectPreSignedUrlResponse;

import lombok.RequiredArgsConstructor;

Expand All @@ -31,9 +31,9 @@ public class FileHandlerController implements FileHandlerControllerDocs {
@Override
@ResponseStatus(HttpStatus.OK)
@GetMapping("/upload")
public SuccessResponse<PreSignedUrlResponse> getPreSignedUrl(
public SuccessResponse<PutObjectPreSignedUrlResponse> getPreSignedUrl(
@RequestParam final String fileFormat) {
PreSignedUrlResponse response = fileHandlerService.getUploadPreSignedUrl(fileFormat);
PutObjectPreSignedUrlResponse response = fileHandlerService.getUploadPreSignedUrl(fileFormat);
return SuccessResponse.success(PRESIGNED_URL_GET_SUCCESS.getMessage(), response);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import com.tiki.server.common.dto.ErrorResponse;
import com.tiki.server.common.dto.SuccessResponse;
import com.tiki.server.external.dto.request.S3DeleteRequest;
import com.tiki.server.external.dto.response.PreSignedUrlResponse;
import com.tiki.server.external.dto.response.PutObjectPreSignedUrlResponse;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
Expand All @@ -33,7 +33,7 @@ public interface FileHandlerControllerDocs {
description = "S3 PRESIGNED URL 불러오기 실패",
content = @Content(schema = @Schema(implementation = ErrorResponse.class)))}
)
SuccessResponse<PreSignedUrlResponse> getPreSignedUrl(
SuccessResponse<PutObjectPreSignedUrlResponse> getPreSignedUrl(
@Parameter(
name = "fileFormat",
description = "파일 형식",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@
import lombok.Builder;

@Builder(access = PRIVATE)
public record PreSignedUrlResponse(
public record PutObjectPreSignedUrlResponse(
@NotNull String fileName,
@NotNull String url
) {

public static PreSignedUrlResponse of(final String fileName, final String url) {
return PreSignedUrlResponse.builder()
public static PutObjectPreSignedUrlResponse of(final String fileName, final String url) {
return PutObjectPreSignedUrlResponse.builder()
.fileName(fileName)
.url(url)
.build();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.tiki.server.external.service;

import com.tiki.server.external.dto.request.S3DeleteRequest;
import com.tiki.server.external.dto.response.PreSignedUrlResponse;
import com.tiki.server.external.dto.response.PutObjectPreSignedUrlResponse;
import com.tiki.server.external.util.AwsHandler;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
Expand All @@ -12,7 +12,7 @@ public class FileHandlerService {

private final AwsHandler awsHandler;

public PreSignedUrlResponse getUploadPreSignedUrl(final String fileFormat) {
public PutObjectPreSignedUrlResponse getUploadPreSignedUrl(final String fileFormat) {
return awsHandler.getUploadPreSignedUrl(fileFormat);
}

Expand Down
Loading