Skip to content

Commit

Permalink
release: 백엔드 v4.0 (#615)
Browse files Browse the repository at this point in the history
* refactor: 서브쿼리 분리를 통해 쿼리를 개선한다 (#523)

* feat: 지역별 음식점 조회 기능 작성 (#534)

* test: 테스트 데이터 삽입을 위한 기능 추가 (#529)

* test: 지역별 음식점 조회 인수 테스트 작성 (#529)

* feat: 주소 조건으로 음식점 조회하는 쿼리 DAO에 추가 (#529)

* feat: 주소 조건으로 음식점 조회하는 기능 구현 (#529)

* test: TestData 사용하기 편하게 수정 (#529)

* style: polishing (#529)

* refactor: polishing RestaurantWithDistanceDao (#529)

* test: polishing (#529)

* fix: api endpoint 프론트 요청에 따라 임시방편으로 수정 (#529)

* feat: 공간데이터를 적용하여 음식점 조회 기능 개선 (#544)

* fix: 동적쿼리 관련 레거시 코드 제거 (#419)

* fix: 로그 관련 필요없는 코드 제거

* infra: hibernate 공간데이터 의존성 추가 (#535)

* feat: 음식점에 Point 필드 추가 (#535)

* feat: 행정구역에 대한 엔티티 추가 (#535)

* style: 어노테이션 순서 변경

* test: 잘못된 테스트 이름 수정

* fix: AdministrativeDistrict의 polygon 타입 변경 (#535)

Polygon으로 하면 예외 발생

* fix: AdministrativeDistrict의 polygon 타입 패키지 변경 (#535)

queryDsl의 지원을 받기 위해서는 org.geolatte.geom.Geometry 패키지를 사용해야 함

* infra: queryDsl 공간데이터 의존성 추가 (#535)

* fix: Restaurant의 point 타입 패키지 변경 (#535)

queryDsl의 지원을 받기 위해서는 org.geolatte.geom.Geometry 패키지를 사용해야 함

* feat: 공간데이터를 통한 정확한 지역별 음식점 조회 기능 추가 (#535)

* refactor: 레거시 코드 제거 (#535)

* feat: 지역으로 음식점 검색 시 좋아요 여부 함께 반환 (#535)

* feat: 위도 경도를 필수 조건으로 받지 않도록 변경한다 (#547)

* feat: 요청 인자 예외에 대한 예외 메세지 추가 (#536)

* refactor: 음식점 인수테스트 사소한 수정 (#536)

* feat: 음식점 검색 시 위경도 조건을 모두 입력하지 않으면 대한민국 전체로 검색 (#536)

* refactor: dao 리팩토링 (#549)

* fix: 지역으로 음식점 조회 레거시 코드 제거 (#548)

* style: polishing

* refactor: RestaurantWithDistanceDao 제거하고 SimpleResponse로 통일 (#548)

* refactor: 네이밍 변경 (#548)

* style: 공백 제거 (#548)

* refactor: RestaurantWithDistance 제거 (#548)

* refactor: Polishing (#548)

* refactor: Polishing (#548)

* feat: 리뷰 등록 api 수정 (#550)

refactor: 이미지 업로드 로직 트랜잭션에서 분리 (#532)

refactor: 불필요한 final 제거 (#532)

refactor: Repository 메서드 이름 수정 (#532)

refactor: 리뷰 총합 필드 이름 수정 (#532)

fix: 리뷰 삭제시 좋아요, 이미지 삭제 로직 추가 (#532)

feat: 리뷰 작성 요청 API 구현 (#532)

fix: multipart/form-data 타입에서 body 사라지는 오류 수정 (#532)

infra: submodule 업데이트

feat: 리뷰 추가/수정/삭제에 따라 음식점 데이터(리뷰 수, 총 평점) 변경 로직 추가 (#532)

feat: 음식점 리뷰수 역정규화 (#532)

feat: 파일이름 util 클래스 추가 (#532)

feat: 추가된 평점 컬럼 반영 (#532)

feat: Review erd 수정 (#532)

feat: Aws S3 image 업로드 기능 추가 (#533)

chore: Aws S3 library 의존성 추가 (#533)

* refactor: 리뷰 조회시 이미지, 평점, 좋아요 여부 포함하여 응답 (#553)

* refactor: Dao에서만 사용 되는 support로 분리 (#552)

* feat: 리뷰 응답시 이미지와 별점 포함하여 응답 (#552)

* feat: 리뷰 좋아요 수 역정규화 (#552)

* fix: Optional 결과와 관계없이 호출되는 consumer 로직 제거 (#552)

* feat: 리뷰 좋아요에 따른 리뷰 좋아요수 증감 로직 추가(#552)

* feat: 리뷰 조회시 좋아요 여부와 좋아요 수 포함하여 응답하는 로직 추가 (#552)

* feat: 리뷰 조회시 좋아요 여부와 좋아요 수 포함하여 응답하는 API 추가 (#552)

* style: polishing (#552)

* refactor: RestaurantReview에 좋아요수 기본값으로 설정하는 부생성자 추가 (#552)

* refactor: SaveReviewRequestCommand에 이미지를 기본값으로 설정하는 부생성자 추가 (#552)

* refactor: Wrapper 클래스 제거 (#552)

* refactor: Service로직을 도메인 메서드로 이동 (#552)

* feat: 음식점 조회 응답에 평점 평균 포함하여 응답 (#554)

* feat: 최근 업데이트된 음식점 조회 api (#561)

* feat: 최근 등록된 음식점 조회 쿼리 구현 (#559)

* feat: 최근 등록된 음식점 조회 API 구현 (#559)

* feat: 셀럽잇 카테고리 조회 기능 구현 (#546)

* feat: Restaurant 에 superCategory 필드 생성 (#531)

* feat: 카테고리 필터 조회 시 superCategory 사용하도록 변경 (#531)

* fix: 실패한 테스트 수정 (#531)

* refactor: 테스트 코드 리팩터링 (#563)

* refactor: 어노테이션 순서 조정 (#541)

* refactor: IntegrationTest에 DisplayNameGeneration 추가 (#541)

* refactor: 전체 테스트 리팩터링 (#541)

* fix: 음식점 지역조회시 이미지 인코딩 오류 수정 (#572)

* fix: 음식점 조회시 좋아요 여부 필드이름 api 문서에 맞게 수정 (#576)

* hotfix: submodule 업데이트

* fix: 음식점 조회시 좋아요 여부 필드이름 api 문서에 맞게 수정 (#577)

* hotfix: Aws S3 Region 수정

* refactor: 테스트코드 fixture를 포함하여 전체적으로 개선한다 (#593)

* style: 컨트롤러 어노테이션 순서 통일 (#583)

* test: Fixture 개선 (#583)

* test: Oauth 관련 서비스(OauthService) 테스트코드 개선 (#583)

* test: 음식점 수정 서비스(RestaurantCorrectionService) 테스트코드 개선 (#583)

* test: 음식점 좋아요 서비스(RestaurantLikeService) 테스트코드 개선 (#583)

* test: 음식점 리뷰 좋아요 서비스(RestaurantReviewLikeService) 테스트코드 개선 (#583)

* test: 음식점 리뷰 신고 서비스(RestaurantReviewReportService) 테스트코드 (#583)

* test: 음식점 리뷰(RestaurantReview)에 도메인 로직 추가 & 단위테스트 작성 (#583)

* test: 음식점 리뷰 서비스(RestaurantReviewService) 테스트코드 개선 (#583)

* test: RestaurantService(음식점 서비스) 테스트코드 개선 (#583)

* feat: DAO 슬라이스 테스트를 위한 어노테이션 추가 (#583)

* feat: 셀럽 전체조회를 위한 FindAllCelebResponseDao 작성 (#583)

* feat: CelebQueryService 작성 (#583)

* refactor: SuggestCorrectionRequestCommand -> SuggestCorrectionCommand 이름 변경 (#583)

* refactor: 음식점 좋아요(RestaurantLike)에 비즈니스 로직 작성 (#583)

* refactor: 음식점 리뷰 좋아요에 대한 비즈니스 로직 작성 (#583)

* refactor: 음식점 리뷰 서비스 로직 개선 (#583)

* refactor: 음식점 리뷰 이미지 관련 로직 개선 (#583)

1. 음식점 리뷰 이미지를, 음식점 리뷰에서 관리하도록 연관관계 방향 바꾸기
2. Service에서 MultipartFile에 대한 의존성 제거

* test: 회원 프로필 조회 DAO(OauthMemberProfileResponseDao) 테스트코드 작성 (#583)

* refactor: 멤버 조회용 서비스(MemberQueryService) 모킹하여 테스트하도록 변경 (#583)

* test: 지역으로 음식점 조회 DAO(RestaurantByAddressResponseDao) 테스트코드 작성 (#583)

h2 공간데이터 사용을 위한 작업 모음
1. build.gradle에 'org.orbisgis:h2gis:2.2.0' 추가
2. h2-spatial.sql 추가

* refactor: 법정동 코드 명칭을 RegionCode로 변경 (#583)

* refactor: Restaurant 생성자에서 조회수 등, 초기에 0인 값 받지 않도록 변경 (#583)

* refactor: RestaurantDetailResponseDao 메서드명 변경 (#583)

* test: 음식점 상세조회 DAO(RestaurantDetailResponseDao) 테스트코드 작성 (#583)

* refactor: 좋아요 누른 음식점 조회 DAO 네이밍 변경 LikedRestaurantQueryResponseDao (#583)

* refactor: 조회용 Response에 공통적으로 Query 붙이기, 패키지 구조 통일 (#583)

* refactor: RestaurantReview 메서드 시그니처 변경 (#583)

- 내용, 별점, 이미지를 묶어주기 위해 변경함

* refactor: RestaurantReviewQueryResponse -> RestaurantReviewsQueryResponse 네이밍 변경과, 내부 클래스로 dto 작성 (#583)

* test: 음식점 상세조회 DAO 테스트 케이스 추가 (#583)

* test: 음식점 리뷰 조회 DAO(RestaurantReviewsQueryResponseDao) 테스트코드 작성 (#583)

* feat: 평점 관련 유틸리티 클래스 생성 (#583)

* refactor: 음식점 조회시 쿼리에서 평균 평점 구하는 로직 제거 (#583)

* refactor: 음식점의 위경도와 지점을 RestaurantPoint를 통해 관리 (#583)

* refactor: 메서드명 수정, 주석 수정 (#583)

* test: 음식점 검색 DAO(RestaurantSearchQueryResponseDao) 테스트 재작성 (#583)

* refactor: RestaurantByRegionCodeQueryResponse의 셀럽과 이미지 dto를 기존 클래스 재사용하도록 수정 (#583)

* refactor: 거리 정보를 담지 않은 음식점 DTO 네이밍을 RestaurantSearchWithoutDistanceQueryResponse로 변경 (#583)

* refactor: DTO의 Double을 double로 변경 (#583)

* refactor: 최근 추가된 음식점 조회 기능을 담당하는 DAO 변경 (#583)

* fix: 법정동코드로 음식점 조회 시 평점도 같이 반환하도록 수정 (#583)

* test: 거리정보 없는 음식점 조회 DAO(RestaurantSearchWithoutDistanceQueryResponseDao)에 최근 추가된 음식점 조회 테스트 추가 (#583)

* refactor: 조회 관련 클래스, 메서드명 통일 (#583)

## 회의가 필요함!
### 문제
- 전체 조회시 어떤건 findAll, 어떤건 find..
- 단일 조회시 어떤건 get, 어떤건 find..
이런 식으로 네이밍이 너무 다른게 많았어!

회의를 하고 진행하면 좋겠지만, 우선 까먹을 것 같아서 고치고 커멘트로 남겨!
- 모든 메서드를 find.. 로 통일했어!
- 이렇게 변경한 이유는 메서드 이름도 짧아지고, 메서드의 시그니처로 충분히 역할 파악이 가능할 거라 생각했기 때문이야!

* refactor: RestaurantDetailQueryResponse에서 음식점의 좋아요 수를 따로 받지 않고, 음식점의 필드를 사용하도록 변경 (#583)

- 역정규화를 통해 좋아요 수를 셀 필요 없는데, 필요없는 쿼리가 발생하고 있었어!

* refactor: RestaurantSearchQueryResponse 필드 순서 변경 (#583)

* test: 음식점 검색 DAO(RestaurantSearchQueryResponseDao) 테스트코드 수정 (#583)

* fix: 음식점 조회 시 좋아요 여부 컬럼 이름 isLiked로 반환되게 수정 (#583)

* test: 음식점 조회 서비스(RestaurantQueryServiceTest) 테스트코드 재작성 (#583)

* test: 음식점 리뷰 조회 서비스(RestaurantReviewQueryService) 테스트코드 재작성 (#583)

* test: 영상 조회용 Dao(VideoQueryResponseDao) 테스트코드 재작성 (#583)

* test: 영상 조회용 서비스(VideoQueryService) 테스트코드 재작성 (#583)

* test: 회원 관련 인수테스트 Polishing (#583)

* test: 셀럽 관련 인수테스트 Polishing (#583)

* test: RestaurantSearchQueryResponseDaoTest 필요없는 초기 데이터 제거  (#583)

* test: 음식점 인수테스트 재작성 (#583)

* test: VideoFixture 메서드 시그니처 수정 (#583)

* refactor: RestaurantAcceptanceSteps에서 사용하지 않는 메서드 제거 (#583)

* test: 음식점 좋아요 관련 인수테스트 재작성 (#583)

* test: 음식점 리뷰 관련 인수테스트 재작성 (#583)

* test: 음식점 리뷰 좋아요 관련 인수테스트 재작성 (#583)

* test: 음식점 리뷰 신고 관련 인수테스트 재작성 (#583)

* refactor: 음식점과 음식점 좋아요 인수테스트 합침 (#583)

* refactor: 음식점 리뷰와 음식점 리뷰 좋아요 인수테스트 합침 (#583)

* refactor: 인수테스트 메서드명 통일 (#583)

* test: 영상 인수테스트 재작성 (#583)

* refactor: reformat code (#583)

* refactor: RestaurantFixture 필요없는 코드 제거 (#583)

* refactor: 필요없는 클래스 제거 (#583)

* refactor: 오버로딩된 메서드 순서 통일 (#583)

* refactor: 테스트코드 상수를 통한 가독성 향상 (#583)

* refactor: 검증 메서드 네이밍 통일 (#583)

* refactor: 리뷰 평점 검증 가독성 증가 (#583)

* fix: 레스토랑 리뷰 이미지 이름 인코딩 추가 (#583)

* fix: 레스토랑 리뷰 이미지 이름 인코딩 추가로 인한 오류 수정 (#583)

* feat: 메인 페이지 api url 수정 위시리스트 api 응답 변경 (#602)

* fix: API URL 수정 (#592)

* style: 메서드 순서 변경 (#592)

* feat: 위시리스트 조회 필드 추가 (#583)

* refactor: 테스트코드 초기 데이터 세팅 편의성 개선 (#583)

* refactor: 셀럽잇 카테고리 조회 기능 개선 (#604)

* feat: CategoryMapper 구현 (#600)

* refactor: superCategory 제거 (#600)

* fix: 컨플릭트 해결

* fix: 지역으로 검색 시 이미지 인코딩 (#609)

* test: 카테고리 조회 인수테스트 작성 (#611)

* test: 인수테스트 작성 (#610)

* test: DisplayName 작성 및 테스트명 개선 (#610)

* test: 좋아요 여부 true, false -> 좋아요 누름, 좋아요 누르지 않음으로 변경 (#610)

* test: 사용하지 않는 상위 카테고리 메서드 제거 (#610)

* feat: 셀럽잇 추천 음식점 조회 api (#614)

* feat: RestaurantRecommendation 추가 (#608)

* feat: RestaurantRecommendation API 추가 (#608)

* style: 코멘트 제거

---------

Co-authored-by: TaeyeonRoyce <[email protected]>
Co-authored-by: Taeyeon <[email protected]>
Co-authored-by: odo27 <[email protected]>
Co-authored-by: 김동호 <[email protected]>
Co-authored-by: odo27 <[email protected]>
  • Loading branch information
6 people authored Oct 10, 2023
1 parent 054c669 commit 2c31f9f
Show file tree
Hide file tree
Showing 174 changed files with 7,036 additions and 4,901 deletions.
2 changes: 1 addition & 1 deletion backend/backend-submodule
10 changes: 10 additions & 0 deletions backend/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,14 @@ dependencies {
implementation "com.querydsl:querydsl-core"
implementation "com.querydsl:querydsl-collections"

// FOR AWS S3
implementation platform('software.amazon.awssdk:bom:2.15.0')
implementation 'software.amazon.awssdk:s3control'

implementation 'org.hibernate:hibernate-spatial:6.2.5.Final'

annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
implementation "com.querydsl:querydsl-sql-spatial"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"

Expand All @@ -62,6 +69,9 @@ dependencies {
testCompileOnly 'org.projectlombok:lombok'

testAnnotationProcessor 'org.projectlombok:lombok'

// FOR h2 spatial
testRuntimeOnly 'org.orbisgis:h2gis:2.2.0'
}

tasks.named('test') {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,9 @@
public class AdminService {

private final CelebRepository celebRepository;
private final VideoRepository videoRepository;
private final RestaurantRepository restaurantRepository;
private final RestaurantImageRepository restaurantImageRepository;
private final VideoRepository videoRepository;

public void saveData(List<SaveDataRequest> requests) {
for (SaveDataRequest request : requests) {
Expand All @@ -57,10 +57,13 @@ private List<RestaurantImage> toRestaurantImages(SaveDataRequest request, Restau
if (imageNames.length != instagramNames.length) {
throw new AdminException(MISMATCH_COUNT_IMAGE_NAME_AND_INSTAGRAM_NAME);
}

List<RestaurantImage> images = new ArrayList<>();
for (int i = 0; i < imageNames.length; i++) {
RestaurantImage restaurantImage = request.toRestaurantImage(imageNames[i].strip(), instagramNames[i].strip(), restaurant);
RestaurantImage restaurantImage = request.toRestaurantImage(
imageNames[i].strip(),
instagramNames[i].strip(),
restaurant
);
images.add(restaurantImage);
}
return images;
Expand All @@ -72,7 +75,6 @@ private List<Video> toVideos(SaveDataRequest request, Celeb celeb, Restaurant re
if (videoUrls.length != uploadDates.length) {
throw new AdminException(MISMATCH_COUNT_YOUTUBE_VIDEO_LINK_AND_UPLOAD_DATE);
}

List<Video> videos = new ArrayList<>();
for (int i = 0; i < videoUrls.length; i++) {
String videoUrl = videoUrls[i].strip();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@
@RequiredArgsConstructor
public enum AdminExceptionType implements BaseExceptionType {

NOT_EXISTS_CELEB(BAD_REQUEST, "셀럽이 저장되어 있지 않습니다. 셀럽 먼저 저장해주세요."),
ILLEGAL_DATE_FORMAT(BAD_REQUEST, "영상 업로드 날짜 형식이 잘못됐습니다. 'yyyy. M. d' 형식으로 입력해주세요."),
ILLEGAL_FORMAT(BAD_REQUEST, "데이터 저장 양식이 잘못됐습니다. 엑셀 폼을 준수해주세요."),
EXIST_NULL(BAD_REQUEST, "입력되지 않은 값이 있습니다."),
INVALID_YOUTUBE_CHANNEL_NAME(BAD_REQUEST, "유튜브 채널 명이 잘못됐습니다. 앞에 '@'를 붙여주세요."),
INVALID_URL_PATTERN(BAD_REQUEST, "URL 패턴이 잘못됐습니다. 확인 후 다시 입력해주세요."),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.celuveat.admin.presentation.dto.SaveDataRequest;
import java.util.Arrays;
import java.util.List;
import java.util.function.Function;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Profile;
import org.springframework.http.ResponseEntity;
Expand All @@ -25,23 +26,23 @@ public class AdminController {

@PostMapping("/data")
ResponseEntity<Void> saveData(@RequestBody String rawData) {
String[] rows = rawData.split(System.lineSeparator());
List<SaveDataRequest> requests = Arrays.stream(rows)
.map(row -> row.split(TAB, -1))
.map(SaveDataRequest::from)
.toList();
adminService.saveData(requests);
List<SaveDataRequest> request = toRequest(rawData, SaveDataRequest::from);
adminService.saveData(request);
return ResponseEntity.ok().build();
}

@PostMapping("/celebs")
ResponseEntity<Void> saveCelebs(@RequestBody String rawData) {
List<SaveCelebRequest> request = toRequest(rawData, SaveCelebRequest::new);
adminService.saveCelebs(request);
return ResponseEntity.ok().build();
}

private <T> List<T> toRequest(String rawData, Function<String[], T> function) {
String[] rows = rawData.split(System.lineSeparator());
List<SaveCelebRequest> requests = Arrays.stream(rows)
return Arrays.stream(rows)
.map(row -> row.split(TAB, -1))
.map(SaveCelebRequest::new)
.map(function)
.toList();
adminService.saveCelebs(requests);
return ResponseEntity.ok().build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ public record SaveDataRequest(
String videoUploadDate,
String latitude,
String longitude,
String instagramName
String instagramName,
String superCategory
) {

private static final int RESTAURANT_NAME = 0;
Expand All @@ -36,6 +37,7 @@ public record SaveDataRequest(
private static final int LONGITUDE = 9;
private static final int IMAGE_NAME = 10;
private static final int INSTAGRAM_NAME = 11;
private static final int SUPER_CATEGORY = 12;

public static SaveDataRequest from(String[] data) {
return SaveDataRequest.builder()
Expand All @@ -51,6 +53,7 @@ public static SaveDataRequest from(String[] data) {
.latitude(data[LATITUDE])
.longitude(data[LONGITUDE])
.instagramName(data[INSTAGRAM_NAME])
.superCategory(data[SUPER_CATEGORY])
.build();
}

Expand All @@ -63,7 +66,6 @@ public Restaurant toRestaurant() {
.longitude(Double.parseDouble(longitude))
.phoneNumber(phoneNumber)
.naverMapUrl(naverMapUrl)
.viewCount(0)
.build();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
package com.celuveat.administrativedistrict.domain;

import static lombok.AccessLevel.PROTECTED;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.NoArgsConstructor;
import org.geolatte.geom.Geometry;

@Entity
@Builder
@AllArgsConstructor
@NoArgsConstructor(access = PROTECTED)
public class AdministrativeDistrict {

@Id
private Long id;

@Column(nullable = false)
private Geometry<?> polygon;

@Column(unique = true, nullable = false)
private String code;

@Column(nullable = false)
private String englishName;

@Column(nullable = false)
private String koreanName;

public Long id() {
return id;
}

public Geometry<?> polygon() {
return polygon;
}

public String code() {
return code;
}

public String englishName() {
return englishName;
}

public String koreanName() {
return koreanName;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ public class LocalAuthController {
ResponseEntity<Void> login(
@RequestParam String id,
HttpServletRequest request,
HttpServletResponse response) {
HttpServletResponse response
) {
OauthId oauthId = new OauthId(id, KAKAO);
OauthMember oauthMember = new OauthMember(oauthId, id, null);
OauthMember savedMember = oauthMemberRepository.findByOauthId(oauthId)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.celuveat.auth.presentation;

import com.celuveat.auth.query.MemberQueryService;
import com.celuveat.auth.query.dto.MemberProfileResponse;
import com.celuveat.auth.query.OauthMemberQueryService;
import com.celuveat.auth.query.dto.OauthMemberProfileResponse;
import com.celuveat.common.auth.Auth;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
Expand All @@ -14,10 +14,10 @@
@RequestMapping("/members")
public class MemberController {

private final MemberQueryService memberQueryService;
private final OauthMemberQueryService OAuthMemberQueryService;

@GetMapping("/my")
public ResponseEntity<MemberProfileResponse> getMemberProfile(@Auth Long memberId) {
return ResponseEntity.ok(memberQueryService.getProfile(memberId));
public ResponseEntity<OauthMemberProfileResponse> getMemberProfile(@Auth Long memberId) {
return ResponseEntity.ok(OAuthMemberQueryService.getProfile(memberId));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@ ResponseEntity<Void> login(

@GetMapping("/logout/{oauthServerType}")
ResponseEntity<Void> logout(
@PathVariable OauthServerType oauthServerType,
@Auth Long memberId,
@PathVariable OauthServerType oauthServerType,
HttpServletRequest request
) {
oauthService.logout(oauthServerType, memberId);
Expand All @@ -61,8 +61,8 @@ ResponseEntity<Void> logout(

@DeleteMapping("/withdraw/{oauthServerType}")
ResponseEntity<Void> withdraw(
@PathVariable OauthServerType oauthServerType,
@Auth Long memberId,
@PathVariable OauthServerType oauthServerType,
HttpServletRequest request
) {
oauthService.withdraw(oauthServerType, memberId);
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.celuveat.auth.query;

import com.celuveat.auth.query.dao.OauthMemberProfileResponseDao;
import com.celuveat.auth.query.dto.OauthMemberProfileResponse;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

@Service
@RequiredArgsConstructor
public class OauthMemberQueryService {

private final OauthMemberProfileResponseDao oauthMemberProfileResponseDao;

public OauthMemberProfileResponse getProfile(Long memberId) {
return oauthMemberProfileResponseDao.find(memberId);
}
}
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
package com.celuveat.auth.query.dao;

import com.celuveat.auth.command.domain.OauthMember;
import com.celuveat.auth.query.dto.MemberProfileResponse;
import com.celuveat.auth.query.dao.support.OauthMemberQueryDaoSupport;
import com.celuveat.auth.query.dto.OauthMemberProfileResponse;
import com.celuveat.common.dao.Dao;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

@Repository
@Dao
@RequiredArgsConstructor
@Transactional(readOnly = true)
public class MemberProfileResponseDao {
public class OauthMemberProfileResponseDao {

private final OauthMemberQueryDaoSupport oauthMemberQueryDaoSupport;

public MemberProfileResponse find(Long memberId) {
public OauthMemberProfileResponse find(Long memberId) {
OauthMember member = oauthMemberQueryDaoSupport.getById(memberId);
return new MemberProfileResponse(
return new OauthMemberProfileResponse(
member.id(),
member.nickname(),
member.profileImageUrl(),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.celuveat.auth.query.dao;
package com.celuveat.auth.query.dao.support;

import static com.celuveat.auth.exception.AuthExceptionType.NOT_FOUND_MEMBER;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.celuveat.auth.query.dto;

public record MemberProfileResponse(
public record OauthMemberProfileResponse(
Long memberId,
String nickname,
String profileImageUrl,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.celuveat.celeb.command.domain;

import static com.celuveat.admin.exception.AdminExceptionType.NOT_EXISTS_CELEB;
import static com.celuveat.celeb.exception.CelebExceptionType.NOT_FOUND_CELEB;

import com.celuveat.admin.exception.AdminException;
import com.celuveat.celeb.exception.CelebException;
import java.util.Optional;
import org.springframework.data.jpa.repository.JpaRepository;

Expand All @@ -12,6 +12,6 @@ public interface CelebRepository extends JpaRepository<Celeb, Long> {

default Celeb getByYoutubeChannelName(String youtubeChannelName) {
return findByYoutubeChannelName(youtubeChannelName)
.orElseThrow(() -> new AdminException(NOT_EXISTS_CELEB));
.orElseThrow(() -> new CelebException(NOT_FOUND_CELEB));
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.celuveat.celeb.presentation;

import com.celuveat.celeb.command.domain.CelebRepository;
import com.celuveat.celeb.presentation.response.FindAllCelebResponse;
import com.celuveat.celeb.query.CelebQueryService;
import com.celuveat.celeb.query.dto.CelebQueryResponse;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
Expand All @@ -14,14 +14,11 @@
@RequestMapping("/celebs")
public class CelebController {

private final CelebRepository celebRepository;
private final CelebQueryService celebQueryService;

@GetMapping
ResponseEntity<List<FindAllCelebResponse>> findAll() {
List<FindAllCelebResponse> result = celebRepository.findAll()
.stream()
.map(FindAllCelebResponse::from)
.toList();
ResponseEntity<List<CelebQueryResponse>> find() {
List<CelebQueryResponse> result = celebQueryService.find();
return ResponseEntity.ok(result);
}
}
Loading

0 comments on commit 2c31f9f

Please sign in to comment.