Skip to content

Commit

Permalink
refactor: 유저 Controller에 있는 다른 도메인 API 분리 (#128)
Browse files Browse the repository at this point in the history
  • Loading branch information
pdohyung committed Oct 5, 2024
1 parent e3e09d5 commit 4b41479
Show file tree
Hide file tree
Showing 33 changed files with 786 additions and 789 deletions.
3 changes: 2 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ version = '0.0.1-SNAPSHOT'

java {
sourceCompatibility = '17'
targetCompatibility = '17'
}

configurations {
Expand Down Expand Up @@ -163,4 +164,4 @@ jacocoTestReport {
xml.required.set(true)
}
}
// -------------------
// -------------------
10 changes: 5 additions & 5 deletions src/docs/asciidoc/api/library/library.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ include::{snippets}/library/delete/http-request.adoc[]
include::{snippets}/library/delete/http-response.adoc[]
include::{snippets}/library/delete/response-fields.adoc[]

=== 독서 상태 페이지 조회
=== 유저 독서 상태 페이지 조회
==== HTTP Request
include::{snippets}/library/get-status/http-request.adoc[]
include::{snippets}/library/get-status/query-parameters.adoc[]
include::{snippets}/library/user-statuses/http-request.adoc[]
include::{snippets}/library/user-statuses/query-parameters.adoc[]

==== HTTP Response
include::{snippets}/library/get-status/http-response.adoc[]
include::{snippets}/library/get-status/response-fields.adoc[]
include::{snippets}/library/user-statuses/http-response.adoc[]
include::{snippets}/library/user-statuses/response-fields.adoc[]
12 changes: 6 additions & 6 deletions src/docs/asciidoc/api/rating/rating.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -50,15 +50,15 @@ include::{snippets}/rating/delete/path-parameters.adoc[]
include::{snippets}/rating/delete/http-response.adoc[]
include::{snippets}/rating/delete/response-fields.adoc[]

[[rating-findAll]]
=== 별점 페이지 조회
[[rating-users]]
=== 유저 별점 페이지 조회

==== HTTP Request

include::{snippets}/rating/findAll/http-request.adoc[]
include::{snippets}/rating/findAll/query-parameters.adoc[]
include::{snippets}/rating/user-ratings/http-request.adoc[]
include::{snippets}/rating/user-ratings/query-parameters.adoc[]

==== HTTP Response

include::{snippets}/rating/findAll/http-response.adoc[]
include::{snippets}/rating/findAll/response-fields.adoc[]
include::{snippets}/rating/user-ratings/http-response.adoc[]
include::{snippets}/rating/user-ratings/response-fields.adoc[]
10 changes: 5 additions & 5 deletions src/docs/asciidoc/api/review/review.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,14 @@ include::{snippets}/rating/delete/http-response.adoc[]
include::{snippets}/rating/delete/response-fields.adoc[]

[[review-findAll]]
=== 한줄평 페이지 조회
=== 유저 한줄평 페이지 조회

==== HTTP Request

include::{snippets}/review/findAll/http-request.adoc[]
include::{snippets}/review/findAll/query-parameters.adoc[]
include::{snippets}/review/user-reviews/http-request.adoc[]
include::{snippets}/review/user-reviews/query-parameters.adoc[]

==== HTTP Response

include::{snippets}/review/findAll/http-response.adoc[]
include::{snippets}/review/findAll/response-fields.adoc[]
include::{snippets}/review/user-reviews/http-response.adoc[]
include::{snippets}/review/user-reviews/response-fields.adoc[]
23 changes: 15 additions & 8 deletions src/main/java/com/jisungin/api/library/LibraryController.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,18 @@
import com.jisungin.api.ApiResponse;
import com.jisungin.api.library.request.LibraryCreateRequest;
import com.jisungin.api.library.request.LibraryEditRequest;
import com.jisungin.api.library.request.UserReadingStatusGetAllRequest;
import com.jisungin.api.support.Auth;
import com.jisungin.application.PageResponse;
import com.jisungin.application.library.LibraryService;
import com.jisungin.application.library.response.LibraryResponse;
import com.jisungin.application.library.response.UserReadingStatusResponse;
import jakarta.validation.Valid;

import java.util.List;

import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;

@RestController
@RequiredArgsConstructor
Expand Down Expand Up @@ -56,4 +54,13 @@ public ApiResponse<Void> deleteLibrary(@PathVariable("libraryId") Long libraryId
return ApiResponse.ok();
}

@GetMapping("/users/libraries/statuses")
public ApiResponse<PageResponse<UserReadingStatusResponse>> getReadingStatuses(
@ModelAttribute UserReadingStatusGetAllRequest request,
@Auth Long userId
) {
PageResponse<UserReadingStatusResponse> response = libraryService.getUserReadingStatuses(userId, request.toService());

return ApiResponse.ok(response);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.jisungin.api.user.request;
package com.jisungin.api.library.request;

import com.jisungin.application.user.request.UserReadingStatusGetAllServiceRequest;
import com.jisungin.application.library.request.UserReadingStatusGetAllServiceRequest;
import com.jisungin.domain.ReadingStatus;
import com.jisungin.domain.library.ReadingStatusOrderType;
import lombok.Builder;
Expand Down Expand Up @@ -37,5 +37,4 @@ public UserReadingStatusGetAllServiceRequest toService() {
.readingStatus(ReadingStatus.fromName(status))
.build();
}

}
22 changes: 17 additions & 5 deletions src/main/java/com/jisungin/api/rating/RatingController.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,43 +3,55 @@
import com.jisungin.api.ApiResponse;
import com.jisungin.api.rating.request.RatingCreateRequest;
import com.jisungin.api.rating.request.RatingUpdateRequest;
import com.jisungin.api.rating.request.UserRatingGetAllRequest;
import com.jisungin.api.support.Auth;
import com.jisungin.api.support.GuestOrAuth;
import com.jisungin.application.PageResponse;
import com.jisungin.application.rating.RatingService;
import com.jisungin.application.rating.response.RatingCreateResponse;
import com.jisungin.application.rating.response.RatingGetOneResponse;
import com.jisungin.application.rating.response.RatingGetResponse;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

@RequestMapping("/v1/ratings")
@RequestMapping("/v1")
@RequiredArgsConstructor
@RestController
public class RatingController {

private final RatingService ratingService;

@PostMapping
@PostMapping("/ratings")
public ApiResponse<RatingCreateResponse> createRating(@Auth Long userId, @Valid @RequestBody RatingCreateRequest request) {
return ApiResponse.ok(ratingService.creatingRating(userId, request.toServiceRequest()));
}

@GetMapping
@GetMapping("/ratings")
public ApiResponse<RatingGetOneResponse> getRating(@GuestOrAuth Long userId, @RequestParam String isbn) {
return ApiResponse.ok(ratingService.getRating(userId, isbn));
}

@PatchMapping("/{ratingId}")
@PatchMapping("/ratings/{ratingId}")
public ApiResponse<Void> updateRating(
@Auth Long userId, @PathVariable Long ratingId, @Valid @RequestBody RatingUpdateRequest request) {
ratingService.updateRating(userId, ratingId, request.toServiceRequest());
return ApiResponse.ok();
}

@DeleteMapping("/{ratingId}")
@DeleteMapping("/ratings/{ratingId}")
public ApiResponse<Void> deleteRating(@Auth Long userId, @PathVariable Long ratingId) {
ratingService.deleteRating(userId, ratingId);
return ApiResponse.ok();
}

@GetMapping("/users/ratings")
public ApiResponse<PageResponse<RatingGetResponse>> getUserRatings(
@ModelAttribute UserRatingGetAllRequest request,
@Auth Long userId
) {
PageResponse<RatingGetResponse> response = ratingService.getUserRatings(userId, request.toService());

return ApiResponse.ok(response);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.jisungin.api.user.request;
package com.jisungin.api.rating.request;

import com.jisungin.application.user.request.UserRatingGetAllServiceRequest;
import com.jisungin.application.rating.request.UserRatingGetAllServiceRequest;
import com.jisungin.domain.review.RatingOrderType;
import lombok.*;

Expand Down Expand Up @@ -33,5 +33,4 @@ public UserRatingGetAllServiceRequest toService() {
.rating(rating)
.build();
}

}
14 changes: 12 additions & 2 deletions src/main/java/com/jisungin/api/review/ReviewController.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package com.jisungin.api.review;

import com.jisungin.api.ApiResponse;
import com.jisungin.api.support.Auth;
import com.jisungin.api.review.request.ReviewContentGetAllRequest;
import com.jisungin.api.review.request.ReviewCreateRequest;
import com.jisungin.api.support.GuestOrAuth;
import com.jisungin.api.support.Auth;
import com.jisungin.application.OffsetLimit;
import com.jisungin.application.SliceResponse;
import com.jisungin.application.review.ReviewService;
import com.jisungin.application.review.response.ReviewContentGetAllResponse;
import com.jisungin.application.review.response.ReviewWithRatingResponse;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
Expand Down Expand Up @@ -47,4 +48,13 @@ public ApiResponse<Void> deleteReview(@PathVariable Long reviewId, @Auth Long us
return ApiResponse.ok();
}

@GetMapping("/users/reviews")
public ApiResponse<ReviewContentGetAllResponse> getReviewContents(
@ModelAttribute ReviewContentGetAllRequest request,
@Auth Long userId
) {
ReviewContentGetAllResponse response = reviewService.getReviewContents(userId, request.toService());

return ApiResponse.ok(response);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.jisungin.api.user.request;
package com.jisungin.api.review.request;

import com.jisungin.application.user.request.ReviewContentGetAllServiceRequest;
import com.jisungin.application.review.request.ReviewContentGetAllServiceRequest;
import com.jisungin.domain.review.RatingOrderType;
import lombok.Builder;
import lombok.Getter;
Expand Down Expand Up @@ -32,5 +32,4 @@ public ReviewContentGetAllServiceRequest toService() {
.orderType(RatingOrderType.fromName(order))
.build();
}

}
42 changes: 0 additions & 42 deletions src/main/java/com/jisungin/api/user/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,10 @@

import com.jisungin.api.ApiResponse;
import com.jisungin.api.support.Auth;
import com.jisungin.api.user.request.ReviewContentGetAllRequest;
import com.jisungin.api.user.request.UserRatingGetAllRequest;
import com.jisungin.api.user.request.UserReadingStatusGetAllRequest;
import com.jisungin.application.PageResponse;
import com.jisungin.application.rating.response.RatingGetResponse;
import com.jisungin.application.review.response.ReviewContentGetAllResponse;
import com.jisungin.application.user.UserService;
import com.jisungin.application.user.response.UserInfoResponse;
import com.jisungin.application.library.response.UserReadingStatusResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

Expand All @@ -24,43 +16,9 @@ public class UserController {

private final UserService userService;

@GetMapping("/ratings")
public ApiResponse<PageResponse<RatingGetResponse>> getUserRatings(
@ModelAttribute UserRatingGetAllRequest request,
@Auth Long userId
) {
PageResponse<RatingGetResponse> response = userService.getUserRatings(
userId, request.toService());

return ApiResponse.ok(response);
}

@GetMapping("/reviews")
public ApiResponse<ReviewContentGetAllResponse> getReviewContents(
@ModelAttribute ReviewContentGetAllRequest request,
@Auth Long userId
) {
ReviewContentGetAllResponse response = userService.getReviewContents(
userId, request.toService());

return ApiResponse.ok(response);
}

@GetMapping("/statuses")
public ApiResponse<PageResponse<UserReadingStatusResponse>> getReadingStatuses(
@ModelAttribute UserReadingStatusGetAllRequest request,
@Auth Long userId
) {
PageResponse<UserReadingStatusResponse> response = userService
.getUserReadingStatuses(userId, request.toService());

return ApiResponse.ok(response);
}

@GetMapping("/me")
public ApiResponse<UserInfoResponse> getUserInfo(@Auth Long userId) {
UserInfoResponse userInfo = userService.getUserInfo(userId);
return ApiResponse.ok(userInfo);
}

}
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package com.jisungin.application.library;

import com.jisungin.application.PageResponse;
import com.jisungin.application.library.request.LibraryCreateServiceRequest;
import com.jisungin.application.library.request.LibraryEditServiceRequest;
import com.jisungin.application.library.response.LibraryResponse;
import com.jisungin.application.library.response.UserReadingStatusResponse;
import com.jisungin.application.library.request.UserReadingStatusGetAllServiceRequest;
import com.jisungin.domain.ReadingStatus;
import com.jisungin.domain.book.Book;
import com.jisungin.domain.book.repository.BookRepository;
Expand All @@ -12,12 +15,15 @@
import com.jisungin.domain.user.repository.UserRepository;
import com.jisungin.exception.BusinessException;
import com.jisungin.exception.ErrorCode;
import java.util.List;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

import static com.jisungin.exception.ErrorCode.USER_NOT_FOUND;

@Slf4j
@Service
@RequiredArgsConstructor
Expand Down Expand Up @@ -89,4 +95,12 @@ public void deleteLibrary(Long userLibraryId, Long userId) {
libraryRepository.deleteById(library.getId());
}

public PageResponse<UserReadingStatusResponse> getUserReadingStatuses(
Long userId, UserReadingStatusGetAllServiceRequest request) {
User user = userRepository.findById(userId)
.orElseThrow(() -> new BusinessException(USER_NOT_FOUND));

return libraryRepository.findAllReadingStatusOrderBy(
user.getId(), request.getReadingStatus(), request.getOrderType(), request.getSize(), request.getOffset());
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.jisungin.application.user.request;
package com.jisungin.application.library.request;

import com.jisungin.domain.ReadingStatus;
import com.jisungin.domain.library.ReadingStatusOrderType;
Expand Down Expand Up @@ -35,5 +35,4 @@ public UserReadingStatusGetAllServiceRequest(
public int getOffset() {
return (max(1, page) - 1) * min(size, MAX_SIZE);
}

}
Loading

0 comments on commit 4b41479

Please sign in to comment.