Skip to content

Commit 03a5fa3

Browse files
Fix: 도메인을 엔티티와 합침
1 parent c96dcd1 commit 03a5fa3

13 files changed

Lines changed: 111 additions & 264 deletions

File tree

src/main/java/flipnote/group/adapter/out/entity/GroupEntity.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,4 +83,52 @@ public void change(
8383
this.maxMember = cmd.maxMember();
8484
this.imageRefId = cmd.imageRefId();
8585
}
86+
87+
/**
88+
* 신규로 그룹 생성
89+
* @param cmd
90+
* @return
91+
*/
92+
public static GroupEntity create(CreateGroupCommand cmd) {
93+
validate(cmd);
94+
95+
return GroupEntity.builder()
96+
.name(cmd.name())
97+
.category(cmd.category())
98+
.description(cmd.description())
99+
.joinPolicy(cmd.joinPolicy())
100+
.visibility(cmd.visibility())
101+
.maxMember(cmd.maxMember())
102+
.imageRefId(cmd.imageRefId())
103+
.memberCount(0)
104+
.build();
105+
}
106+
107+
/**
108+
* 파라미터 검증
109+
* @param cmd
110+
*/
111+
private static void validate(CreateGroupCommand cmd) {
112+
if (cmd.name() == null || cmd.name().isBlank()) {
113+
throw new IllegalArgumentException("name required");
114+
}
115+
if (cmd.maxMember() < 1 || cmd.maxMember() > 100) {
116+
throw new IllegalArgumentException("maxMember invalid");
117+
}
118+
if (cmd.category() == null) {
119+
throw new IllegalArgumentException("category required");
120+
}
121+
if (cmd.joinPolicy() == null) {
122+
throw new IllegalArgumentException("join required");
123+
}
124+
if (cmd.visibility() == null) {
125+
throw new IllegalArgumentException("visibility required");
126+
}
127+
if (cmd.description() == null || cmd.description().isBlank()) {
128+
throw new IllegalArgumentException("description required");
129+
}
130+
if (cmd.name().length() > 50) {
131+
throw new IllegalArgumentException("name too long");
132+
}
133+
}
86134
}

