Skip to content

Commit c1fe043

Browse files
committed
CLAP-54 Fix: url 다중 저장
1 parent 9a1e598 commit c1fe043

File tree

8 files changed

+47
-25
lines changed

8 files changed

+47
-25
lines changed

src/main/java/clap/server/adapter/inbound/web/dto/task/CreateTaskRequest.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import jakarta.validation.constraints.NotBlank;
44
import jakarta.validation.constraints.NotNull;
55

6+
import java.util.List;
7+
68
public record CreateTaskRequest(
79
@NotNull
810
Long categoryId,
@@ -11,7 +13,6 @@ public record CreateTaskRequest(
1113
@NotBlank
1214
String title,
1315
String description,
14-
@NotBlank
15-
String fileUrl
16+
List<@NotBlank String> fileUrls
1617
) {
1718
}

src/main/java/clap/server/adapter/outbound/persistense/AttachmentPersistenceAdapter.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package clap.server.adapter.outbound.persistense;
22

3+
import clap.server.adapter.outbound.persistense.entity.task.AttachmentEntity;
34
import clap.server.adapter.outbound.persistense.mapper.AttachmentPersistenceMapper;
45
import clap.server.adapter.outbound.persistense.repository.task.AttachmentRepository;
56
import clap.server.application.port.outbound.task.CommandAttachmentPort;
@@ -8,6 +9,9 @@
89

910
import lombok.RequiredArgsConstructor;
1011

12+
import java.util.List;
13+
import java.util.stream.Collectors;
14+
1115

1216
@PersistenceAdapter
1317
@RequiredArgsConstructor
@@ -21,4 +25,13 @@ public class AttachmentPersistenceAdapter implements CommandAttachmentPort {
2125
public void save(Attachment attachment) {
2226
attachmentRepository.save(attachmentPersistenceMapper.toEntity(attachment));
2327
}
28+
29+
30+
@Override
31+
public void saveAll(List<Attachment> attachments) {
32+
List<AttachmentEntity> attachmentEntities = attachments.stream()
33+
.map(attachmentPersistenceMapper::toEntity)
34+
.collect(Collectors.toList());
35+
attachmentRepository.saveAll(attachmentEntities);
36+
}
2437
}

src/main/java/clap/server/application/TaskService.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import clap.server.adapter.outbound.persistense.entity.task.StatusEntity;
66
import clap.server.adapter.outbound.persistense.mapper.StatusPersistenceMapper;
77
import clap.server.adapter.outbound.persistense.repository.task.StatusRepository;
8+
import clap.server.application.mapper.AttachmentMapper;
89
import clap.server.application.port.inbound.domain.CategoryService;
910
import clap.server.application.port.inbound.domain.MemberService;
1011
import clap.server.application.port.inbound.task.TaskUsecase;
@@ -14,12 +15,13 @@
1415
import clap.server.domain.model.member.Member;
1516
import clap.server.domain.model.task.Attachment;
1617
import clap.server.domain.model.task.Category;
17-
import clap.server.domain.model.task.Status;
1818
import clap.server.domain.model.task.Task;
1919
import lombok.RequiredArgsConstructor;
2020
import org.springframework.transaction.annotation.Transactional;
2121

22-
import static clap.server.application.mapper.AttachmentMapper.toAttachment;
22+
import java.util.List;
23+
24+
import static clap.server.application.mapper.TaskMapper.toCreateTaskResponse;
2325
import static clap.server.application.mapper.TaskMapper.toTask;
2426

2527
@ApplicationService
@@ -45,9 +47,9 @@ public CreateTaskResponse createTask(Long requesterId, CreateTaskRequest createT
4547
Task task = toTask(member, category, createTaskRequest.title(), createTaskRequest.description(), statusPersistenceMapper.toDomain(statusEntity));
4648
Task savedTask = commandTaskPort.save(task);
4749

48-
Attachment attachment = toAttachment(savedTask, createTaskRequest.fileUrl());
49-
commandAttachmentPort.save(attachment);
50+
List<Attachment> attachments = AttachmentMapper.toAttachments(savedTask, createTaskRequest.fileUrls());
51+
commandAttachmentPort.saveAll(attachments);
5052

51-
return new CreateTaskResponse(savedTask.getTaskId(), savedTask.getCategory().getCategoryId(), savedTask.getTitle());
53+
return toCreateTaskResponse(savedTask);
5254
}
5355
}

src/main/java/clap/server/application/mapper/AttachmentMapper.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,23 @@
33
import clap.server.domain.model.task.Attachment;
44
import clap.server.domain.model.task.Task;
55

6+
import java.util.List;
7+
import java.util.stream.Collectors;
8+
69
public class AttachmentMapper {
710
private AttachmentMapper() {
811
throw new IllegalArgumentException();
912
}
1013

11-
public static Attachment toAttachment(Task task, String fileUrl) {
12-
return Attachment.builder()
13-
.task(task)
14-
.fileUrl(fileUrl)
15-
.originalName("파일 예시 이름")
16-
.fileSize("16MB") //TODO: 하드코딩 제거
17-
.build();
14+
public static List<Attachment> toAttachments(Task task, List<String> fileUrls) {
15+
return fileUrls.stream()
16+
.map(fileUrl -> Attachment.builder()
17+
.task(task)
18+
.fileUrl(fileUrl)
19+
.originalName("파일 예시 이름")
20+
.fileSize("16MB") //TODO: 하드코딩 제거
21+
.build())
22+
.collect(Collectors.toList());
1823
}
1924
}
25+

src/main/java/clap/server/application/mapper/TaskMapper.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package clap.server.application.mapper;
22

33

4+
import clap.server.adapter.inbound.web.dto.task.CreateTaskResponse;
45
import clap.server.domain.model.member.Member;
56
import clap.server.domain.model.task.Category;
67
import clap.server.domain.model.task.Status;
@@ -21,4 +22,8 @@ public static Task toTask(Member member, Category category, String title, String
2122
.taskCode("1234") //TODO: 하드코딩 제거, reviewer_id 명시 필요
2223
.build();
2324
}
25+
26+
public static CreateTaskResponse toCreateTaskResponse(Task task) {
27+
return new CreateTaskResponse(task.getTaskId(), task.getCategory().getCategoryId(), task.getTitle());
28+
}
2429
}

src/main/java/clap/server/application/port/outbound/task/CommandAttachmentPort.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22

33
import clap.server.domain.model.task.Attachment;
44

5+
import java.util.List;
56
import java.util.Optional;
67

78
public interface CommandAttachmentPort {
89
void save(Attachment attachment);
10+
11+
void saveAll(List<Attachment> attachments);
12+
913
}

src/main/resources/env.properties

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/main/resources/mysql.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ spring:
3535
hibernate:
3636
dialect: org.hibernate.dialect.MySQLDialect
3737

38-
Glogging:
38+
logging:
3939
level:
4040
ROOT: INFO
41-
org.hibernate: DEBU
41+
org.hibernate: DEBUG
4242
org.hibernate.type.descriptor.sql.BasicBinder: TRACE
4343
org.hibernate.sql: debug
4444
org.hibernate.type: trace

0 commit comments

Comments
 (0)