Skip to content

Commit

Permalink
Merge branch 'feat/group' into feat/#63-add
Browse files Browse the repository at this point in the history
  • Loading branch information
gimhanul authored Mar 30, 2023
2 parents 20873b2 + bf353d0 commit 95e119e
Show file tree
Hide file tree
Showing 8 changed files with 142 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class Member extends BaseTimeEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "group_id")
@Column(name = "member_id")
private Long id;

@ManyToOne(fetch = FetchType.LAZY)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,5 @@
public interface GroupRepository extends CrudRepository<Group, Long> {

Optional<Group> findByGroupName(String name);


List<Group> findAll();
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,35 @@

import com.soogung.simblue.domain.group.presentation.dto.request.JoinGroupRequest;
import com.soogung.simblue.domain.group.service.JoinGroupService;
import com.soogung.simblue.domain.group.presentation.dto.request.GroupRequest;
import com.soogung.simblue.domain.group.presentation.dto.response.GroupListResponse;
import com.soogung.simblue.domain.group.service.CreateGroupService;
import com.soogung.simblue.domain.group.service.QueryGroupService;

import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;

@RestController
@RequestMapping("/group")
@RequiredArgsConstructor
public class GroupController {

private final CreateGroupService createGroupService;
private final QueryGroupService queryGroupService;
private final JoinGroupService joinGroupService;

@PostMapping
public void createGroup(@RequestBody @Valid GroupRequest request) {
createGroupService.execute(request);
}

@GetMapping
public GroupListResponse getGroupList(){
return queryGroupService.execute();
}

@PutMapping("/{id}/add")
public void addMember(@PathVariable Long id,@RequestBody @Valid JoinGroupRequest request) {
joinGroupService.execute(id, request);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.soogung.simblue.domain.group.presentation.dto.request;

import com.soogung.simblue.domain.group.domain.Group;
import com.soogung.simblue.domain.group.domain.type.GroupType;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

@Getter
@AllArgsConstructor
@NoArgsConstructor
public class GroupRequest {

@NotNull
@Size(min = 1, max = 20)
private String name;

@NotNull
private GroupType type;

public Group toEntity() {
return Group.builder()
.name(name)
.type(type)
.build();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.soogung.simblue.domain.group.presentation.dto.response;

import com.soogung.simblue.domain.group.domain.Group;
import com.soogung.simblue.domain.group.domain.type.GroupType;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;

import java.util.List;

@Getter
@AllArgsConstructor
public class GroupListResponse {

private List<GroupResponse> groupList;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.soogung.simblue.domain.group.presentation.dto.response;

import com.soogung.simblue.domain.group.domain.Group;
import com.soogung.simblue.domain.group.domain.type.GroupType;
import lombok.Builder;
import lombok.Getter;

@Getter
@Builder
public class GroupResponse {

private Long id;
private String name;
private GroupType type;

public static GroupResponse of(Group group) {
return GroupResponse.builder()
.id(group.getId())
.name(group.getName())
.type(group.getType())
.build();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.soogung.simblue.domain.group.service;

import com.soogung.simblue.domain.group.domain.Group;
import com.soogung.simblue.domain.group.domain.repository.GroupRepository;
import com.soogung.simblue.domain.group.presentation.dto.request.GroupRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import javax.transaction.Transactional;

@Service
@RequiredArgsConstructor
public class CreateGroupService {

private final GroupRepository groupRepository;

@Transactional
public void execute(GroupRequest request) {
groupRepository.save(request.toEntity());
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.soogung.simblue.domain.group.service;

import com.soogung.simblue.domain.application.presentation.dto.response.ApplicationResponse;
import com.soogung.simblue.domain.group.domain.Group;
import com.soogung.simblue.domain.group.domain.repository.GroupRepository;
import com.soogung.simblue.domain.group.presentation.dto.response.GroupListResponse;
import com.soogung.simblue.domain.group.presentation.dto.response.GroupResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;
import java.util.stream.Collectors;

@Service
@RequiredArgsConstructor
public class QueryGroupService {

private final GroupRepository groupRepository;

@Transactional(readOnly = true)
public GroupListResponse execute(){
return new GroupListResponse(
groupRepository.findAll()
.stream().map(GroupResponse::of).collect(Collectors.toList())
);
}

}

0 comments on commit 95e119e

Please sign in to comment.