Skip to content

Commit

Permalink
Merge pull request #48 from KORAD1004/feature/my-cource
Browse files Browse the repository at this point in the history
♻️Refactor: swagger description 수정 입니다.
  • Loading branch information
Jindongleee authored Oct 12, 2024
2 parents 74e6c5d + 5f953f5 commit a610e95
Show file tree
Hide file tree
Showing 5 changed files with 181 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,16 @@


import com.korad1004.back_end.course.dto.CourseNameDto;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import com.korad1004.back_end.course.entity.Course;
import com.korad1004.back_end.course.service.CourseService;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
Expand All @@ -27,7 +33,20 @@ public class CourseController {
private final CourseService courseService;

//코스 이름 등록 대충 3개 정도 등록 예정

@Operation(
summary = "<테마 별 추천 코스>코스 제목 등록 API",
description = "테마 제목만 등록 가능"
)
@ApiResponses(value = {
@ApiResponse(
responseCode = "201",
description = "테마 제목 등록 완료",
content = @Content(
mediaType = "application/json",
schema = @Schema(implementation = CourseNameDto.class)
)
)
})
@PostMapping
public ResponseEntity<Course> createCourse(@RequestBody CourseNameDto courseNameDto){
courseService.createCourseName(courseNameDto);
Expand All @@ -36,20 +55,58 @@ public ResponseEntity<Course> createCourse(@RequestBody CourseNameDto courseName
}

//코스 이름 전체 출력
@Operation(
summary = "<테마별 추천 코스> 저장된 모든 테마 이름 받아 오는 API",
description = "Try it out -> execute 실행 시 저장된 모든 테마 제목을 받을 수 있음"
)
@ApiResponses(value = {
@ApiResponse(
responseCode = "200",
description = "저장 된 테마 이름 잘 받아옴",
content = @Content(
mediaType = "application/json",
schema = @Schema(type = "array",implementation = CourseNameDto.class)
)
)
})
@GetMapping
public ResponseEntity<List<CourseNameDto>> getAllCourseName(){
return ResponseEntity.ok(courseService.getAllCourseName());
}

//코스 id에 대한 코스 이름 출력
@Operation(
summary = "<테마별 추천 코스> 테마 Id 입력시 해당 테마 이름 불러옴",
description = "Path에 Id 입력 시 해당 Id에 대한 테마 제목을 받을 수 있음"
)
@ApiResponses(value = {
@ApiResponse(
responseCode = "200",
description = "해당 테마 이름을 잘 받아옴",
content = @Content(
mediaType = "application/json",
schema = @Schema(implementation =CourseNameDto.class )
)
)
})
@GetMapping("{id}")
public ResponseEntity<CourseNameDto> getCourseNameById(@PathVariable(name="id") Long id){
return ResponseEntity.ok(courseService.getCourseNameById(id));
}

//원하는 코스 삭제
@Operation(
summary = "<테마별 추천 코스> 테마 Id 입력시 해당 테마에 대한 저장된 테마 이름 및 장소 전부 삭제",
description = "Path에 Id 입력 시 해당 Id에 대한 코스를 삭제함"
)
@ApiResponses(value = {
@ApiResponse(
responseCode = "204",
description = "해당 아이디에 관한 테마 추천코스가 잘 삭제됨"
)
})
@DeleteMapping("{id}")
public ResponseEntity<Void> deleteCourse(@PathVariable(name="id") Long integer){
public ResponseEntity<?> deleteCourse(@PathVariable(name="id") Long integer){

return courseService.deleteCourse(integer);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
package com.korad1004.back_end.course.controller;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import com.korad1004.back_end.course.dto.CourseInfoDto;
import com.korad1004.back_end.course.service.CoursePlaceService;
Expand All @@ -16,13 +22,25 @@
@RestController
@RequestMapping("api/course-place")
@AllArgsConstructor
@Tag(name = "course_place")
public class CoursePlaceController {

private final CoursePlaceService coursePlaceService;

//코스이름 선택 & 동선 순서 & 가볼만한 곳에 등록 되어있는 장소 이름 post 요청시 해당 코스 항목에 들어감
//입력 항목 : 코스 아이디, 동선 순서, 장소 이름
@PostMapping("{course_id}/{number}/{hotspot_id}")
@Operation(
summary = "<테마별 추천 코스> 원하는 테마 제목에 맞는 코스를 등록 가능",
description = "테마 Id + 코스 동선 Ex) 1번 장소 or 2번 장소 number 값" +
" 데이터 베이스에 저장된 각 핫스팟 Id를 Path로 입력시 저장됨"
)
@ApiResponses(value = {
@ApiResponse(
responseCode = "201",
description = "원하는 테마 제목에 맞는 코스 등록 성공"
)
})
public ResponseEntity<?> createCourse(@PathVariable(name="course_id") Long id, @PathVariable(name="number") Integer number,@PathVariable(name="hotspot_id") Long hotspot_id){

coursePlaceService.createPlaceOfCourse(id,number,hotspot_id);
Expand All @@ -33,6 +51,20 @@ public ResponseEntity<?> createCourse(@PathVariable(name="course_id") Long id, @

//원하는 코스를 선택시 해당 코스에 대한 경로 정보 api
@GetMapping("{course_id}")
@Operation(
summary = "<테마별 추천 코스> 테마 Id 입력시 해당 테마에 저장된 장소 리스트 업",
description = "Path에 Id 입력 시 해당 Id에 대한 코스를 리스트 형식으로 불러옴"
)
@ApiResponses(value = {
@ApiResponse(
responseCode = "200",
description = "해당 테마에 등록 된 장소들 잘 불러옴",
content = @Content(
mediaType = "application/json",
schema = @Schema(implementation = CourseInfoDto.class)
)
)
})
public ResponseEntity<List<CourseInfoDto>> getCoursePlaceOfCourse(@PathVariable(name="course_id") Long id){

return ResponseEntity.ok(coursePlaceService.getCoursePlace(id));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
package com.korad1004.back_end.course.dto;

import com.korad1004.back_end.course.entity.Course;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
@Schema(description = "코스 이름 반환")
public class CourseNameDto {

@Schema(description = "코스 이름 ",example = "벅차 오르는 순간, 역사가 깃든 경주 한 바퀴")
private String courseName;

public static CourseNameDto from(Course course){
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.korad1004.back_end.course.service;

import com.korad1004.back_end.course.dto.CourseNameDto;
import jakarta.validation.constraints.Null;
import lombok.AllArgsConstructor;
import com.korad1004.back_end.course.entity.Course;
import com.korad1004.back_end.course.repository.CourseRepository;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
Expand Down Expand Up @@ -52,8 +54,12 @@ public CourseNameDto getCourseNameById(Long id){

//코스 삭제
@Transactional
public ResponseEntity<Void> deleteCourse(Long integer){
courseRepository.deleteById(integer);
return null;
public ResponseEntity<?> deleteCourse(Long integer){
if(courseRepository.findById(integer).isPresent()){
courseRepository.deleteById(integer);
return ResponseEntity.noContent().build();
}
else
return ResponseEntity.status(HttpStatus.NOT_FOUND).body("해당 테마 Id를 찾을 수 없습니다.");
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
package com.korad1004.back_end.my_travel_plan.controller;

import com.korad1004.back_end.my_travel_plan.dto.CreateCourseDto;
import com.korad1004.back_end.my_travel_plan.dto.GetSpotInfoOfMyTravel;
import com.korad1004.back_end.my_travel_plan.service.ScheduleService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.DeleteMapping;
Expand All @@ -19,24 +26,62 @@
@RestController
@RequestMapping("/api/schedule")
@AllArgsConstructor
@Tag(name = "schedule")
public class ScheduleController {

private final ScheduleService scheduleService;

//스케줄 만들기
@PostMapping
@Operation(
summary = "<나만의 여행 일정 짜기> 나만의 여행 일정 등록 가능 API",
description = " 해당 여행 일정을 조회 가능한 코드가 return 됨"
)
@ApiResponses(value = {
@ApiResponse(
responseCode = "201",
description = "나만의 여행 일정 등록 성공",
content = @Content(
mediaType = "application/json",
schema = @Schema(implementation = CreateCourseDto.class)
)
),
@ApiResponse(
responseCode = "400",
description = "잘못된 입력 으로 인해 등록 실패" +
" or 시간의 입력 순서가 잘못 됨 cf) 빈 시간은 들어갈 수 있음 하지만 둘다 비어야 됨"
)
})
public ResponseEntity<?> createSchedule(@RequestBody CreateCourseDto createCourseDto){
try{
return ResponseEntity.ok(scheduleService.createSchedule(createCourseDto));
}catch (RuntimeException e){
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage());
}catch (Exception e){
return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
}
}

//해당 코드에 대한 여행 일정 가져 오기
@GetMapping("/{travel_code}")
@Operation(
summary = "<나만의 여행 일정 짜기> 생성된 코드에 대한 나만의 여행 일정 정보를 가져 오는 API",
description = "생성된 8자리 숫자를 Path로 기입시 해당 코드에 관련된 여행 정보를 보여줌"
)
@ApiResponses(value = {
@ApiResponse(
responseCode = "200",
description = "해당 코드에 관련된 나의 여행 일정을 잘 불러옴",
content = @Content(
mediaType = "application/json",
schema = @Schema(type = "array",implementation = GetSpotInfoOfMyTravel.class)
)
),
@ApiResponse(
responseCode = "404",
description = "해당 코드에 관한 정보가 데이터베이스에 없음"
)
})
public ResponseEntity<List<Object>> getScheduleOfCode(@PathVariable(name="travel_code") String code){

return ResponseEntity.ok(scheduleService.getScheduleOfCode(code));
Expand All @@ -45,6 +90,20 @@ public ResponseEntity<List<Object>> getScheduleOfCode(@PathVariable(name="travel

//스케줄 삭제
@DeleteMapping("{travel_code}")
@Operation(
summary = "<나만의 여행 일정 짜기> 해당 코드 입력시 스케줄 삭제 API",
description = "생성된 코드를 Path 입력시 해당 스케줄 삭제"
)
@ApiResponses(value = {
@ApiResponse(
responseCode = "204",
description = "해당 스케줄이 잘 삭제됨"
),
@ApiResponse(
responseCode = "404",
description = "해당 코드가 데이터 베이스에 존재 하지 않음"
)
})
public ResponseEntity<?> deleteScheduleOfCode(@PathVariable(name="travel_code") String code){
try{
scheduleService.deleteScheduleOfCode(code);
Expand All @@ -56,6 +115,24 @@ public ResponseEntity<?> deleteScheduleOfCode(@PathVariable(name="travel_code")

//스케줄 수정하기
@PatchMapping("{travel_code}")
@Operation(
summary = "<나만의 여행 일정 짜기> 해당 코드 입력시 스케줄 수정 API",
description = "생성된 코드를 Path 입력시 해당 스케줄 수정"
)
@ApiResponses(value = {
@ApiResponse(
responseCode = "200",
description = "해당 스케줄이 잘 수정됨",
content = @Content(
mediaType = "application/json",
schema = @Schema(implementation = CreateCourseDto.class)
)
),
@ApiResponse(
responseCode = "404",
description = "해당 코드가 데이터 베이스에 존재 하지 않음"
)
})
public ResponseEntity<?> updateScheduleOfCode(@PathVariable(name="travel_code") String code, @RequestBody CreateCourseDto createCourseDto){
try{
scheduleService.updateScheduleOfCode(code,createCourseDto);
Expand Down

0 comments on commit a610e95

Please sign in to comment.