Skip to content

Commit 1a4bbeb

Browse files
authored
Merge pull request #9 from team-moodit/MOODIT-33-파일-정보-DB-저장-로직-구현
feat: 파일 메타데이터 저장을 위한 FileEntity 및 JpaRepository 추가
2 parents 849189a + f417f90 commit 1a4bbeb

5 files changed

Lines changed: 69 additions & 5 deletions

File tree

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.team.moodit.storage.db.core;
2+
3+
import jakarta.persistence.GeneratedValue;
4+
import jakarta.persistence.GenerationType;
5+
import jakarta.persistence.Id;
6+
import jakarta.persistence.MappedSuperclass;
7+
import lombok.Getter;
8+
9+
@Getter
10+
@MappedSuperclass
11+
abstract public class BaseIdEntity {
12+
@Id
13+
@GeneratedValue(strategy = GenerationType.IDENTITY)
14+
private Long id;
15+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.team.moodit.storage.db.core;
2+
3+
import jakarta.persistence.Entity;
4+
import jakarta.persistence.Table;
5+
import java.time.LocalDateTime;
6+
import lombok.AccessLevel;
7+
import lombok.AllArgsConstructor;
8+
import lombok.Getter;
9+
import lombok.NoArgsConstructor;
10+
import org.hibernate.annotations.CreationTimestamp;
11+
12+
@Getter
13+
@Entity
14+
@Table(name = "file")
15+
@AllArgsConstructor
16+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
17+
public class FileEntity extends BaseIdEntity {
18+
private Long userId;
19+
private String objectKey;
20+
private String originalName;
21+
private String contentType;
22+
private Long size;
23+
24+
public FileEntity(Long userId, String objectKey, String originalName, String contentType, Long size) {
25+
this.userId = userId;
26+
this.objectKey = objectKey;
27+
this.originalName = originalName;
28+
this.contentType = contentType;
29+
this.size = size;
30+
}
31+
32+
@CreationTimestamp
33+
private LocalDateTime createdAt;
34+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package com.team.moodit.storage.db.core;
2+
3+
import org.springframework.data.jpa.repository.JpaRepository;
4+
5+
public interface FileRepository extends JpaRepository<FileEntity, Long> {
6+
}

src/main/java/com/team/moodit/storage/db/s3/S3Uploader.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package com.team.moodit.storage.db.s3;
22

3-
import com.team.moodit.support.error.ApiException;
4-
import com.team.moodit.support.error.ErrorType;
53
import java.io.IOException;
64
import lombok.RequiredArgsConstructor;
75
import lombok.extern.slf4j.Slf4j;

src/main/java/com/team/moodit/support/file/FileUploader.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.team.moodit.support.file;
22

3+
import com.team.moodit.storage.db.core.FileEntity;
4+
import com.team.moodit.storage.db.core.FileRepository;
35
import com.team.moodit.storage.db.s3.S3Uploader;
46
import com.team.moodit.support.error.ApiException;
57
import com.team.moodit.support.error.ErrorType;
@@ -16,6 +18,7 @@
1618
@RequiredArgsConstructor
1719
public class FileUploader {
1820
private final S3Uploader s3Uploader;
21+
private final FileRepository fileRepository;
1922

2023
@Value("${storage.s3.endpoint}") private String endpoint;
2124
@Value("${storage.s3.bucket}") private String bucket;
@@ -24,13 +27,21 @@ public UploadResult upload(Long userId, MultipartFile file) {
2427
try {
2528
String objectKey = uploadToS3(file);
2629

27-
// TODO: FileEntity 등 저장 로직 추가
30+
FileEntity savedFile = fileRepository.save(
31+
new FileEntity(
32+
userId,
33+
objectKey,
34+
file.getOriginalFilename(),
35+
file.getContentType(),
36+
file.getSize()
37+
)
38+
);
2839

2940
return new UploadResult(
30-
1L,
41+
savedFile.getId(),
3142
endpoint + "/" + bucket + "/" + objectKey
3243
);
33-
} catch (IOException e) {
44+
} catch (Exception e) {
3445
log.error("[FileUploader] userId: {}, filename: {}. size: {} bytes, message: {}", userId, file.getOriginalFilename(), file.getSize(), e.getMessage(), e);
3546
throw new ApiException(ErrorType.FILE_UPLOADING_FAILED);
3647
}

0 commit comments

Comments
 (0)