📋 개요
기존 파일 관리 기능에 S3와 DB에서 파일을 완전히 삭제하는 기능과, 업로드된 파일의 내용을 조회하는 기능을 추가합니다.
📝 상세 설명
As-Is (문제 상황)
- 파일 생성, 수정, 목록 조회 기능만 존재했습니다.
- 사용자가 더 이상 필요 없는 파일을 삭제하거나, 업로드된 파일의 내용을 에디터 등으로 불러오기 위해 확인할 방법이 없었습니다.
To-Be (해결 방안)
- 파일 내용 조회:
- 사용자가 본인 소유의 파일(
fileUUID)을 요청하면, 서버는 S3에서 해당 파일의 내용을 읽어와 텍스트로 반환하는 API를 구현합니다.
- 파일 삭제:
- 사용자가 본인 소유의 파일(
fileUUID)에 대한 삭제를 요청하면, 서버는 S3 버킷에서 실제 파일을 삭제하고, 데이터베이스의 파일 메타데이터(CodeFile 레코드)도 함께 삭제하는 API를 구현합니다.
- 권한 검사:
- 모든 신규 기능에는 요청을 보낸 사용자가 파일의 실제 소유주인지 확인하는 권한 검사 로직을 포함하여, 다른 사람의 파일을 임의로 조회하거나 삭제할 수 없도록 합니다.
👩💻 변경/추가될 엔드포인트
GET /api/file/{fileUUID}/content: 특정 파일의 내용을 조회합니다.
DELETE /api/file/{fileUUID}: 특정 파일을 삭제합니다.
✅ 참고 사항
S3Uploader에 S3 객체를 조회(getObjectAsBytes)하고 삭제(deleteObject)하는 로직을 추가했습니다.
FileService에 소유주를 확인하는 중복 로직을 private 헬퍼 메소드로 분리하여 코드 재사용성을 높였습니다.
📋 개요
기존 파일 관리 기능에 S3와 DB에서 파일을 완전히 삭제하는 기능과, 업로드된 파일의 내용을 조회하는 기능을 추가합니다.
📝 상세 설명
As-Is (문제 상황)
To-Be (해결 방안)
fileUUID)을 요청하면, 서버는 S3에서 해당 파일의 내용을 읽어와 텍스트로 반환하는 API를 구현합니다.fileUUID)에 대한 삭제를 요청하면, 서버는 S3 버킷에서 실제 파일을 삭제하고, 데이터베이스의 파일 메타데이터(CodeFile레코드)도 함께 삭제하는 API를 구현합니다.👩💻 변경/추가될 엔드포인트
GET /api/file/{fileUUID}/content: 특정 파일의 내용을 조회합니다.DELETE /api/file/{fileUUID}: 특정 파일을 삭제합니다.✅ 참고 사항
S3Uploader에 S3 객체를 조회(getObjectAsBytes)하고 삭제(deleteObject)하는 로직을 추가했습니다.FileService에 소유주를 확인하는 중복 로직을private헬퍼 메소드로 분리하여 코드 재사용성을 높였습니다.