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

[Spring Data JPA] 한경준 미션 제출합니다. #53

Open
wants to merge 22 commits into
base: hkjbrian
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
22a3c65
step1 : 쿠키 생성, 응답에 쿠키 포함
Jun 25, 2024
10e758b
step1 : 인증 정보 조회 API 구현
Jun 25, 2024
96dcea9
step1 : 인증 정보 조회 API 구현
Jun 25, 2024
ec00aac
step1 : 예외처리 추가, 객체 이름 변경 , authservice 메서드 중 일부 private으로 변경
Jun 30, 2024
676db68
step1 : 예외처리 추가, 객체 이름 변경 , authservice 메서드 중 일부 private으로 변경
Jun 30, 2024
c2396a4
step2 : LoginMemberArgumentResolver 추가( @Authentication, @AuthWebConf…
Jun 30, 2024
b9837ba
step2 : ReseravtionController에 name이 들어오면 해당 name을 활용하도록 변경
Jun 30, 2024
4a649d6
step3 : 미션 추가
Jun 30, 2024
5ee087f
step3 : AdminInterceptor 추가
Jun 30, 2024
c14f2c2
Merge pull request #1 from hkjbrian/step3
hkjbrian Jul 1, 2024
b43760d
step4 : build.gradle 설정 변경, 학습 테스트 추가, getTime 메서드 추가, TimeRepository 생성
Jul 1, 2024
4d35bbf
step4 : JPA 관련 설정 추가
Jul 1, 2024
713484f
step4 : 엔티티 설정,Repository 생성, Dao 삭제
Jul 1, 2024
db11a85
step4 : Dao 활용 부분 Repository 활용으로 수정
Jul 1, 2024
8b4bbe4
step4 : requestToDao 추가, SQL 예약어 value -> timeValue 변경
Jul 1, 2024
d407a43
step5 : MyReservationsResponse 추가, 예약 조회 기능
Jul 2, 2024
20bab7a
step6 : 미션 추가, Waiting 패키지 추가
Jul 2, 2024
8c5ea3f
step6 : DB 설정 변경, sql 수정, TIME 메서드 삭제
Jul 10, 2024
03ee991
step6 : DB 설정 변경, sql 수정, TIME 메서드 삭제
Jul 10, 2024
8688c21
step6 : 예약 대기 생성, JpaRepository 상속하도록 수정
Jul 12, 2024
95977d6
step6 : 중복 예약 방지, 예약 목록 조회 구현
Jul 12, 2024
e2e05a3
step6 : 예약 대기 상태 확인, 삭제 기능 구현
Jul 12, 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
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ repositories {
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

implementation 'dev.akkinoc.spring.boot:logback-access-spring-boot-starter:4.0.0'

Expand Down
11 changes: 5 additions & 6 deletions src/main/java/roomescape/auth/AdminInterceptor.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,25 @@
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.SpringServletContainerInitializer;
import org.springframework.web.servlet.HandlerInterceptor;
import roomescape.member.Member;
import roomescape.member.MemberDao;
import roomescape.member.MemberRepository;
import roomescape.member.MemberService;

@Component
public class AdminInterceptor implements HandlerInterceptor {
private final MemberDao memberDao;
private final MemberRepository memberRepository;
private final MemberService memberService;

public AdminInterceptor(MemberDao memberDao, MemberService memberService) {
this.memberDao = memberDao;
public AdminInterceptor(MemberRepository memberRepository, MemberService memberService) {
this.memberRepository = memberRepository;
this.memberService = memberService;
}

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
Long memberId = memberService.checkLogin(request).getId();
Member member = memberDao.findById(memberId);
Member member = memberRepository.findById(memberId).get();

if (member == null || !member.getRole().equals("ADMIN")) {
response.setStatus(401);
Expand Down
12 changes: 12 additions & 0 deletions src/main/java/roomescape/member/Member.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
package roomescape.member;

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;

@Entity
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String email;
Expand All @@ -21,6 +29,10 @@ public Member(String name, String email, String password, String role) {
this.role = role;
}

public Member(){

}

public Long getId() {
return id;
}
Expand Down
55 changes: 0 additions & 55 deletions src/main/java/roomescape/member/MemberDao.java

This file was deleted.

15 changes: 15 additions & 0 deletions src/main/java/roomescape/member/MemberRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package roomescape.member;

import org.jetbrains.annotations.NotNull;
import org.springframework.data.repository.CrudRepository;

import java.util.Optional;

public interface MemberRepository extends CrudRepository<Member, Long> {

@Override
public Optional<Member> findById(Long id);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

공통리뷰에 나온 Optional을 적용하셨네요👍


public Member findByEmailAndPassword(String email, String password);

}
12 changes: 6 additions & 6 deletions src/main/java/roomescape/member/MemberService.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,24 @@

@Service
public class MemberService {
private final MemberDao memberDao;
private final MemberRepository memberRepository;
private final TokenProvider tokenProvider;
private final Extractor extractor;

public MemberService(MemberDao memberDao, TokenProvider tokenProvider, Extractor extractor) {
this.memberDao = memberDao;
public MemberService(MemberRepository memberRepository, TokenProvider tokenProvider, Extractor extractor) {
this.memberRepository = memberRepository;
this.tokenProvider = tokenProvider;
this.extractor = extractor;
}

public LoginMember createMember(MemberRequest memberRequest) {
Member member = memberDao.save(new Member(memberRequest.getName(), memberRequest.getEmail(), memberRequest.getPassword(), "USER"));
Member member = memberRepository.save(new Member(memberRequest.getName(), memberRequest.getEmail(), memberRequest.getPassword(), "USER"));
return new LoginMember(member.getId(), member.getName(), member.getEmail());
}

public String loginByEmailAndPassword(LoginRequest request) {
try {
Member member = memberDao.findByEmailAndPassword(request.email(), request.password());
Member member = memberRepository.findByEmailAndPassword(request.email(), request.password());
return tokenProvider.createToken(member);
} catch (DataAccessException e) {
throw new IllegalArgumentException("로그인 정보가 불일치 합니다.");
Expand All @@ -46,7 +46,7 @@ public LoginMember checkLogin(HttpServletRequest request) {
String token = extractToken(request);
Long memberId = extractId(token);

Member member = memberDao.findById(memberId);
Member member = memberRepository.findById(memberId).get();
return LoginMember.from(member);
}

Expand Down
38 changes: 38 additions & 0 deletions src/main/java/roomescape/reservation/MyReservationResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package roomescape.reservation;

public class MyReservationResponse {
private Long reservationId;
private String theme;
private String date;
private String time;
private String status;

public MyReservationResponse(Long reservationId, String theme, String date, String time, String status) {

}

public MyReservationResponse(){

}

public Long getReservationId() {
return reservationId;
}

public String getTheme() {
return theme;
}

public String getDate() {
return date;
}

public String getTime() {
return time;
}

public String getStatus() {
return status;
}

}
10 changes: 10 additions & 0 deletions src/main/java/roomescape/reservation/Reservation.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
package roomescape.reservation;

import jakarta.persistence.*;
import roomescape.theme.Theme;
import roomescape.time.Time;

@Entity
public class Reservation {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String date;

@ManyToOne
@JoinColumn(name = "time_id")
private Time time;

@ManyToOne
@JoinColumn(name = "theme_id")
private Theme theme;

public Reservation(Long id, String name, String date, Time time, Theme theme) {
Expand Down
11 changes: 10 additions & 1 deletion src/main/java/roomescape/reservation/ReservationController.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import roomescape.member.LoginMember;

import java.net.URI;
import java.util.ArrayList;
import java.util.List;

@RestController
Expand All @@ -23,7 +24,7 @@ public List<ReservationResponse> list() {
}

@PostMapping("/reservations")
public ResponseEntity create(@Authentication LoginMember loginMember ,@RequestBody ReservationRequest reservationRequest ) {
public ResponseEntity create(@Authentication LoginMember loginMember, @RequestBody ReservationRequest reservationRequest) {

if (reservationRequest.name() == null) {
reservationRequest = new ReservationRequest(
Expand All @@ -50,4 +51,12 @@ public ResponseEntity delete(@PathVariable Long id) {
reservationService.deleteById(id);
return ResponseEntity.noContent().build();
}

@GetMapping("/reservations-mine")
public ResponseEntity<List<MyReservationResponse>> reservations(@Authentication LoginMember loginMember) {
String name = loginMember.getName();
List<MyReservationResponse> response = reservationService.findReservationsByName(name);

return ResponseEntity.ok(response);
}
}
127 changes: 0 additions & 127 deletions src/main/java/roomescape/reservation/ReservationDao.java

This file was deleted.

Loading