Skip to content

Commit 82ff10e

Browse files
authored
Merge pull request #9 from SW-DiffLens/feat#7
[FEAT#7] 초기 스웨거 작성
2 parents bd79a54 + cf63059 commit 82ff10e

File tree

20 files changed

+742
-3
lines changed

20 files changed

+742
-3
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package DiffLens.back_end.domain.library.controller;
2+
3+
import DiffLens.back_end.domain.library.dto.LibraryResponseDTO;
4+
import DiffLens.back_end.global.responses.exception.ApiResponse;
5+
import io.swagger.v3.oas.annotations.Operation;
6+
import lombok.RequiredArgsConstructor;
7+
import org.springframework.web.bind.annotation.GetMapping;
8+
import org.springframework.web.bind.annotation.RequestMapping;
9+
import org.springframework.web.bind.annotation.RestController;
10+
11+
@RestController
12+
@RequestMapping("/libraries")
13+
@RequiredArgsConstructor
14+
public class LibraryController {
15+
16+
@GetMapping
17+
@Operation(summary = "라이브러리 목록 조회 ( 미구현 )")
18+
public ApiResponse<LibraryResponseDTO.ListResult> libraryList( /* 파라미터 추가 필요 */ ){
19+
LibraryResponseDTO.ListResult result = new LibraryResponseDTO.ListResult();
20+
return ApiResponse.onSuccess(result);
21+
}
22+
23+
}
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package DiffLens.back_end.domain.library.dto;
2+
3+
import DiffLens.back_end.global.dto.ResponsePageDTO;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import lombok.AllArgsConstructor;
6+
import lombok.Builder;
7+
import lombok.Getter;
8+
import lombok.NoArgsConstructor;
9+
10+
import java.util.List;
11+
12+
public class LibraryResponseDTO {
13+
14+
@Getter
15+
@Builder
16+
@NoArgsConstructor
17+
@AllArgsConstructor
18+
public static class ListResult{
19+
20+
private List<Panel> panels;
21+
22+
@JsonProperty("page_info")
23+
private ResponsePageDTO.PageInfo pageInfo;
24+
25+
@Getter
26+
@Builder
27+
@NoArgsConstructor
28+
@AllArgsConstructor
29+
public static class Panel {
30+
31+
@JsonProperty("search_id")
32+
private Long searchId;
33+
34+
private String name;
35+
36+
@JsonProperty("total_count")
37+
private Integer totalCount;
38+
39+
@JsonProperty("created_at")
40+
private String createdAt;
41+
42+
@JsonProperty("data_type")
43+
private String dataType;
44+
45+
private List<Tag> tags;
46+
47+
@Getter
48+
@Builder
49+
@NoArgsConstructor
50+
@AllArgsConstructor
51+
public static class Tag {
52+
private String key;
53+
private String value;
54+
}
55+
}
56+
57+
}
58+
59+
}

src/main/java/DiffLens/back_end/domain/members/controller/AuthController.java

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,21 +22,64 @@ public class AuthController {
2222
private final AuthService authService;
2323

2424
@PostMapping("/signup/local")
25-
@Operation(summary = "회원가입(로컬)")
25+
@Operation(summary = "회원가입 ( 로컬 )",
26+
description = """
27+
28+
## 개요
29+
일반 회원가입 API입니다.
30+
31+
## Request Body
32+
회원가입 정보 담아서 요청
33+
34+
## 응답
35+
로그인 성공 여부를 반환합니다.
36+
37+
""")
2638
public ApiResponse<AuthResponseDTO.SignUpDto> signUp(@RequestBody @Valid AuthRequestDTO.SignUpDto request){
2739
AuthResponseDTO.SignUpDto signUpDto = authService.signUp(request);
2840
return ApiResponse.onSuccess(signUpDto);
2941
}
3042

3143
@PostMapping("/login/local")
32-
@Operation(summary = "로그인(로컬)")
44+
@Operation(summary = "로그인 ( 로컬 )",
45+
description = """
46+
47+
## 개요
48+
일반 회원가입 API입니다.
49+
50+
## Request Body
51+
- 일반 회원가입에 담아 요청한 email과 paassword 를 담아 요청하세요.
52+
- loginType : GENERAL
53+
54+
## 응답
55+
인증에 필요한 토큰정보를 포함합니다.
56+
57+
""")
3358
public ApiResponse<AuthResponseDTO.LoginDto> localLogin(@RequestBody @Valid AuthRequestDTO.LoginDto request){
3459
AuthResponseDTO.LoginDto login = authService.login(request);
3560
return ApiResponse.onSuccess(login);
3661
}
3762

3863
@PostMapping("/login/google")
39-
@Operation(summary = "로그인(소셜)")
64+
@Operation(summary = "로그인 ( 구글 )",
65+
description = """
66+
67+
## 개요
68+
구글 로그인 API 입니다.
69+
70+
## Request Body
71+
- code : 구글 로그인 진행 후 리다이렉트 되는 주소의 파라미터 중 code값
72+
- loginType : GOOGLE
73+
74+
## 응답
75+
인증에 필요한 토큰정보를 포함합니다.
76+
77+
## 기타
78+
- 구글 로그인 링크는 노션 API 명세서의 구글 로그인 페이지에 첨부해놓았습니다.
79+
- !! 추후 해당 API는 기획에 따라 구글 전용이 아닌 소셜로그인 통합으로 변경될 수 있습니다. ( google -> social )
80+
81+
82+
""")
4083
public ApiResponse<AuthResponseDTO.LoginDto> googleLogin(@RequestBody @Valid AuthRequestDTO.SocialLoginDto request){
4184
AuthResponseDTO.LoginDto login = authService.login(request);
4285
return ApiResponse.onSuccess(login);

src/main/java/DiffLens/back_end/domain/members/dto/auth/AuthRequestDTO.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package DiffLens.back_end.domain.members.dto.auth;
22

33
import DiffLens.back_end.domain.members.enums.LoginType;
4+
import io.swagger.v3.oas.annotations.media.Schema;
45
import jakarta.validation.constraints.Email;
56
import jakarta.validation.constraints.NotBlank;
67
import jakarta.validation.constraints.NotNull;
@@ -16,18 +17,22 @@ public class AuthRequestDTO {
1617
@AllArgsConstructor
1718
public static class SignUpDto {
1819

20+
@Schema(description = "email 형식으로 입력해야 합니다.")
1921
@NotBlank(message = "이메일은 필수 입력 항목입니다.")
2022
@Email(message = "올바른 이메일 형식이 아닙니다.")
2123
private String email;
2224

25+
@Schema(description = "이름. 최대 20글자")
2326
@NotBlank(message = "이름은 필수 입력 항목입니다.")
2427
@Size(max = 20, message = "이름은 20자 이하로 작성해주세요.")
2528
private String name;
2629

30+
@Schema(description = "비밀번호. 8~20 글자")
2731
@NotBlank(message = "비밀번호는 필수 입력 항목입니다.")
2832
@Size(min = 8, max = 20, message = "비밀번호는 8자 이상 20자 이하로 입력해주세요.")
2933
private String password;
3034

35+
@Schema(description = "로그인 유형")
3136
@NotNull(message = "로그인 타입은 필수 항목입니다.")
3237
private LoginType loginType;
3338

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package DiffLens.back_end.domain.panel.controller;
2+
3+
import DiffLens.back_end.domain.panel.dto.PanelRequestDTO;
4+
import DiffLens.back_end.domain.panel.dto.PanelResponseDTO;
5+
import DiffLens.back_end.global.responses.exception.ApiResponse;
6+
import io.swagger.v3.oas.annotations.Operation;
7+
import jakarta.validation.Valid;
8+
import lombok.RequiredArgsConstructor;
9+
import org.springframework.web.bind.annotation.*;
10+
11+
@RestController
12+
@RequestMapping("/panels")
13+
@RequiredArgsConstructor
14+
public class PanelController {
15+
16+
@GetMapping("/{panelId}")
17+
@Operation(summary = "특정 패널 상세 조회 ( 미구현 )")
18+
public ApiResponse<PanelResponseDTO.PanelDetails> details(@PathVariable("panelId") Long panelId) {
19+
PanelResponseDTO.PanelDetails result = new PanelResponseDTO.PanelDetails();
20+
return ApiResponse.onSuccess(result);
21+
}
22+
23+
@PostMapping("/compare")
24+
@Operation(summary = "패널 그룹 비교 분석 ( 미구현 ) ")
25+
public ApiResponse<PanelResponseDTO.GroupCompare> groupCompare(@RequestBody @Valid PanelRequestDTO.GroupAnal request) {
26+
PanelResponseDTO.GroupCompare result = new PanelResponseDTO.GroupCompare();
27+
return ApiResponse.onSuccess(result);
28+
}
29+
30+
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package DiffLens.back_end.domain.panel.dto;
2+
3+
import com.fasterxml.jackson.annotation.JsonProperty;
4+
import jakarta.validation.constraints.NotNull;
5+
import lombok.Getter;
6+
import lombok.Setter;
7+
8+
import java.util.List;
9+
10+
public class PanelRequestDTO {
11+
12+
@Setter
13+
@Getter
14+
public static class GroupAnal{
15+
16+
@NotNull
17+
@JsonProperty("library_a_id")
18+
private Long libraryAId;
19+
20+
@NotNull
21+
@JsonProperty("library_b_id")
22+
private Long libraryBId;
23+
24+
@JsonProperty("comparison_metrics")
25+
private List<String> comparisonMetrics;
26+
27+
}
28+
29+
}

0 commit comments

Comments
 (0)