Skip to content

Commit f682588

Browse files
committed
fix: 구조 변경
1 parent bad771c commit f682588

File tree

7 files changed

+129
-38
lines changed

7 files changed

+129
-38
lines changed

src/main/java/roomescape/controller/ReservationController.java

+12-22
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,20 @@
88
import org.springframework.web.bind.annotation.PostMapping;
99
import org.springframework.web.bind.annotation.RequestBody;
1010
import org.springframework.web.bind.annotation.ResponseBody;
11-
import roomescape.dto.Reservation;
12-
import roomescape.exception.InvalidValueException;
13-
import roomescape.exception.NotFoundReservationException;
14-
import roomescape.repository.ReservationRepository;
11+
import roomescape.dto.ReservationRequestDto;
12+
import roomescape.dto.ReservationResponseDto;
13+
import roomescape.service.ReservationService;
1514

1615
import java.net.URI;
17-
import java.util.ArrayList;
1816
import java.util.List;
19-
import java.util.concurrent.atomic.AtomicLong;
2017

2118
@Controller
2219
public class ReservationController {
2320

24-
private final ReservationRepository reservationRepository;
21+
private final ReservationService reservationService;
2522

26-
public ReservationController(ReservationRepository repository) {
27-
this.reservationRepository = repository;
23+
public ReservationController(ReservationService reservationService) {
24+
this.reservationService = reservationService;
2825
}
2926

3027
// 홈화면
@@ -36,21 +33,17 @@ public String reservationPage() {
3633
//예약 조회
3734
@ResponseBody
3835
@GetMapping("/reservations")
39-
public List<Reservation> list() {
40-
return reservationRepository.findAll();
36+
public ResponseEntity<List<ReservationResponseDto>> list() {
37+
List<ReservationResponseDto> reservations = reservationService.getAllReservations();
38+
return ResponseEntity.ok(reservations);
4139
}
4240

4341
//예약 추가
4442
@ResponseBody
4543
@PostMapping("/reservations")
46-
public ResponseEntity<Reservation> create(@RequestBody Reservation newReservation) {
47-
if (newReservation.getName() == null || newReservation.getName().isEmpty() ||
48-
newReservation.getDate() == null || newReservation.getDate().isEmpty() ||
49-
newReservation.getTime() == null || newReservation.getTime().isEmpty()) {
50-
throw new InvalidValueException("예약 추가에 필요한 인자값이 비어있습니다.");
51-
}
44+
public ResponseEntity<ReservationResponseDto> create(@RequestBody ReservationRequestDto newReservationDto) {
5245

53-
Reservation reservation = reservationRepository.insert(newReservation);
46+
ReservationResponseDto reservation = reservationService.createReservation(newReservationDto);
5447

5548
return ResponseEntity.created(URI.create("/reservations/" + reservation.getId()))
5649
.body(reservation);
@@ -59,10 +52,7 @@ public ResponseEntity<Reservation> create(@RequestBody Reservation newReservatio
5952
//예약 삭제
6053
@DeleteMapping("/reservations/{id}")
6154
public ResponseEntity<Void> delete(@PathVariable Long id) {
62-
// 수정예정 Reservation reservation = reservationRepository.fin
63-
// .orElseThrow(() -> new NotFoundReservationException("예약을 찾을 수 없습니다."));
64-
65-
reservationRepository.delete(id);
55+
reservationService.deleteReservation(id);
6656
return ResponseEntity.noContent().build();
6757
}
6858
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package roomescape.dto;
2+
3+
public class ReservationRequestDto {
4+
private String name;
5+
private String date;
6+
private String time;
7+
8+
public ReservationRequestDto(String name, String date, String time) {
9+
this.name = name;
10+
this.date = date;
11+
this.time = time;
12+
}
13+
14+
public String getName() {
15+
return name;
16+
}
17+
18+
public String getDate() {
19+
return date;
20+
}
21+
22+
public String getTime() {
23+
return time;
24+
}
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package roomescape.dto;
2+
3+
public class ReservationResponseDto {
4+
private Long id;
5+
private String name;
6+
private String date;
7+
private String time;
8+
9+
public ReservationResponseDto(Long id, String name, String date, String time) {
10+
this.id = id;
11+
this.name = name;
12+
this.date = date;
13+
this.time = time;
14+
}
15+
16+
public Long getId() {
17+
return id;
18+
}
19+
20+
public String getName() {
21+
return name;
22+
}
23+
24+
public String getDate() {
25+
return date;
26+
}
27+
28+
public String getTime() {
29+
return time;
30+
}
31+
}

src/main/java/roomescape/dto/Reservation.java renamed to src/main/java/roomescape/entity/Reservation.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
package roomescape.dto;
1+
package roomescape.entity;
22

33
public class Reservation {
4-
54
private Long id;
65
private String name;
76
private String date;
@@ -29,5 +28,4 @@ public String getDate() {
2928
public String getTime() {
3029
return time;
3130
}
32-
3331
}

src/main/java/roomescape/repository/ReservationRepository.java

+7-12
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import org.springframework.http.ResponseEntity;
44
import org.springframework.jdbc.core.JdbcTemplate;
55
import org.springframework.stereotype.Repository;
6-
import roomescape.dto.Reservation;
6+
import roomescape.entity.Reservation;
77

88
import java.util.List;
99

@@ -31,24 +31,19 @@ public List<Reservation> findAll() {
3131

3232
//예약 추가
3333
public Reservation insert(Reservation reservation) {
34-
try {
35-
String sql = "INSERT INTO reservation(name, date, time) VALUES (?, ?, ?)";
36-
jdbcTemplate.update(sql, reservation.getName(), reservation.getDate(), reservation.getTime());
34+
String sql = "INSERT INTO reservation(name, date, time) VALUES (?, ?, ?)";
35+
jdbcTemplate.update(sql, reservation.getName(), reservation.getDate(), reservation.getTime());
3736

38-
String query = "SELECT id FROM reservation ORDER BY id DESC LIMIT 1";
39-
Long id = jdbcTemplate.queryForObject(query, Long.class);
37+
String query = "SELECT id FROM reservation ORDER BY id DESC LIMIT 1";
38+
Long id = jdbcTemplate.queryForObject(query, Long.class);
4039

41-
return new Reservation(id, reservation.getName(), reservation.getDate(), reservation.getTime());
42-
} catch (Exception ex) {
43-
throw new RuntimeException("오류가 발생하였습니다.");
44-
}
40+
return new Reservation(id, reservation.getName(), reservation.getDate(), reservation.getTime());
4541
}
4642

4743
//예약 삭제
48-
public ResponseEntity<Object> delete(Long id) {
44+
public void delete(Long id) {
4945
String sql = "DELETE FROM reservation WHERE id = ?";
5046
jdbcTemplate.update(sql, Long.valueOf(id));
51-
return ResponseEntity.noContent().build();
5247
}
5348
}
5449

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package roomescape.service;
2+
3+
import org.springframework.stereotype.Service;
4+
import roomescape.dto.ReservationRequestDto;
5+
import roomescape.dto.ReservationResponseDto;
6+
import roomescape.entity.Reservation;
7+
import roomescape.repository.ReservationRepository;
8+
9+
import java.util.List;
10+
import java.util.stream.Collectors;
11+
12+
@Service
13+
public class ReservationService {
14+
15+
private final ReservationRepository reservationRepository;
16+
17+
public ReservationService(ReservationRepository reservationRepository) {
18+
this.reservationRepository = reservationRepository;
19+
}
20+
21+
public List<ReservationResponseDto> getAllReservations(){
22+
return reservationRepository.findAll()
23+
.stream()
24+
.map(this::toResponseDto)
25+
.collect(Collectors.toList());
26+
}
27+
28+
public ReservationResponseDto createReservation(ReservationRequestDto requestDto){
29+
30+
Reservation reservation = new Reservation(
31+
null,
32+
requestDto.getName(),
33+
requestDto.getDate(),
34+
requestDto.getTime()
35+
);
36+
Reservation savedReservation = reservationRepository.insert(reservation);
37+
return toResponseDto(savedReservation);
38+
}
39+
40+
public void deleteReservation(Long id){
41+
reservationRepository.delete(id);
42+
}
43+
44+
private ReservationResponseDto toResponseDto(Reservation reservation) {
45+
return new ReservationResponseDto(
46+
reservation.getId(),
47+
reservation.getName(),
48+
reservation.getDate(),
49+
reservation.getTime()
50+
);
51+
}
52+
}

src/test/java/roomescape/MissionStepTest2.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import org.springframework.boot.test.context.SpringBootTest;
88
import org.springframework.jdbc.core.JdbcTemplate;
99
import org.springframework.test.annotation.DirtiesContext;
10-
import roomescape.dto.Reservation;
10+
import roomescape.entity.Reservation;
1111

1212
import java.sql.Connection;
1313
import java.sql.SQLException;

0 commit comments

Comments
 (0)