Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[최종점검] 스터디 과제 제출 #2

Open
wants to merge 19 commits into
base: develop
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
be318b2
[FEAT] 서비스 단에서 도메인 로직 분리
sung-silver Mar 21, 2024
6e2ec20
[STYLE] enum 위치 도메인 아래로 변경
sung-silver Mar 21, 2024
ad8387c
[DOMAIN] AgeEnumTest 작성
sung-silver Mar 21, 2024
6154145
[DOMAIN] Result 엔티티에서 getTestDateToString 함수 테스트 작성
sung-silver Mar 21, 2024
86e90bf
[REFACTOR] saveMember 리팩터링, repository에서 명시하지 않아도 되는 메서드 삭제
sung-silver Mar 26, 2024
093d3e8
[FEAT] RestDoc 설정 & 확인
sung-silver Mar 26, 2024
a9bc1ca
[REFACOTR] request, response에서 DTO 키워드 제거
sung-silver Mar 26, 2024
02b592d
[FIX] MemberControllerTest initializeController 위치 수정
sung-silver Mar 26, 2024
bbde1c6
[FEAT] QuestionControllerTest 작성
sung-silver Mar 26, 2024
36115b4
[FEAT] ResultControllerTest 구현
sung-silver Mar 26, 2024
92b5eea
[FEAT] MemberJpaRepositoryTest 테스트코드 작성
sung-silver Mar 26, 2024
f2c0405
[FEAT] ResultJpaRepositoryTest 구현
sung-silver Mar 27, 2024
015bdbc
[ADD] questionJpaRepostiory에 대한 tearDown 추가
sung-silver Mar 27, 2024
4a1e0d3
[FEAT] ResultJpaRepositoryTest 구현
sung-silver Mar 27, 2024
5ef8081
[DEL] 안쓰는 주석 삭제
sung-silver Mar 27, 2024
0d0a196
[MODIFY] AgeEnumTest 각 나이 경계값을 기준으로 테스트 하도록 수정
sung-silver Mar 27, 2024
9285048
[FEAT] MemberServiceTest 구현
sung-silver Mar 27, 2024
cea44a2
[FEAT] ResultServiceTest 구현
sung-silver Mar 27, 2024
ee9e70f
[FEAT] restdoc .adoc 파일 모두 만들기
sung-silver Mar 27, 2024
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
Prev Previous commit
Next Next commit
[REFACTOR] saveMember 리팩터링, repository에서 명시하지 않아도 되는 메서드 삭제
sung-silver committed Mar 26, 2024

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
commit 86e90bf4060e423aa83fbc1f720220dc244f9d4e
2 changes: 2 additions & 0 deletions howoldareu_clone/build.gradle
Original file line number Diff line number Diff line change
@@ -28,6 +28,8 @@ dependencies {
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.restdocs:spring-restdocs-mockmvc'
testImplementation 'org.springframework.restdocs:spring-restdocs-asciidoctor'
}

tasks.named('test') {
Original file line number Diff line number Diff line change
@@ -9,16 +9,16 @@
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import static com.sopt.Server.exception.Success.CREATE_MEMBER_SUCCESS;

@RestController
@RequiredArgsConstructor
public class MemberController {

private final MemberService memberService;

@PostMapping("/member")
public ApiResponse<MemberGetResponse> saveMember(@RequestBody MemberPostRequest request) {

ApiResponse<MemberGetResponse> response = memberService.saveMember(request.nickName(), request.age());
return response;
return ApiResponse.success(CREATE_MEMBER_SUCCESS, memberService.saveMember(request));
}
}
Original file line number Diff line number Diff line change
@@ -14,7 +14,7 @@ public class Answer {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long answerId;

@ManyToOne
@ManyToOne(fetch = FetchType.LAZY)
private Question question;

private boolean answerType;
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
package com.sopt.Server.repository;

import com.sopt.Server.domain.Member;
import jakarta.persistence.EntityNotFoundException;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

public interface MemberJpaRepository extends JpaRepository<Member, Long> {
Optional<Member> findByName(String name);
default Member findByNameOrThrow(String name) {
return findByName(name)
.orElseThrow(() ->
new EntityNotFoundException("해당 이름의 회원이 존재하지 않습니다."));
}
}
Original file line number Diff line number Diff line change
@@ -7,6 +7,4 @@
import java.util.Optional;

public interface QuestionJpaRepository extends JpaRepository<Question, Long>{
List<Question> findAll();
Optional<Question> findById(Long id);
}
Original file line number Diff line number Diff line change
@@ -6,7 +6,5 @@
import java.util.List;

public interface ResultJpaRepository extends JpaRepository<Result, Long>{
Result save(Result result);

List<Result> findAllByMemberIdOrderByIdDesc(Long memberId);
}
Original file line number Diff line number Diff line change
@@ -1,16 +1,14 @@
package com.sopt.Server.service;

import com.sopt.Server.common.ApiResponse;
import com.sopt.Server.controller.request.MemberPostRequest;
import com.sopt.Server.controller.response.MemberGetResponse;
import com.sopt.Server.domain.Member;
import com.sopt.Server.exception.Success;
import com.sopt.Server.repository.MemberJpaRepository;
import jakarta.persistence.EntityNotFoundException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Optional;

@Service
@RequiredArgsConstructor
@Transactional(readOnly = true)
@@ -19,14 +17,17 @@ public class MemberService {
private final MemberJpaRepository memberJpaRepository;

@Transactional
public ApiResponse<MemberGetResponse> saveMember(String nickName, int age) {
Member newMember = Member.builder().name(nickName).realAge(age).build();
Member member = memberJpaRepository.findByName(nickName).orElse(null);//null이면
if(member != null)//있다면
return ApiResponse.success(Success.GET_MEMBER_SUCCESS, MemberGetResponse.of(member));
else {
public MemberGetResponse saveMember(MemberPostRequest request) {
try {
Member member = memberJpaRepository.findByNameOrThrow(request.nickName());
return MemberGetResponse.of(member);
} catch (EntityNotFoundException e) {
Member newMember = Member.builder()
.name(request.nickName())
.realAge(request.age())
.build();
memberJpaRepository.save(newMember);
return MemberGetResponse.of(newMember);
}
return ApiResponse.success(Success.CREATE_MEMBER_SUCCESS, MemberGetResponse.of(newMember));
}
}