Skip to content

Conversation

@namgigun
Copy link
Collaborator

📌 개요

  • S3를 활용한 파일 업로드 및 관리 기능(업로드, 조회, 수정, 삭제)을 구현하고,
    테스트 환경에서도 안정적으로 동작할 수 있도록 S3 Mock 기반 테스트 인프라를 구축했습니다.

🔨 작업 내용

✅ 테스트 인프라 구축

  • S3MockConfig 추가
    → 테스트 환경에서 가짜 S3 클라이언트를 사용하도록 설정
  • Test용 AWS 데이터 설정
    application-test.ymlbucket 이름, region 등 mock 데이터 구성

📁 파일 업로드 및 관리 기능 구현

업로드

  • S3에 파일(오브젝트) 업로드
  • 업로드된 파일 정보를 기반으로 FileAttachment, AttachmentMapping 엔티티 생성 및 저장

조회

  • DB에서 파일 정보를 조회 후, 해당 S3 오브젝트의 publicURL 반환

수정

  • 새로운 파일(오브젝트)을 S3에 업로드 후, 기존 publicURL을 새 URL로 갱신
  • 이전 파일(오브젝트)은 S3에서 제거

삭제

  • DB에서 파일 정보 조회 후, 해당 S3 오브젝트 및 관련 DB 데이터 삭제

🔗 관련 이슈

Closes #208

📝 참고 사항

  • 유효성 추가
  • 현재는 단일 파일 업로드만 가능, 다중 파일 업로드 기능 추가 예정

✅ 체크리스트

  • 기능 동작 확인
  • 테스트 코드 작성
  • 문서/주석 추가 및 최신화

@github-actions github-actions bot changed the title Feat: 파일 업로드 기능 구현 Feat: 파일 업로드 기능 구현 (#208) Oct 10, 2025
- S3MockConfig(가짜 S3 클라이언트) 추가
- Test용 AWS 데이터 설정 (bucket 이름, 리전)
- 기존 : FileRepository -> 변경 : 엔티티 별 Repository 생성 (AttachmentMappingRepository, FileAttachmentRepository)
- EntityType과 entityId를 인자로 AttachmentMapping을 통해 파일 정보를 탐색하여 파일의 URL을 반환.
문제
- AttachmentMapping의 attachment_id 필드 값 null

해결
- AttachmentMapping 생성 시, 추가로 fileAttachment를 인자로 받아서 주입
로직
- 해당 파일에 대한 정보를 불러와 파일 수정 권한을 체크
- 새로운 파일을 S3 업로드
- S3 안에 있는 기존 파일을 삭제
- 새로운 파일 URL을 fileAttachment에 등록
로직
- EntityType, entityId를 통해 연관된 파일 정보를 불러온다.
- 파일의 접근 권한 체크
- 접근 권한이 있다면, 해당 파일의 S3 오브젝트를 삭제
- DB에 저장된 파일 정보도 모두 제거한다.
@namgigun namgigun merged commit a9832c8 into dev Oct 10, 2025
3 checks passed
@github-actions github-actions bot deleted the Feat/208 branch October 10, 2025 00:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants