Feat: ImageMetaData 요청 및 API 생성
This commit is contained in:
parent
995cd0387f
commit
3386a28758
@ -51,6 +51,20 @@ public class ImageController {
|
|||||||
imageService.uploadFolderWithImages(folderZip, projectId, folderId, memberId);
|
imageService.uploadFolderWithImages(folderZip, projectId, folderId, memberId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@PostMapping("/folders/{folder_id}/images/presigned")
|
||||||
|
@SwaggerApiSuccess(description = "압축폴더를 성공적으로 업로드합니다.")
|
||||||
|
@Operation(summary = "압축 폴더 업로드", description = "압축 폴더 내 폴더와 이미지 파일을 업로드합니다.")
|
||||||
|
@SwaggerApiError({ErrorCode.BAD_REQUEST, ErrorCode.NOT_AUTHOR, ErrorCode.SERVER_ERROR})
|
||||||
|
public List<ImagePresignedUrlResponse> uploadFolderByPresignedImage(
|
||||||
|
@CurrentUser final Integer memberId,
|
||||||
|
@RequestBody final List<ImageMetaRequest> imageMetaList,
|
||||||
|
@PathVariable("project_id") final Integer projectId,
|
||||||
|
@PathVariable("folder_id") final Integer folderId) {
|
||||||
|
log.debug("requestImageList {}", imageMetaList);
|
||||||
|
// TODO: 변경
|
||||||
|
return imageMetaList.stream().map(o -> ImagePresignedUrlResponse.of(o.getId(), o.getFileName())).toList();
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/folders/{folder_id}/images/{image_id}")
|
@GetMapping("/folders/{folder_id}/images/{image_id}")
|
||||||
@SwaggerApiSuccess(description = "이미지를 단일 조회합니다.")
|
@SwaggerApiSuccess(description = "이미지를 단일 조회합니다.")
|
||||||
@Operation(summary = "이미지 단일 조회", description = "이미지 정보를 단일 조회합니다.")
|
@Operation(summary = "이미지 단일 조회", description = "이미지 정보를 단일 조회합니다.")
|
||||||
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.worlabel.domain.image.entity.dto;
|
||||||
|
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import lombok.ToString;
|
||||||
|
|
||||||
|
@Schema(name = "이미지 PreSigned DTO", description = "PreSigned Url을 얻기 위한 DTO")
|
||||||
|
@Getter
|
||||||
|
@ToString
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class ImageMetaRequest {
|
||||||
|
|
||||||
|
@Schema(description = "이미지 Order", example = "각 이미지에 대한 Order값")
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
@Schema(description = "파일 이름", example = "해당 파일의 이름")
|
||||||
|
private String fileName;
|
||||||
|
}
|
@ -0,0 +1,22 @@
|
|||||||
|
package com.worlabel.domain.image.entity.dto;
|
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
|
import lombok.*;
|
||||||
|
|
||||||
|
@Schema(name = "이미지 PreSigned DTO", description = "PreSigned Url을 얻기 위한 DTO")
|
||||||
|
@Getter
|
||||||
|
@ToString
|
||||||
|
@NoArgsConstructor
|
||||||
|
@AllArgsConstructor(access = AccessLevel.PRIVATE)
|
||||||
|
public class ImagePresignedUrlResponse {
|
||||||
|
|
||||||
|
@Schema(description = "이미지 Order", example = "각 이미지에 대한 Order값")
|
||||||
|
private Integer id;
|
||||||
|
|
||||||
|
@Schema(description = "이미지에 대한 presignedUrl", example = "presignedUrl")
|
||||||
|
private String presignedUrl;
|
||||||
|
|
||||||
|
public static ImagePresignedUrlResponse of(final Integer id,final String presignedUrl) {
|
||||||
|
return new ImagePresignedUrlResponse(id, presignedUrl);
|
||||||
|
}
|
||||||
|
}
|
@ -68,11 +68,11 @@ public class ImageService {
|
|||||||
int batchSize;
|
int batchSize;
|
||||||
|
|
||||||
if (totalImages <= 100) {
|
if (totalImages <= 100) {
|
||||||
batchSize = 25; // 작은 이미지 수는 작은 배치 크기
|
batchSize = 10; // 작은 이미지 수는 작은 배치 크기
|
||||||
} else if (totalImages <= 3000) {
|
} else if (totalImages <= 3000) {
|
||||||
batchSize = 50; // 중간 이미지 수는 중간 배치 크기
|
batchSize = 25; // 중간 이미지 수는 중간 배치 크기
|
||||||
} else {
|
} else {
|
||||||
batchSize = 100; // 큰 이미지 수는 큰 배치 크기
|
batchSize = 50; // 큰 이미지 수는 큰 배치 크기
|
||||||
}
|
}
|
||||||
|
|
||||||
List<CompletableFuture<Void>> futures = new ArrayList<>();
|
List<CompletableFuture<Void>> futures = new ArrayList<>();
|
||||||
|
Loading…
Reference in New Issue
Block a user