From c2655f262a286cdec991e373766ef919e3152812 Mon Sep 17 00:00:00 2001 From: seobbang Date: Thu, 30 May 2024 16:13:13 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20step=208=20-=20=EC=8B=9C=EA=B0=84?= =?UTF-8?q?=20=EA=B4=80=EB=A6=AC=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/roomescape/Time.java | 29 ++++++++++ src/main/java/roomescape/TimeController.java | 50 +++++++++++++++++ src/main/java/roomescape/TimeQueryingDAO.java | 53 +++++++++++++++++++ src/main/java/roomescape/TimeRequestDto.java | 17 ++++++ src/main/resources/schema.sql | 7 +++ src/test/java/roomescape/MissionStepTest.java | 25 +++++++++ 6 files changed, 181 insertions(+) create mode 100644 src/main/java/roomescape/Time.java create mode 100644 src/main/java/roomescape/TimeController.java create mode 100644 src/main/java/roomescape/TimeQueryingDAO.java create mode 100644 src/main/java/roomescape/TimeRequestDto.java diff --git a/src/main/java/roomescape/Time.java b/src/main/java/roomescape/Time.java new file mode 100644 index 000000000..6e1095ccd --- /dev/null +++ b/src/main/java/roomescape/Time.java @@ -0,0 +1,29 @@ +package roomescape; + + +public class Time { + private long id; +// @NotBlank(message = "시간은 필수 입력 값입니다.") + private String time; + + public Time(long id, String time) { + this.id = id; + this.time = time; + } + + public long getId() { + return id; + } + + public String getTime() { + return time; + } + + // public Time(long id, String name, String date, String time) { +// this.id = id; +// this.name = name; +// this.date = date; +// this.time = time; +// } + +} diff --git a/src/main/java/roomescape/TimeController.java b/src/main/java/roomescape/TimeController.java new file mode 100644 index 000000000..ac995ed27 --- /dev/null +++ b/src/main/java/roomescape/TimeController.java @@ -0,0 +1,50 @@ +package roomescape; + +import org.slf4j.ILoggerFactory; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.net.URI; +import java.util.List; + +@Controller +public class TimeController { + private TimeQueryingDAO queryingDAO; + public TimeController(TimeQueryingDAO queryingDAO) { + this.queryingDAO = queryingDAO; + } + + @GetMapping("/times") + public ResponseEntity> read() { + return ResponseEntity.ok(queryingDAO.getTimes()); + } + + @PostMapping("/times") + public ResponseEntity create (@RequestBody TimeRequestDto request) { + + String time = request.getTime(); + long id = queryingDAO.createTime(time); + + URI location = URI.create("/times/" + id); + Time newTime = new Time(id, time); + + ResponseDto response = new ResponseDto(HttpStatus.CREATED.value(), "시간이 성공적으로 추가되었습니다.", newTime); + return ResponseEntity.created(location).body(response); + } + + @DeleteMapping("/times/{id}") + public ResponseEntity delete (@PathVariable Long id) { + int rowsAffected = queryingDAO.deleteTimeById(id); + + if(rowsAffected > 0){ + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + }else { + throw new NotFoundReservationException("Time with id " + id + " not found." ); + } + } +} + + diff --git a/src/main/java/roomescape/TimeQueryingDAO.java b/src/main/java/roomescape/TimeQueryingDAO.java new file mode 100644 index 000000000..a781c8f38 --- /dev/null +++ b/src/main/java/roomescape/TimeQueryingDAO.java @@ -0,0 +1,53 @@ +package roomescape; + +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.jdbc.core.RowMapper; +import org.springframework.jdbc.support.GeneratedKeyHolder; +import org.springframework.jdbc.support.KeyHolder; +import org.springframework.stereotype.Repository; + +import java.sql.PreparedStatement; +import java.sql.Statement; +import java.util.List; + +@Repository +public class TimeQueryingDAO { + private JdbcTemplate jdbcTemplate; + private final RowMapper