-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/chung step4 #11
Conversation
- add @RequestBody
- 루트 폴더 사용 용량 업데이트 메서드와 파일 메타데이터 저장 메서드를 하나의 트랜잭션으로 묶기 위함
- Cast one of the operands of this multiplication operation to a long
>> - Folder 에 있던 Type 을 삭제하였습니다. 테> 블을 통해 폴더와 파일이 식별 되기에 Type으로 한번 더 구분하는 것은 메모리 낭비라 판단 되서 입니다. >> - File 은 기존 File 로 통칭 했던 것에서 이미지, 비디오, 오디오, 도큐먼트 그리고 그외로 분류하였습니다
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
논리 자체는 되게 괜찮은 논리였던 것 같습니다.
온라인으로 설명했던 부분 반영해서 수정하시고, 다음 Step 진행하시면 됩니다~
} | ||
|
||
@GetMapping | ||
@ResponseStatus(HttpStatus.NO_CONTENT) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
statusCode 좀 이상하네요
@Column(nullable = false) | ||
private Long uploaderId; | ||
private Long parentId; | ||
private BigDecimal sizeInBytes; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Long
public void uploadFile(MultipartFile file, Long userId, Long parentId) { | ||
String basePath = folderService.findPathBy(); | ||
@Value("${file.buffer}") | ||
private int bufferSize; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Long
public static FileDeleteRequest of(long fileId, long userId) { | ||
return new FileDeleteRequest(fileId, userId); | ||
} | ||
@NotNull(message = "파일 id는 null 될 수 없습니다") long fileId, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Validation을 넣을거면 @Positive
도 넣는게 좋지 않나 싶어요
- - NotNull -> Positive 로 교체 - 오탈자 수정 mine -> mime
Quality Gate passedIssues Measures |
구현 기능
폴더 요약
폴더 요약에는 다음 정보가 담겨 있습니다
루트 폴더 요약
루트 폴더 요약에는 다음 정보가 담겨 있습니다
루트 폴더를 만든 이유
루트 폴더 메타데이터
필드 설명
id : pk
origianlFolderName : 사용자가 루트 폴더에 설정한 이름입니다
storedFolderName : 서버에 저장될 루트 폴더의 이름입니다 UUID + 날짜로 만들어집니다.
availableSpace : 가용 공간입니다. 현재 프로젝트에선, 2GB로 고정되어있습니다.
usedSpace : 폴더에 업로드된 파일 총 용량입니다
메서드 설명
storedName : 서버에 저장될 폴더 명을 생성합니다. UUID + 날짜로 생성합니다
increaseUsedSpace : 사용 용량을 증가 시킵니다. 루트 폴더 하위에 파일 업로드 과업이 발생할 시 호출 됩니다. 가용 용량을 초과하는 업로드가 발생하게 될 시, EXCEEDED_CAPACITY(HttpStatus.INSUFFICIENT_STORAGE, "더 이상 업로드 할 수 없습니다") 를 던집니다
decreaseUsedSpace : 사용 용량을 줄입니다. 파일 및 폴더 삭제 과업이 발생할 시 호출됩니다. 사용 용량 보다 더 많이 줄이게 될 경우 INVALID_OPERATION(HttpStatus.BAD_REQUEST, "사용 중인 공간보다 많은 공간은 해제할 수 없습니다")를 던집니다
calRemainSpace : 잔여 용량을 계산 합니다. 루트 폴더 요약 API 요청 시 호출됩니다.
인덱스
조회 로직에 인덱스를 걸었습니다
기존 코드 변경 사항
MetadataType 제거
파일, 폴더를 구분 하던 MetadataType을 제거 했습니다. DBMS 에서 파일과 폴더는 서로 다른 테이블에서 관리되기 때문에, 별도로 구분을 더 할 필요는 없다는 판단이였습니다.
MINE 타입 도입 (FileType)
파일을 비디오, 오디오, 도큐먼트, 이미지, 그 외로 분류 하였습니다.