Skip to content

Commit

Permalink
feat: Member API 구현
Browse files Browse the repository at this point in the history
  • Loading branch information
HJ-Rich committed Sep 25, 2022
1 parent 3e3da4d commit 4292ddb
Show file tree
Hide file tree
Showing 7 changed files with 139 additions and 0 deletions.
28 changes: 28 additions & 0 deletions src/main/java/com/example/hello/member/MemberController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.example.hello.member;

import com.example.hello.member.domain.Member;
import com.example.hello.member.dto.MemberResponse;
import com.example.hello.member.service.MemberService;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("/api/members")
@RestController
public class MemberController {

private final MemberService memberService;

public MemberController(final MemberService memberService) {
this.memberService = memberService;
}

@GetMapping("/{memberId}")
public ResponseEntity<MemberResponse> findById(@PathVariable Long memberId) {
Member member = memberService.findById(memberId);
MemberResponse memberResponse = MemberResponse.from(member);
return ResponseEntity.ok(memberResponse);
}
}
26 changes: 26 additions & 0 deletions src/main/java/com/example/hello/member/domain/Member.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.example.hello.member.domain;

public class Member {

private final Long id;
private final String name;
private final String imageUrl;

public Member(final Long id, final String name, final String imageUrl) {
this.id = id;
this.name = name;
this.imageUrl = imageUrl;
}

public Long getId() {
return id;
}

public String getName() {
return name;
}

public String getImageUrl() {
return imageUrl;
}
}
25 changes: 25 additions & 0 deletions src/main/java/com/example/hello/member/dto/MemberResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package com.example.hello.member.dto;


import com.example.hello.member.domain.Member;

public class MemberResponse {

private final Long id;
private final String name;
private final String imageUrl;

public MemberResponse(final Long id, final String name, final String imageUrl) {
this.id = id;
this.name = name;
this.imageUrl = imageUrl;
}

public static MemberResponse from(final Member member) {
return new MemberResponse(
member.getId(),
member.getName(),
member.getImageUrl()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.example.hello.member.repository;

import com.example.hello.member.domain.Member;
import java.util.Optional;

public interface MemberRepository {

Optional<Member> findById(Long memberId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.example.hello.member.repository;

import com.example.hello.member.domain.Member;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import org.springframework.stereotype.Repository;

@Repository
public class MockMemberRepository implements MemberRepository {

private final Map<Long, Member> members;

public MockMemberRepository() {
this.members = new HashMap<>();
}

@Override
public Optional<Member> findById(final Long memberId) {
return Optional.ofNullable(members.get(memberId));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.example.hello.member.service;

import com.example.hello.member.domain.Member;

public interface MemberService {

Member findById(Long memberId);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.example.hello.member.service;

import com.example.hello.member.domain.Member;
import com.example.hello.member.repository.MemberRepository;
import org.springframework.stereotype.Service;

@Service
public class MockMemberService implements MemberService {

private final MemberRepository memberRepository;

public MockMemberService(final MemberRepository memberRepository) {
this.memberRepository = memberRepository;
}

@Override
public Member findById(final Long memberId) {
return memberRepository.findById(memberId)
.orElseThrow(() -> new IllegalArgumentException("Member does not exist"));
}
}

0 comments on commit 4292ddb

Please sign in to comment.