src/main/java/flipnote/group/adapter/out/persistence/GroupMemberRepositoryAdapter.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,11 @@ public class GroupMemberRepositoryAdapter implements GroupMemberRepositoryPort {
2121

2222
/**
2323
* 그룹 멤버 저장
24-
* @param groupId
25-
* @param userId
24+
* @param groupMember
2625
*/
2726
@Override
28-
public void save(Long groupId, Long userId, RoleEntity role) {
29-
groupMemberRepository.save(GroupMemberMapper.create(groupId, userId, role));
27+
public void save(GroupMemberEntity groupMember) {
28+
groupMemberRepository.save(groupMember);
3029
}
3130

3231
/**

src/main/java/flipnote/group/adapter/out/persistence/GroupRepositoryAdapter.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
package flipnote.group.adapter.out.persistence;
22

3-
import java.util.Optional;
43

54
import org.springframework.stereotype.Repository;
65

76
import flipnote.group.adapter.out.entity.GroupEntity;
87
import flipnote.group.adapter.out.persistence.mapper.GroupMapper;
98
import flipnote.group.application.port.out.GroupRepositoryPort;
10-
import flipnote.group.domain.model.group.Group;
119
import flipnote.group.infrastructure.persistence.jpa.GroupRepository;
1210
import lombok.RequiredArgsConstructor;
1311

@@ -23,9 +21,8 @@ public class GroupRepositoryAdapter implements GroupRepositoryPort {
2321
* @return
2422
*/
2523
@Override
26-
public Long saveNewGroup(Group group) {
27-
GroupEntity entity = GroupMapper.createNewEntity(group);
28-
return groupRepository.save(entity).getId();
24+
public Long saveNewGroup(GroupEntity group) {
25+
return groupRepository.save(group).getId();
2926
}
3027

3128
@Override

src/main/java/flipnote/group/adapter/out/persistence/mapper/GroupMapper.java

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

src/main/java/flipnote/group/adapter/out/persistence/mapper/GroupMemberMapper.java

Lines changed: 0 additions & 57 deletions
This file was deleted.
Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,38 @@
11
package flipnote.group.application.port.in.result;
22

3-
import flipnote.group.domain.model.group.Group;
3+
import java.time.LocalDateTime;
4+
5+
import flipnote.group.adapter.out.entity.GroupEntity;
6+
import flipnote.group.domain.model.group.Category;
7+
import flipnote.group.domain.model.group.JoinPolicy;
8+
import flipnote.group.domain.model.group.Visibility;
49

510
public record ChangeGroupResult(
6-
Group group
11+
String name,
12+
Category category,
13+
String description,
14+
JoinPolicy joinPolicy,
15+
Visibility visibility,
16+
Integer maxMember,
17+
String imageUrl,
18+
Long imageRefId,
19+
Integer memberCount,
20+
LocalDateTime createdAt,
21+
LocalDateTime modifiedAt
722
) {
23+
public static ChangeGroupResult of(GroupEntity group, String imageUrl) {
24+
return new ChangeGroupResult(
25+
group.getName(),
26+
group.getCategory(),
27+
group.getDescription(),
28+
group.getJoinPolicy(),
29+
group.getVisibility(),
30+
group.getMaxMember(),
31+
imageUrl,
32+
group.getImageRefId(),
33+
group.getMemberCount(),
34+
group.getCreatedAt(),
35+
group.getModifiedAt()
36+
);
37+
}
838
}

src/main/java/flipnote/group/application/port/in/result/CreateGroupResult.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,8 @@
22

33
public record CreateGroupResult(
44
Long groupId
5-
) {}
5+
) {
6+
public static CreateGroupResult of(Long groupId) {
7+
return new CreateGroupResult(groupId);
8+
}
9+
}

src/main/java/flipnote/group/application/port/out/GroupMemberRepositoryPort.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
import java.util.List;
44

5-
import flipnote.group.adapter.out.entity.RoleEntity;
5+
import flipnote.group.adapter.out.entity.GroupMemberEntity;
66
import flipnote.group.domain.model.member.MemberInfo;
77

88
public interface GroupMemberRepositoryPort {
9-
void save(Long groupId, Long userId, RoleEntity role);
9+
void save(GroupMemberEntity groupMember);
1010

1111
void existsUserInGroup(Long groupId, Long userId);
1212

src/main/java/flipnote/group/application/port/out/GroupRepositoryPort.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package flipnote.group.application.port.out;
22

3-
import flipnote.group.domain.model.group.Group;
3+
import flipnote.group.adapter.out.entity.GroupEntity;
44

55
public interface GroupRepositoryPort {
6-
Long saveNewGroup(Group group);
6+
Long saveNewGroup(GroupEntity group);
77

88
Group findById(Long id);
99

src/main/java/flipnote/group/application/service/ChangeGroupService.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import flipnote.group.adapter.out.entity.GroupEntity;
77
import flipnote.group.adapter.out.persistence.GroupRoleRepositoryAdapter;
8-
import flipnote.group.adapter.out.persistence.mapper.GroupMapper;
98
import flipnote.group.application.port.in.ChangeGroupUseCase;
109
import flipnote.group.application.port.in.command.ChangeGroupCommand;
1110
import flipnote.group.application.port.in.result.ChangeGroupResult;
@@ -42,6 +41,8 @@ public ChangeGroupResult change(ChangeGroupCommand cmd) {
4241

4342
entity.change(cmd);
4443

45-
return new ChangeGroupResult(GroupMapper.toDomain(entity));
44+
String imageUrl = "dummy";
45+
46+
return ChangeGroupResult.of(entity, imageUrl);
4647
}
4748
}

0 commit comments

Comments
 (0)