diff --git a/src/main/java/DiffLens/back_end/domain/library/controller/LibraryController.java b/src/main/java/DiffLens/back_end/domain/library/controller/LibraryController.java new file mode 100644 index 0000000..0b81749 --- /dev/null +++ b/src/main/java/DiffLens/back_end/domain/library/controller/LibraryController.java @@ -0,0 +1,23 @@ +package DiffLens.back_end.domain.library.controller; + +import DiffLens.back_end.domain.library.dto.LibraryResponseDTO; +import DiffLens.back_end.global.responses.exception.ApiResponse; +import io.swagger.v3.oas.annotations.Operation; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/libraries") +@RequiredArgsConstructor +public class LibraryController { + + @GetMapping + @Operation(summary = "라이브러리 목록 조회 ( 미구현 )") + public ApiResponse libraryList( /* 파라미터 추가 필요 */ ){ + LibraryResponseDTO.ListResult result = new LibraryResponseDTO.ListResult(); + return ApiResponse.onSuccess(result); + } + +} diff --git a/src/main/java/DiffLens/back_end/domain/library/dto/LibraryResponseDTO.java b/src/main/java/DiffLens/back_end/domain/library/dto/LibraryResponseDTO.java new file mode 100644 index 0000000..c3be2bc --- /dev/null +++ b/src/main/java/DiffLens/back_end/domain/library/dto/LibraryResponseDTO.java @@ -0,0 +1,59 @@ +package DiffLens.back_end.domain.library.dto; + +import DiffLens.back_end.global.dto.ResponsePageDTO; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.util.List; + +public class LibraryResponseDTO { + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class ListResult{ + + private List panels; + + @JsonProperty("page_info") + private ResponsePageDTO.PageInfo pageInfo; + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Panel { + + @JsonProperty("search_id") + private Long searchId; + + private String name; + + @JsonProperty("total_count") + private Integer totalCount; + + @JsonProperty("created_at") + private String createdAt; + + @JsonProperty("data_type") + private String dataType; + + private List tags; + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Tag { + private String key; + private String value; + } + } + + } + +} diff --git a/src/main/java/DiffLens/back_end/domain/members/controller/AuthController.java b/src/main/java/DiffLens/back_end/domain/members/controller/AuthController.java index 9c9f0c7..e5645ba 100644 --- a/src/main/java/DiffLens/back_end/domain/members/controller/AuthController.java +++ b/src/main/java/DiffLens/back_end/domain/members/controller/AuthController.java @@ -22,21 +22,64 @@ public class AuthController { private final AuthService authService; @PostMapping("/signup/local") - @Operation(summary = "회원가입(로컬)") + @Operation(summary = "회원가입 ( 로컬 )", + description = """ + + ## 개요 + 일반 회원가입 API입니다. + + ## Request Body + 회원가입 정보 담아서 요청 + + ## 응답 + 로그인 성공 여부를 반환합니다. + + """) public ApiResponse signUp(@RequestBody @Valid AuthRequestDTO.SignUpDto request){ AuthResponseDTO.SignUpDto signUpDto = authService.signUp(request); return ApiResponse.onSuccess(signUpDto); } @PostMapping("/login/local") - @Operation(summary = "로그인(로컬)") + @Operation(summary = "로그인 ( 로컬 )", + description = """ + + ## 개요 + 일반 회원가입 API입니다. + + ## Request Body + - 일반 회원가입에 담아 요청한 email과 paassword 를 담아 요청하세요. + - loginType : GENERAL + + ## 응답 + 인증에 필요한 토큰정보를 포함합니다. + + """) public ApiResponse localLogin(@RequestBody @Valid AuthRequestDTO.LoginDto request){ AuthResponseDTO.LoginDto login = authService.login(request); return ApiResponse.onSuccess(login); } @PostMapping("/login/google") - @Operation(summary = "로그인(소셜)") + @Operation(summary = "로그인 ( 구글 )", + description = """ + + ## 개요 + 구글 로그인 API 입니다. + + ## Request Body + - code : 구글 로그인 진행 후 리다이렉트 되는 주소의 파라미터 중 code값 + - loginType : GOOGLE + + ## 응답 + 인증에 필요한 토큰정보를 포함합니다. + + ## 기타 + - 구글 로그인 링크는 노션 API 명세서의 구글 로그인 페이지에 첨부해놓았습니다. + - !! 추후 해당 API는 기획에 따라 구글 전용이 아닌 소셜로그인 통합으로 변경될 수 있습니다. ( google -> social ) + + + """) public ApiResponse googleLogin(@RequestBody @Valid AuthRequestDTO.SocialLoginDto request){ AuthResponseDTO.LoginDto login = authService.login(request); return ApiResponse.onSuccess(login); diff --git a/src/main/java/DiffLens/back_end/domain/members/dto/auth/AuthRequestDTO.java b/src/main/java/DiffLens/back_end/domain/members/dto/auth/AuthRequestDTO.java index 51f0321..bb6bdb0 100644 --- a/src/main/java/DiffLens/back_end/domain/members/dto/auth/AuthRequestDTO.java +++ b/src/main/java/DiffLens/back_end/domain/members/dto/auth/AuthRequestDTO.java @@ -1,6 +1,7 @@ package DiffLens.back_end.domain.members.dto.auth; import DiffLens.back_end.domain.members.enums.LoginType; +import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.Email; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; @@ -16,18 +17,22 @@ public class AuthRequestDTO { @AllArgsConstructor public static class SignUpDto { + @Schema(description = "email 형식으로 입력해야 합니다.") @NotBlank(message = "이메일은 필수 입력 항목입니다.") @Email(message = "올바른 이메일 형식이 아닙니다.") private String email; + @Schema(description = "이름. 최대 20글자") @NotBlank(message = "이름은 필수 입력 항목입니다.") @Size(max = 20, message = "이름은 20자 이하로 작성해주세요.") private String name; + @Schema(description = "비밀번호. 8~20 글자") @NotBlank(message = "비밀번호는 필수 입력 항목입니다.") @Size(min = 8, max = 20, message = "비밀번호는 8자 이상 20자 이하로 입력해주세요.") private String password; + @Schema(description = "로그인 유형") @NotNull(message = "로그인 타입은 필수 항목입니다.") private LoginType loginType; diff --git a/src/main/java/DiffLens/back_end/domain/panel/controller/PanelController.java b/src/main/java/DiffLens/back_end/domain/panel/controller/PanelController.java new file mode 100644 index 0000000..dbdfabc --- /dev/null +++ b/src/main/java/DiffLens/back_end/domain/panel/controller/PanelController.java @@ -0,0 +1,30 @@ +package DiffLens.back_end.domain.panel.controller; + +import DiffLens.back_end.domain.panel.dto.PanelRequestDTO; +import DiffLens.back_end.domain.panel.dto.PanelResponseDTO; +import DiffLens.back_end.global.responses.exception.ApiResponse; +import io.swagger.v3.oas.annotations.Operation; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/panels") +@RequiredArgsConstructor +public class PanelController { + + @GetMapping("/{panelId}") + @Operation(summary = "특정 패널 상세 조회 ( 미구현 )") + public ApiResponse details(@PathVariable("panelId") Long panelId) { + PanelResponseDTO.PanelDetails result = new PanelResponseDTO.PanelDetails(); + return ApiResponse.onSuccess(result); + } + + @PostMapping("/compare") + @Operation(summary = "패널 그룹 비교 분석 ( 미구현 ) ") + public ApiResponse groupCompare(@RequestBody @Valid PanelRequestDTO.GroupAnal request) { + PanelResponseDTO.GroupCompare result = new PanelResponseDTO.GroupCompare(); + return ApiResponse.onSuccess(result); + } + +} diff --git a/src/main/java/DiffLens/back_end/domain/panel/dto/PanelRequestDTO.java b/src/main/java/DiffLens/back_end/domain/panel/dto/PanelRequestDTO.java new file mode 100644 index 0000000..6d9f0b6 --- /dev/null +++ b/src/main/java/DiffLens/back_end/domain/panel/dto/PanelRequestDTO.java @@ -0,0 +1,29 @@ +package DiffLens.back_end.domain.panel.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotNull; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +public class PanelRequestDTO { + + @Setter + @Getter + public static class GroupAnal{ + + @NotNull + @JsonProperty("library_a_id") + private Long libraryAId; + + @NotNull + @JsonProperty("library_b_id") + private Long libraryBId; + + @JsonProperty("comparison_metrics") + private List comparisonMetrics; + + } + +} diff --git a/src/main/java/DiffLens/back_end/domain/panel/dto/PanelResponseDTO.java b/src/main/java/DiffLens/back_end/domain/panel/dto/PanelResponseDTO.java new file mode 100644 index 0000000..dd3ad19 --- /dev/null +++ b/src/main/java/DiffLens/back_end/domain/panel/dto/PanelResponseDTO.java @@ -0,0 +1,192 @@ +package DiffLens.back_end.domain.panel.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.util.List; + +public class PanelResponseDTO { + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class PanelDetails { + + @JsonProperty("panel_detail") + private PanelDetail panelDetail; + + @JsonProperty("similar_panels") + private List similarPanels; + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class PanelDetail { + + @JsonProperty("panel_id") + private String panelId; + + private String summary; + + @JsonProperty("basic_info") + private BasicInfo basicInfo; + + private List attributes; + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class BasicInfo { + private String gender; + + @JsonProperty("birth_year") + private Integer birthYear; + + private String residence; + + @JsonProperty("marital_status") + private String maritalStatus; + + @JsonProperty("children_count") + private Integer childrenCount; + + private String occupation; + + @JsonProperty("income_level") + private String incomeLevel; + } + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Attribute { + private String key; + private String value; // 문자열 or 배열 모두 가능 + private String unit; + } + } + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class SimilarPanel { + + @JsonProperty("panel_id") + private String panelId; + + @JsonProperty("display_name") + private String displayName; + + private List tags; + + @JsonProperty("match_score") + private Integer matchScore; + } + } + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class GroupCompare { + + @JsonProperty("library_a_id") + private LibraryInfo libraryA; + + @JsonProperty("library_b_id") + private LibraryInfo libraryB; + + @JsonProperty("feature_comparison") + private List featureComparison; + + @JsonProperty("comparison_charts") + private List comparisonCharts; + + @JsonProperty("basic_comparison") + private List basicComparison; + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class LibraryInfo { + private Long id; + private String name; + } + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class FeatureComparison { + @JsonProperty("feature_name") + private String featureName; + + @JsonProperty("a_value") + private Double aValue; + + @JsonProperty("b_value") + private Double bValue; + + private String unit; + } + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class ComparisonChart { + @JsonProperty("chart_type") + private String chartType; + + private String title; + + @JsonProperty("data_points") + private List dataPoints; + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class DataPoint { + private String label; + @JsonProperty("group_a") + private Double groupA; + @JsonProperty("group_b") + private Double groupB; + + @JsonProperty("month") + private String month; + @JsonProperty("a_income") + private Integer aIncome; + @JsonProperty("b_income") + private Integer bIncome; + } + } + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class BasicComparison { + private String metric; + + @JsonProperty("a_value") + private Double aValue; + + @JsonProperty("b_value") + private Double bValue; + + private String unit; + } + } + +} diff --git a/src/main/java/DiffLens/back_end/domain/search/controller/SearchController.java b/src/main/java/DiffLens/back_end/domain/search/controller/SearchController.java new file mode 100644 index 0000000..01cbecd --- /dev/null +++ b/src/main/java/DiffLens/back_end/domain/search/controller/SearchController.java @@ -0,0 +1,37 @@ +package DiffLens.back_end.domain.search.controller; + +import DiffLens.back_end.domain.search.dto.SearchRequestDTO; +import DiffLens.back_end.domain.search.dto.SearchResponseDTO; +import DiffLens.back_end.global.responses.exception.ApiResponse; +import io.swagger.v3.oas.annotations.Operation; +import jakarta.validation.Valid; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/search") +@RequiredArgsConstructor +public class SearchController { + + @PostMapping + @Operation(summary = "자연어 검색 ( 미구현 )") + public ApiResponse naturalLanguage(@RequestBody @Valid SearchRequestDTO.NaturalLanguage request) { + SearchResponseDTO.SearchResult result = new SearchResponseDTO.SearchResult(); // 임시 result + return ApiResponse.onSuccess(result); + } + + @PostMapping("/refine") + @Operation(summary = "기존 검색 결과 기반 재검색 ( 미구현 )") + public ApiResponse refine(@RequestBody @Valid SearchRequestDTO.ExistingSearchResult request) { + SearchResponseDTO.SearchResult result = new SearchResponseDTO.SearchResult(); // 임시 result + return ApiResponse.onSuccess(result); + } + + @GetMapping("/recommended") + @Operation(summary = "맞춤 검색 추천 ( 미구현 )") + public ApiResponse refine(@RequestBody @Valid SearchRequestDTO.SearchFilters request) { + return ApiResponse.onSuccess(null); + } + + +} diff --git a/src/main/java/DiffLens/back_end/domain/search/dto/ChartDTO.java b/src/main/java/DiffLens/back_end/domain/search/dto/ChartDTO.java new file mode 100644 index 0000000..c78b0d6 --- /dev/null +++ b/src/main/java/DiffLens/back_end/domain/search/dto/ChartDTO.java @@ -0,0 +1,48 @@ +package DiffLens.back_end.domain.search.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.util.List; + +public class ChartDTO { + + @Getter + @Builder + @NoArgsConstructor + @AllArgsConstructor + public static class Graph{ + @JsonProperty("chart_id") + private String chartId; + + private String reason; + + @JsonProperty("chart_type") + private String chartType; + + private String title; + + @JsonProperty("x_axis") + private String xAxis; + + @JsonProperty("y_axis") + private String yAxis; + + @JsonProperty("data_points") + private List dataPoints; + } + + @Getter + @Builder + @AllArgsConstructor + @NoArgsConstructor + public static class DataPoint { + private String label; + private Integer value; + } + + +} \ No newline at end of file diff --git a/src/main/java/DiffLens/back_end/domain/search/dto/SearchPanelDTO.java b/src/main/java/DiffLens/back_end/domain/search/dto/SearchPanelDTO.java new file mode 100644 index 0000000..cc49748 --- /dev/null +++ b/src/main/java/DiffLens/back_end/domain/search/dto/SearchPanelDTO.java @@ -0,0 +1,64 @@ +package DiffLens.back_end.domain.search.dto; + +import DiffLens.back_end.global.dto.ResponsePageDTO; +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.util.List; + +public class SearchPanelDTO { + + @Getter + @Builder + @AllArgsConstructor + @NoArgsConstructor + public static class PanelData { + private List fields; + private List records; + + @JsonProperty("page_info") + private ResponsePageDTO.PageInfo pageInfo; + } + + @Getter + @Builder + @AllArgsConstructor + @NoArgsConstructor + public static class Field { + private String key; + private String label; + private String type; + private Boolean sortable; + } + + @Getter + @Builder + @AllArgsConstructor + @NoArgsConstructor + public static class Record { + @JsonProperty("respondent_id") + private String respondentId; + + private Integer age; + + private String residence; + + @JsonProperty("final_education") + private String finalEducation; + + @JsonProperty("net_income") + private String netIncome; + + @JsonProperty("car_brand") + private String carBrand; + + @JsonProperty("match_rate") + private Integer matchRate; + } + + + +} diff --git a/src/main/java/DiffLens/back_end/domain/search/dto/SearchRequestDTO.java b/src/main/java/DiffLens/back_end/domain/search/dto/SearchRequestDTO.java new file mode 100644 index 0000000..00e9973 --- /dev/null +++ b/src/main/java/DiffLens/back_end/domain/search/dto/SearchRequestDTO.java @@ -0,0 +1,54 @@ +package DiffLens.back_end.domain.search.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +public class SearchRequestDTO { + + // 자연어 검색 + @Getter + @Setter + public static class NaturalLanguage{ + @NotBlank + private String question; + @NotBlank + private String mode; + @NotNull + private SearchFilters filters; + } + + // 기존 검색 결과 기반 재검색 + @Getter + @Setter + public static class ExistingSearchResult{ + @NotNull + private Long id; + @NotBlank + private String question; + @NotNull + private SearchFilters filters; + } + + // 위 두 DTO 에서 공통으로 쓰이는 Filter DTO + @Getter + @Setter + public static class SearchFilters{ + private Integer count; + private String gender; + @JsonProperty(value = "age_group") + private List ageGroup; + private List region; + @JsonProperty(value = "martial_status") + private List martialStatus; // 결혼상태 + private String children; + private List occupation;// 직업 + } + + + +} diff --git a/src/main/java/DiffLens/back_end/domain/search/dto/SearchResponseDTO.java b/src/main/java/DiffLens/back_end/domain/search/dto/SearchResponseDTO.java new file mode 100644 index 0000000..0c20f60 --- /dev/null +++ b/src/main/java/DiffLens/back_end/domain/search/dto/SearchResponseDTO.java @@ -0,0 +1,68 @@ +package DiffLens.back_end.domain.search.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.util.List; + +public class SearchResponseDTO { + + @Builder + @Getter + @AllArgsConstructor + @NoArgsConstructor + public static class SearchResult { + + // 큰 배열 + @JsonProperty("search_id") + private Long searchId; + + private Summary summary; + + @JsonProperty("applied_filters_summary") + private List appliedFiltersSummary; + + private List charts; + + @JsonProperty("panel_data") + private SearchPanelDTO.PanelData panelData; + + // 중간배열 + @Getter + @Builder + @AllArgsConstructor + @NoArgsConstructor + public static class Summary { + @JsonProperty("total_respondents") + private Integer totalRespondents; + + @JsonProperty("average_age") + private Double averageAge; + + @JsonProperty("data_capture_date") + private String dataCaptureDate; + + @JsonProperty("confidence_level") + private Integer confidenceLevel; + } + + @Getter + @Builder + @AllArgsConstructor + @NoArgsConstructor + public static class AppliedFilter { + @JsonProperty("key") + private String key; + + @JsonProperty("display_value") + private String displayValue; + } + + + } + + +} diff --git a/src/main/java/DiffLens/back_end/domain/search/enums/chart/CharType.java b/src/main/java/DiffLens/back_end/domain/search/enums/chart/CharType.java new file mode 100644 index 0000000..4d2d499 --- /dev/null +++ b/src/main/java/DiffLens/back_end/domain/search/enums/chart/CharType.java @@ -0,0 +1,4 @@ +package DiffLens.back_end.domain.search.enums.chart; + +public enum CharType { +} diff --git a/src/main/java/DiffLens/back_end/domain/search/enums/filters/AgeGroup.java b/src/main/java/DiffLens/back_end/domain/search/enums/filters/AgeGroup.java new file mode 100644 index 0000000..148de39 --- /dev/null +++ b/src/main/java/DiffLens/back_end/domain/search/enums/filters/AgeGroup.java @@ -0,0 +1,32 @@ +package DiffLens.back_end.domain.search.enums.filters; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum AgeGroup { + + TWENTY("20-29"), + THIRTY("30-39"), + FORTY("40-49"), + FIFTY("50-59"), + SIXTY_PLUS("60-69") + ; + + // TODO : private final String key; + private final String range; + + public static AgeGroup fromRange(String range) { + for (AgeGroup group : values()) { + if (group.range.equals(range)) { + return group; + } + } + // TODO : 예외처리 하기 + throw new IllegalArgumentException("Unknown age range: " + range); + } + + + +} diff --git a/src/main/java/DiffLens/back_end/domain/search/enums/filters/Children.java b/src/main/java/DiffLens/back_end/domain/search/enums/filters/Children.java new file mode 100644 index 0000000..e460604 --- /dev/null +++ b/src/main/java/DiffLens/back_end/domain/search/enums/filters/Children.java @@ -0,0 +1,4 @@ +package DiffLens.back_end.domain.search.enums.filters; + +public enum Children { +} diff --git a/src/main/java/DiffLens/back_end/domain/search/enums/filters/Gender.java b/src/main/java/DiffLens/back_end/domain/search/enums/filters/Gender.java new file mode 100644 index 0000000..3f33eaf --- /dev/null +++ b/src/main/java/DiffLens/back_end/domain/search/enums/filters/Gender.java @@ -0,0 +1,7 @@ +package DiffLens.back_end.domain.search.enums.filters; + +public enum Gender { + + + +} diff --git a/src/main/java/DiffLens/back_end/domain/search/enums/filters/MartialStatus.java b/src/main/java/DiffLens/back_end/domain/search/enums/filters/MartialStatus.java new file mode 100644 index 0000000..5d88da5 --- /dev/null +++ b/src/main/java/DiffLens/back_end/domain/search/enums/filters/MartialStatus.java @@ -0,0 +1,4 @@ +package DiffLens.back_end.domain.search.enums.filters; + +public enum MartialStatus { +} diff --git a/src/main/java/DiffLens/back_end/domain/search/enums/filters/Occupation.java b/src/main/java/DiffLens/back_end/domain/search/enums/filters/Occupation.java new file mode 100644 index 0000000..faee782 --- /dev/null +++ b/src/main/java/DiffLens/back_end/domain/search/enums/filters/Occupation.java @@ -0,0 +1,4 @@ +package DiffLens.back_end.domain.search.enums.filters; + +public enum Occupation { +} diff --git a/src/main/java/DiffLens/back_end/domain/search/enums/filters/Region.java b/src/main/java/DiffLens/back_end/domain/search/enums/filters/Region.java new file mode 100644 index 0000000..e2a0d9f --- /dev/null +++ b/src/main/java/DiffLens/back_end/domain/search/enums/filters/Region.java @@ -0,0 +1,4 @@ +package DiffLens.back_end.domain.search.enums.filters; + +public enum Region { +} diff --git a/src/main/java/DiffLens/back_end/global/dto/ResponsePageDTO.java b/src/main/java/DiffLens/back_end/global/dto/ResponsePageDTO.java new file mode 100644 index 0000000..8850626 --- /dev/null +++ b/src/main/java/DiffLens/back_end/global/dto/ResponsePageDTO.java @@ -0,0 +1,28 @@ +package DiffLens.back_end.global.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +public class ResponsePageDTO { + + @Getter + @Builder + @AllArgsConstructor + @NoArgsConstructor + public static class PageInfo { + @JsonProperty("next_cursor") + private Integer nextCursor; + + @JsonProperty("has_next") + private Boolean hasNext; + + private Integer limit; + + @JsonProperty("current_page_count") + private Integer currentPageCount; + } + +}