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);
|
||||
}
|
||||
|
||||
@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}")
|
||||
@SwaggerApiSuccess(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;
|
||||
|
||||
if (totalImages <= 100) {
|
||||
batchSize = 25; // 작은 이미지 수는 작은 배치 크기
|
||||
batchSize = 10; // 작은 이미지 수는 작은 배치 크기
|
||||
} else if (totalImages <= 3000) {
|
||||
batchSize = 50; // 중간 이미지 수는 중간 배치 크기
|
||||
batchSize = 25; // 중간 이미지 수는 중간 배치 크기
|
||||
} else {
|
||||
batchSize = 100; // 큰 이미지 수는 큰 배치 크기
|
||||
batchSize = 50; // 큰 이미지 수는 큰 배치 크기
|
||||
}
|
||||
|
||||
List<CompletableFuture<Void>> futures = new ArrayList<>();
|
||||
|
Loading…
Reference in New Issue
Block a user