Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions src/main/java/flipnote/group/adapter/in/web/GroupController.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package flipnote.group.adapter.in.web;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
Expand All @@ -13,10 +14,13 @@
import flipnote.group.api.dto.request.CreateGroupRequestDto;
import flipnote.group.api.dto.response.ChangeGroupResponseDto;
import flipnote.group.api.dto.response.CreateGroupResponseDto;
import flipnote.group.api.dto.response.FindGroupResponseDto;
import flipnote.group.application.port.in.ChangeGroupUseCase;
import flipnote.group.application.port.in.CreateGroupUseCase;
import flipnote.group.application.port.in.FindGroupUseCase;
import flipnote.group.application.port.in.command.ChangeGroupCommand;
import flipnote.group.application.port.in.command.CreateGroupCommand;
import flipnote.group.application.port.in.command.FindGroupCommand;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;

Expand All @@ -27,6 +31,7 @@ public class GroupController {

private final CreateGroupUseCase createGroupUseCase;
private final ChangeGroupUseCase changeGroupUseCase;
private final FindGroupUseCase findGroupUseCase;

/**
* 그룹 생성 API
Expand Down Expand Up @@ -86,4 +91,24 @@ public ResponseEntity<ChangeGroupResponseDto> changeGroup(
return ResponseEntity.ok(res);
}

/**
* 그룹 상세 조회 API
* @param userId
* @param groupId
* @return
*/
@GetMapping("/{groupId}")
public ResponseEntity<FindGroupResponseDto> findGroup(
@RequestHeader("X-USER-ID") Long userId,
@PathVariable("groupId") Long groupId) {

FindGroupCommand cmd = new FindGroupCommand(userId, groupId);

var result = findGroupUseCase.findGroup(cmd);

FindGroupResponseDto res = FindGroupResponseDto.from(result);

return ResponseEntity.ok(res);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -35,29 +35,4 @@ public Group findById(Long id) {
);
return GroupMapper.toDomain(groupEntity);
}

/**
* 그룹 수정
* @param group
*/
@Override
public Group update(Group group) {

GroupEntity groupEntity = groupRepository.findById(group.getId()).orElseThrow(
() -> new IllegalArgumentException("group not Exist")
);

groupEntity.change(
group.getName(),
group.getCategory(),
group.getDescription(),
group.getJoinPolicy(),
group.getVisibility(),
group.getMaxMember(),
group.getImageRefId()
);

return GroupMapper.toDomain(groupEntity);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
import flipnote.group.domain.model.group.Visibility;

public record ChangeGroupResponseDto(
Long groupId,

String name,

Category category,
Expand All @@ -32,6 +34,7 @@ public static ChangeGroupResponseDto from(ChangeGroupResult result) {
Group group = result.group();

return new ChangeGroupResponseDto(
group.getId(),
group.getName(),
group.getCategory(),
group.getDescription(),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package flipnote.group.api.dto.response;

import java.time.LocalDateTime;

import flipnote.group.application.port.in.result.FindGroupResult;
import flipnote.group.domain.model.group.Category;
import flipnote.group.domain.model.group.Group;
import flipnote.group.domain.model.group.JoinPolicy;
import flipnote.group.domain.model.group.Visibility;

public record FindGroupResponseDto(
Long groupId,

String name,

Category category,

String description,

JoinPolicy joinPolicy,

Visibility visibility,

Integer maxMember,

Long imageRefId,

LocalDateTime createdAt,

LocalDateTime modifiedAt
) {
public static FindGroupResponseDto from(FindGroupResult result) {

Group group = result.group();

return new FindGroupResponseDto(
group.getId(),
group.getName(),
group.getCategory(),
group.getDescription(),
group.getJoinPolicy(),
group.getVisibility(),
group.getMaxMember(),
group.getImageRefId(),
group.getCreatedAt(),
group.getModifiedAt()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package flipnote.group.application.port.in;

import flipnote.group.application.port.in.command.FindGroupCommand;
import flipnote.group.application.port.in.result.FindGroupResult;

public interface FindGroupUseCase {
FindGroupResult findGroup(FindGroupCommand cmd);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package flipnote.group.application.port.in.command;

public record FindGroupCommand(
Long userId,
Long groupId
) {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package flipnote.group.application.port.in.result;

import flipnote.group.domain.model.group.Group;

public record FindGroupResult(
Group group
) { }
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,4 @@ public interface GroupRepositoryPort {
Long saveNewGroup(Group group);

Group findById(Long id);

Group update(Group group);
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@
import flipnote.group.application.port.in.ChangeGroupUseCase;
import flipnote.group.application.port.in.command.ChangeGroupCommand;
import flipnote.group.application.port.in.result.ChangeGroupResult;
import flipnote.group.application.port.out.GroupRepositoryPort;
import flipnote.group.domain.model.group.Group;
import flipnote.group.infrastructure.persistence.jpa.GroupRepository;
import lombok.RequiredArgsConstructor;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package flipnote.group.application.service;

import java.util.Optional;

import org.springframework.stereotype.Service;

import flipnote.group.adapter.out.entity.GroupEntity;
import flipnote.group.adapter.out.persistence.mapper.GroupMapper;
import flipnote.group.application.port.in.FindGroupUseCase;
import flipnote.group.application.port.in.command.FindGroupCommand;
import flipnote.group.application.port.in.result.FindGroupResult;
import flipnote.group.application.port.out.GroupRepositoryPort;
import flipnote.group.domain.model.group.Group;
import lombok.RequiredArgsConstructor;

@Service
@RequiredArgsConstructor
public class FindGroupService implements FindGroupUseCase {

private final GroupRepositoryPort groupRepository;

/**
* 하나의 그룹에 대한 정보 조회
* @param cmd
* @return
*/
@Override
public FindGroupResult findGroup(FindGroupCommand cmd) {

Group group = groupRepository.findById(cmd.groupId());

return new FindGroupResult(group);
}
}