From f6a6c4aa7afb502d499f156fdad1947f66c26b48 Mon Sep 17 00:00:00 2001 From: minuk1749 Date: Sun, 28 Jun 2026 14:48:00 +0900 Subject: [PATCH 1/2] =?UTF-8?q?feat:=20=EC=B2=B4=EC=A4=91=20=EA=B8=B0?= =?UTF-8?q?=EB=A1=9D=20=EC=A0=80=EC=9E=A5(POST)=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .postman/config.json | 13 +++++++++++ .../globals/workspace.postman_globals.json | 7 ++++++ .../controller/WeightRecordController.java | 20 +++++++++++------ .../workout_tracker/domain/WeightRecord.java | 9 ++++++-- .../dto/WeightRecordRequest.java | 12 ++++++++++ .../dto/WeightRecordResponse.java | 22 +++++++++++++++++++ .../repository/WeightRecordRepository.java | 2 +- .../service/WeightRecordService.java | 19 +++++++++++++--- 8 files changed, 91 insertions(+), 13 deletions(-) create mode 100644 .postman/config.json create mode 100644 postman/globals/workspace.postman_globals.json create mode 100644 src/main/java/com/github/minuk1749/workout_tracker/dto/WeightRecordRequest.java create mode 100644 src/main/java/com/github/minuk1749/workout_tracker/dto/WeightRecordResponse.java diff --git a/.postman/config.json b/.postman/config.json new file mode 100644 index 0000000..3a4e723 --- /dev/null +++ b/.postman/config.json @@ -0,0 +1,13 @@ +{ + "workspace": { + "id": "9773296a-87d0-4545-b261-b2bb4026cca9" + }, + "entities": { + "environments": [], + "flows": [], + "globals": [], + "mocks": [], + "specs": [], + "collections": [] + } +} \ No newline at end of file diff --git a/postman/globals/workspace.postman_globals.json b/postman/globals/workspace.postman_globals.json new file mode 100644 index 0000000..1cfb249 --- /dev/null +++ b/postman/globals/workspace.postman_globals.json @@ -0,0 +1,7 @@ +{ + "id": "a141368c-2e88-4434-9b5b-5ee59046fed2", + "name": "Globals", + "values": [], + "_postman_variable_scope": "globals", + "_postman_exported_at": "2026-06-28T05:43:38.225Z" +} \ No newline at end of file diff --git a/src/main/java/com/github/minuk1749/workout_tracker/controller/WeightRecordController.java b/src/main/java/com/github/minuk1749/workout_tracker/controller/WeightRecordController.java index 1b3f7d4..2fc91a3 100644 --- a/src/main/java/com/github/minuk1749/workout_tracker/controller/WeightRecordController.java +++ b/src/main/java/com/github/minuk1749/workout_tracker/controller/WeightRecordController.java @@ -1,23 +1,29 @@ package com.github.minuk1749.workout_tracker.controller; -import com.github.minuk1749.workout_tracker.domain.WeightRecord; +import com.github.minuk1749.workout_tracker.dto.WeightRecordRequest; +import com.github.minuk1749.workout_tracker.dto.WeightRecordResponse; import com.github.minuk1749.workout_tracker.service.WeightRecordService; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequiredArgsConstructor -@RequestMapping("/api/weight") +@RequestMapping("/api/weights") public class WeightRecordController { private final WeightRecordService weightRecordService; @GetMapping - public List getAllWeightRecords() { - return weightRecordService.getAllRecords(); + public List getAllWeightRecords() { + return weightRecordService.getAllWeightRecords(); + } + + @PostMapping + public WeightRecordResponse saveWeightRecord(@RequestBody WeightRecordRequest request) { + return weightRecordService.saveWeightRecord(request); } } diff --git a/src/main/java/com/github/minuk1749/workout_tracker/domain/WeightRecord.java b/src/main/java/com/github/minuk1749/workout_tracker/domain/WeightRecord.java index f6629b6..782496d 100644 --- a/src/main/java/com/github/minuk1749/workout_tracker/domain/WeightRecord.java +++ b/src/main/java/com/github/minuk1749/workout_tracker/domain/WeightRecord.java @@ -15,8 +15,13 @@ public class WeightRecord { private Long id; @Column(nullable = false) - private Double weight; + private Double weight; //체중 @Column(nullable = false) - private LocalDate recordedAt; + private LocalDate recordedAt; // 기록한 일시 + + public WeightRecord(Double weight, LocalDate recordedAt) { + this.weight = weight; + this.recordedAt = recordedAt; + } } diff --git a/src/main/java/com/github/minuk1749/workout_tracker/dto/WeightRecordRequest.java b/src/main/java/com/github/minuk1749/workout_tracker/dto/WeightRecordRequest.java new file mode 100644 index 0000000..9e51ccb --- /dev/null +++ b/src/main/java/com/github/minuk1749/workout_tracker/dto/WeightRecordRequest.java @@ -0,0 +1,12 @@ +package com.github.minuk1749.workout_tracker.dto; + +import lombok.Getter; +import lombok.NoArgsConstructor; +import java.time.LocalDate; + +@Getter +@NoArgsConstructor +public class WeightRecordRequest { + private Double weight; + private LocalDate recordedAt; +} diff --git a/src/main/java/com/github/minuk1749/workout_tracker/dto/WeightRecordResponse.java b/src/main/java/com/github/minuk1749/workout_tracker/dto/WeightRecordResponse.java new file mode 100644 index 0000000..9149a85 --- /dev/null +++ b/src/main/java/com/github/minuk1749/workout_tracker/dto/WeightRecordResponse.java @@ -0,0 +1,22 @@ +package com.github.minuk1749.workout_tracker.dto; + +import com.github.minuk1749.workout_tracker.domain.WeightRecord; +import lombok.Getter; + +import java.time.LocalDate; + +@Getter +public class WeightRecordResponse { + + private final Long id; + private final Double weight; + private final LocalDate recordedAt; + /* 이 세개의 변수는 현재는 WeightRecord에 있는 변수 전부이지만 + 만약 WeightRecord에 변수가 여러개 만들어졌다면 그 중 원하는 것만 골라서 적으면 됨 */ + + public WeightRecordResponse(WeightRecord weightRecord) { + this.id = weightRecord.getId(); + this.weight = weightRecord.getWeight(); + this.recordedAt = weightRecord.getRecordedAt(); + } +} diff --git a/src/main/java/com/github/minuk1749/workout_tracker/repository/WeightRecordRepository.java b/src/main/java/com/github/minuk1749/workout_tracker/repository/WeightRecordRepository.java index e754ea1..7a5ffe3 100644 --- a/src/main/java/com/github/minuk1749/workout_tracker/repository/WeightRecordRepository.java +++ b/src/main/java/com/github/minuk1749/workout_tracker/repository/WeightRecordRepository.java @@ -4,5 +4,5 @@ import org.springframework.data.jpa.repository.JpaRepository; public interface WeightRecordRepository extends JpaRepository { - + //JpaRepository를 상속받기만 해도 저장,조회,삭제기능이 자동으로 생김 } diff --git a/src/main/java/com/github/minuk1749/workout_tracker/service/WeightRecordService.java b/src/main/java/com/github/minuk1749/workout_tracker/service/WeightRecordService.java index ac77bf7..dfb0a1a 100644 --- a/src/main/java/com/github/minuk1749/workout_tracker/service/WeightRecordService.java +++ b/src/main/java/com/github/minuk1749/workout_tracker/service/WeightRecordService.java @@ -1,11 +1,15 @@ package com.github.minuk1749.workout_tracker.service; +import com.github.minuk1749.workout_tracker.dto.WeightRecordRequest; import com.github.minuk1749.workout_tracker.domain.WeightRecord; +import com.github.minuk1749.workout_tracker.dto.WeightRecordRequest; +import com.github.minuk1749.workout_tracker.dto.WeightRecordResponse; import com.github.minuk1749.workout_tracker.repository.WeightRecordRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.util.List; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -13,7 +17,16 @@ public class WeightRecordService { private final WeightRecordRepository weightRecordRepository; - public List getAllRecords() { - return weightRecordRepository.findAll(); - } // DB에 있는 체중기록 전부를 불러옴 + public List getAllWeightRecords () { + return weightRecordRepository.findAll() + .stream() + .map(WeightRecordResponse::new) + .collect(Collectors.toList()); + } + + public WeightRecordResponse saveWeightRecord(WeightRecordRequest request) { + WeightRecord weightRecord = new WeightRecord(request.getWeight(), request.getRecordedAt()); + WeightRecord saved = weightRecordRepository.save(weightRecord); // 기본으로 있는 save기능 활용 + return new WeightRecordResponse(saved); + } } From 596f33640d64700df643481a0a4949b512dbe3b4 Mon Sep 17 00:00:00 2001 From: minuk1749 Date: Sun, 28 Jun 2026 15:20:25 +0900 Subject: [PATCH 2/2] =?UTF-8?q?feat:=20=EC=B2=B4=EC=A4=91=EA=B8=B0?= =?UTF-8?q?=EB=A1=9D=20DELETE=20PATCH=EA=B8=B0=EB=8A=A5=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 ++++ .../controller/WeightRecordController.java | 15 ++++++++++++++- .../workout_tracker/domain/WeightRecord.java | 5 +++++ .../service/WeightRecordService.java | 17 +++++++++++++++-- 4 files changed, 38 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index c2065bc..74e8d4a 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,7 @@ out/ ### VS Code ### .vscode/ + +### PostMan ### +.postman/ +postman/ \ No newline at end of file diff --git a/src/main/java/com/github/minuk1749/workout_tracker/controller/WeightRecordController.java b/src/main/java/com/github/minuk1749/workout_tracker/controller/WeightRecordController.java index 2fc91a3..718608c 100644 --- a/src/main/java/com/github/minuk1749/workout_tracker/controller/WeightRecordController.java +++ b/src/main/java/com/github/minuk1749/workout_tracker/controller/WeightRecordController.java @@ -5,8 +5,11 @@ import com.github.minuk1749.workout_tracker.service.WeightRecordService; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.PathVariable; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.PatchMapping; import java.util.List; @@ -23,7 +26,17 @@ public List getAllWeightRecords() { } @PostMapping - public WeightRecordResponse saveWeightRecord(@RequestBody WeightRecordRequest request) { + public WeightRecordResponse saveWeightRecord(@RequestBody WeightRecordRequest request) { // POST 기능 return weightRecordService.saveWeightRecord(request); } + + @DeleteMapping("/{id}") + public void deleteWeightRecord(@PathVariable Long id) { // DELETE 기능 + weightRecordService.deleteWeightRecord(id); + } + + @PatchMapping("/{id}") + public WeightRecordResponse updateWeightRecord(@PathVariable Long id, @RequestBody WeightRecordRequest request) { + return weightRecordService.updateWeightRecord(id, request); + } } diff --git a/src/main/java/com/github/minuk1749/workout_tracker/domain/WeightRecord.java b/src/main/java/com/github/minuk1749/workout_tracker/domain/WeightRecord.java index 782496d..8e8b8e6 100644 --- a/src/main/java/com/github/minuk1749/workout_tracker/domain/WeightRecord.java +++ b/src/main/java/com/github/minuk1749/workout_tracker/domain/WeightRecord.java @@ -20,6 +20,11 @@ public class WeightRecord { @Column(nullable = false) private LocalDate recordedAt; // 기록한 일시 + public void update(Double weight, LocalDate recordedAt) { + this.weight = weight; + this.recordedAt = recordedAt; + } + public WeightRecord(Double weight, LocalDate recordedAt) { this.weight = weight; this.recordedAt = recordedAt; diff --git a/src/main/java/com/github/minuk1749/workout_tracker/service/WeightRecordService.java b/src/main/java/com/github/minuk1749/workout_tracker/service/WeightRecordService.java index dfb0a1a..9dc7eef 100644 --- a/src/main/java/com/github/minuk1749/workout_tracker/service/WeightRecordService.java +++ b/src/main/java/com/github/minuk1749/workout_tracker/service/WeightRecordService.java @@ -7,6 +7,7 @@ import com.github.minuk1749.workout_tracker.repository.WeightRecordRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; @@ -17,16 +18,28 @@ public class WeightRecordService { private final WeightRecordRepository weightRecordRepository; - public List getAllWeightRecords () { + public List getAllWeightRecords () { //GET 기능 return weightRecordRepository.findAll() .stream() .map(WeightRecordResponse::new) .collect(Collectors.toList()); } - public WeightRecordResponse saveWeightRecord(WeightRecordRequest request) { + public WeightRecordResponse saveWeightRecord(WeightRecordRequest request) { // POST 기능 WeightRecord weightRecord = new WeightRecord(request.getWeight(), request.getRecordedAt()); WeightRecord saved = weightRecordRepository.save(weightRecord); // 기본으로 있는 save기능 활용 return new WeightRecordResponse(saved); } + + public void deleteWeightRecord(Long id) { //DELETE 기능 + weightRecordRepository.deleteById(id); + } + + @Transactional + public WeightRecordResponse updateWeightRecord(Long id, WeightRecordRequest request) { // PATCH 기능 + WeightRecord weightRecord = weightRecordRepository.findById(id) + .orElseThrow(() -> new RuntimeException("체중 기록을 찾을 수 없습니다")); + weightRecord.update(request.getWeight(), request.getRecordedAt()); + return new WeightRecordResponse(weightRecord); + } }