Skip to content

Commit

Permalink
[release] 배포합니다! (#196)
Browse files Browse the repository at this point in the history
* style [#56] 엔터 추가

* feat [#56] 콘서트 정보 조회 API 구현

* refactor [#62] 매개변수가 하나인 함수 이름을 from으로 변경

* refactor [#62] 작성된 예외 처리 클래스로 변경

* hotfix [#69] ArtistResolver에서 같은 객체를 계속 탐색하는 것을 수정

* fix [#76] ArtistResolver의 load 함수에서 target이 리스트 타입인 경우 탐색 가능하도록 수정

* style [#76] print 함수 제거

* hotfix [#81] ArtistResolver 수동으로 매핑하는 방법으로 변경

* style [#81] 주석 추가

* feat [#78] 임시 페스티벌 생성 API 구현

* feat [#57] ArtistFavoriteController 구현

* feat [#57] UserFavoriteFacade 구현

* feat [#57] ArtistFavoriteService, Repository 구현

* feat [#57] 아티스트 목록 최대 3개만 조회하도록 제한

* refactor [#57] 메서드 of->from 변경

* refactor [#57] 인자로 user이 아닌 userId 불러오도록 변경

* style [#57] 필요없는 코드 삭제

* fix [#57] 메서드 of->from 변경

* feat [#67] 페스티벌 정보 조회 API 구현 (#84)

* feat [#67] 페스티벌 정보 조회 API 응답 DTO 생성

* feat [#67] 페스티벌 정보 조회 API 구현

* feat [#67] 페스티벌 정보 조회 API 응답 DTO 생성

* feat [#67] 페스티벌 정보 조회 API 구현

* feat [#67] 페스티벌 정보 조회 API 응답 DTO 생성

* feat [#67] 페스티벌 정보 조회 API 구현

* feat [#67] 페스티벌 정보 조회 API 응답 DTO 생성

* feat [#67] 페스티벌 정보 조회 API 구현

* chore [#67] DB 쿼리 값 확인을 위해 p6spy 의존성 추가

* feat [#67] 값 전달을 위해 DTO 생성

* refactor [#67] 값 타입 변경을 위해 엔티티 파일 수정

* fix [#67] artistIds 아이디 수집 변수에 Artist Id 값을 추가하는 것으로 변경

* feat [#85] 아티스트 검색 API 구현

* refactor [#87] 콘서트 정보 조회 API 변경에 따른 수정

* refactor [#89] 함수명을 명확히 수정, 조회 함수에 트랜잭션 readonly = true 추가

* feat [#89] 아티스트 좋아요 추가 API 구현

* refactor [#89] addArtistFavorite에서 artistId 최소값 제거

* feat [#90] 아티스트 좋아요 삭제 API 구현

* refactor [#90] 좋아요를 누르지 않았을 때 NOT FOUND 응답으로 변경

* feat [#91] 콘서트 좋아요 추가 API 구현 (#95)

* feat [#91] 콘서트 좋아요 추가 API 추가

* feat [#90] 아티스트 좋아요 삭제 API 구현

* refactor [#90] 좋아요를 누르지 않았을 때 NOT FOUND 응답으로 변경

* feat [#91] 콘서트 좋아요 추가 API 추가

* style [#92] 함수 위치 재배치

* feat [#92] 콘서트 좋아요 삭제 API 추가 (#97)

* feat [#92] 콘서트 좋아요 삭제 API 추가

* refactor [#92] 유저 서비스에 트랜잭션 추가 및 에러 응답 Unauthorized 설정 및 중복된 함수 제거

* feat [#90] 아티스트 좋아요 삭제 API 구현

* refactor [#90] 좋아요를 누르지 않았을 때 NOT FOUND 응답으로 변경

* feat [#91] 콘서트 좋아요 추가 API 구현 (#95)

* feat [#91] 콘서트 좋아요 추가 API 추가

* feat [#90] 아티스트 좋아요 삭제 API 구현

* refactor [#90] 좋아요를 누르지 않았을 때 NOT FOUND 응답으로 변경

* feat [#91] 콘서트 좋아요 추가 API 추가

* style [#92] 함수 위치 재배치

* feat [#92] 콘서트 좋아요 삭제 API 추가

* refactor [#92] 유저 서비스에 트랜잭션 추가 및 에러 응답 Unauthorized 설정 및 중복된 함수 제거

* feat [#92] 아티스트 접기/펼치기 기준 값 상수 추가

* refactor [#92] 아티스트 접기/펼치기 기준 값 상수 사용하도록 변경

* feat [#98] CORS 허용 도메인 추가

* refactor [#100] DateConvertor static 클래스로 변경

* feat [#83] 타임테이블에 등록된 페스티벌, 날짜 조회 (#96)

* feat [#67] 페스티벌 정보 조회 API 구현 (#84)

* feat [#67] 페스티벌 정보 조회 API 응답 DTO 생성

* feat [#67] 페스티벌 정보 조회 API 구현

* feat [#67] 페스티벌 정보 조회 API 응답 DTO 생성

* feat [#67] 페스티벌 정보 조회 API 구현

* feat [#67] 페스티벌 정보 조회 API 응답 DTO 생성

* feat [#67] 페스티벌 정보 조회 API 구현

* feat [#67] 페스티벌 정보 조회 API 응답 DTO 생성

* feat [#67] 페스티벌 정보 조회 API 구현

* chore [#67] DB 쿼리 값 확인을 위해 p6spy 의존성 추가

* feat [#67] 값 전달을 위해 DTO 생성

* refactor [#67] 값 타입 변경을 위해 엔티티 파일 수정

* fix [#67] artistIds 아이디 수집 변수에 Artist Id 값을 추가하는 것으로 변경

* feat [#83] UserTimetable 컨트롤러 구현

* feat [#83] UserTimetableResponse api 응답값 구현

* feat [#83] UserTimetableFacade 구현

* feat [#83] UserTimetable Dto 구현

* feat [#83] UserTimetable service 구현

* feat [#90] 아티스트 좋아요 삭제 API 구현

* refactor [#90] 좋아요를 누르지 않았을 때 NOT FOUND 응답으로 변경

* feat [#91] 콘서트 좋아요 추가 API 구현 (#95)

* feat [#91] 콘서트 좋아요 추가 API 추가

* feat [#90] 아티스트 좋아요 삭제 API 구현

* refactor [#90] 좋아요를 누르지 않았을 때 NOT FOUND 응답으로 변경

* feat [#91] 콘서트 좋아요 추가 API 추가

* style [#92] 함수 위치 재배치

* feat [#92] 콘서트 좋아요 삭제 API 추가 (#97)

* feat [#92] 콘서트 좋아요 삭제 API 추가

* refactor [#92] 유저 서비스에 트랜잭션 추가 및 에러 응답 Unauthorized 설정 및 중복된 함수 제거

* feat [#90] 아티스트 좋아요 삭제 API 구현

* refactor [#90] 좋아요를 누르지 않았을 때 NOT FOUND 응답으로 변경

* feat [#91] 콘서트 좋아요 추가 API 구현 (#95)

* feat [#91] 콘서트 좋아요 추가 API 추가

* feat [#90] 아티스트 좋아요 삭제 API 구현

* refactor [#90] 좋아요를 누르지 않았을 때 NOT FOUND 응답으로 변경

* feat [#91] 콘서트 좋아요 추가 API 추가

* style [#92] 함수 위치 재배치

* feat [#92] 콘서트 좋아요 삭제 API 추가

* refactor [#92] 유저 서비스에 트랜잭션 추가 및 에러 응답 Unauthorized 설정 및 중복된 함수 제거

* feat [#92] 아티스트 접기/펼치기 기준 값 상수 추가

* refactor [#92] 아티스트 접기/펼치기 기준 값 상수 사용하도록 변경

* feat [#98] CORS 허용 도메인 추가

* refactor [#100] DateConvertor static 클래스로 변경

* feat [#67] 페스티벌 정보 조회 API 구현 (#84)

* feat [#67] 페스티벌 정보 조회 API 응답 DTO 생성

* feat [#67] 페스티벌 정보 조회 API 구현

* feat [#67] 페스티벌 정보 조회 API 응답 DTO 생성

* feat [#67] 페스티벌 정보 조회 API 구현

* feat [#67] 페스티벌 정보 조회 API 응답 DTO 생성

* feat [#67] 페스티벌 정보 조회 API 구현

* feat [#67] 페스티벌 정보 조회 API 응답 DTO 생성

* feat [#67] 페스티벌 정보 조회 API 구현

* chore [#67] DB 쿼리 값 확인을 위해 p6spy 의존성 추가

* feat [#67] 값 전달을 위해 DTO 생성

* refactor [#67] 값 타입 변경을 위해 엔티티 파일 수정

* fix [#67] artistIds 아이디 수집 변수에 Artist Id 값을 추가하는 것으로 변경

* feat [#83] UserTimetable 컨트롤러 구현

* feat [#83] UserTimetableResponse api 응답값 구현

* feat [#83] UserTimetableFacade 구현

* feat [#83] UserTimetable Dto 구현

* feat [#83] UserTimetable service 구현

* 작업중

* feat [#83] 날짜 포맷팅 설정 추가

* feat [#83] s3핸들러 설정 추가

* style [#83] 오타 수정

---------

Co-authored-by: chyun <[email protected]>

* refactor [#105] 날짜 매핑 방법 변경

* refactor [#105] 날짜 매핑 방법 변경

* feat [#107] existsById 반환 값 boolean으로 변경 및 타임테이블 페스티벌 삭제 API 구현

* feat [#109] 공연(콘서트, 페스티벌) 정보 조회 날짜가 지나지 않았는지 검증 추가

* refactor [#109] 공연 좋아요 여부 조회 로직 분리

* refactor [#109] 공연, 아티스트 좋아요 여부 조회 로직 분리

* refactor [#109] 공연, 아티스트, 유저 존재 여부 조회 로직 분리

* style [#109] 주석 추가

* refactor [#109] 엔티티 존재 여부 메소드 분리

* fix [#109] 지난 페스티벌을 제외하고 타임테이블에 추가된 페스티벌을 조회하는 기능 추가

* style [#109] 불필요한 import 제거

* feat [#111] 타임테이블에 페스티벌 추가 API 구현 (#112)

* feat [#111] 타임테이블 페스티벌 추가 요청값 생성

* feat [#111] 요청값 전달 DTO 작성

* feat [#111] 타임테이블에 페스티벌 추가 API 구현

* feat [#111] 타임테이블 에러 응답 메세지 작성

* refactor [#111] 에러 응답 메세지 @Getter 사용으로 변경

* refactor [#111] 현재 페스티벌과 추가할 페스티벌 변수 위치 변경

* refactor [#111] 사용하지않는 함수 제거

* refactor [#111] 에러 메시지에 @Getter 사용 및 Enum 타입 생성자에 private 접근지정자 제거

* feat [#109] 공연(콘서트, 페스티벌) 정보 조회 날짜가 지나지 않았는지 검증 추가

* refactor [#109] 공연 좋아요 여부 조회 로직 분리

* refactor [#109] 공연, 아티스트 좋아요 여부 조회 로직 분리

* refactor [#109] 공연, 아티스트, 유저 존재 여부 조회 로직 분리

* style [#109] 주석 추가

* refactor [#109] 엔티티 존재 여부 메소드 분리

* fix [#109] 지난 페스티벌을 제외하고 타임테이블에 추가된 페스티벌을 조회하는 기능 추가

* style [#109] 불필요한 import 제거

* feat [#111] 타임테이블 페스티벌 추가 요청값 생성

* feat [#111] 요청값 전달 DTO 작성

* feat [#111] 타임테이블에 페스티벌 추가 API 구현

* feat [#111] 타임테이블 에러 응답 메세지 작성

* refactor [#111] 에러 응답 메세지 @Getter 사용으로 변경

* refactor [#111] 현재 페스티벌과 추가할 페스티벌 변수 위치 변경

* refactor [#111] 사용하지않는 함수 제거

* refactor [#111] 에러 메시지에 @Getter 사용 및 Enum 타입 생성자에 private 접근지정자 제거

* fix [#111] TimetableFestivalRepository에 findByUserId 함수 추가

* refactor [#111] 타임테이블에 더 이상 추가할 수 없을 때 에러 메세지 변경

* fix [#114] SpotifyAPIHandler 예외 처리 수정

* refactor [#113] 메세지 파일 롬복 어노테이션 사용하도록 변경

* feat [#113] 파사드 계층 관심 공연 DTO 작성

* feat [#113] 공연 타입 상수 파일 작성

* feat [#113] 작업 중간 저장

* feat [#113] 관심 공연 리스트 조회 API 구현

* feat [#117] 아티스트 좋아요 추가 API에 아티스트 아이디가 존재하는지 검증하는 로직 추가

* feat [#117] ConfetiException 글로벌 핸들러 추가

* feat [#117] 아티스트 아이디가 잘못되었을 때도 Not Found로 변경

* fix [#121] 토큰 재발급 로직 추가

* fix [#119] 타임테이블에 페스티벌 추가 시 선택 여부 값 추가

* refactor [#119] ERD 구조 변경에 따른 엔티티 파일 수정

* refactor [#119] 페스티벌 조회 성능 최적화

* refactor [#119] 패치 조인 쿼리 수정

* fix [#119] 타임테이블에 페스티벌 추가/삭제 시 선택 여부 값 추가/삭제 및 ERD 수정에 따른 엔티티 변경

* fix [#127] SpotifyAPIHandler 리프레시 토큰 재발급 로직 재구성 및 마지막 발매 일자 가져오는 방법 변경

* style [#127] 사용하지 않는 변수 제거

* feat [#41] PerformanceController, Response 구현

* feat [#41] PerformanceFacade 구현

* feat [#41] PerformanceDTO 구현

* feat [#41] PerformanceService, Repository 구현

* refactor [#41] 코드리뷰 반영

* feat [#126] 커서 정보 담을 DTO 작성

* feat [#126] 추가할 페스티벌 응답 Response 작성

* feat [#126] 커서 베이스 페이징에 사용할 데이터 DTO 생성

* feat [#126] 커서 베이스 페이징 쿼리 작성

* feat [#126] 커서 베이스 페이징 응답 DTO 생성

* feat [#126] 커서 베이스 페이징 데이터 규격 유틸 작성

* feat [#126] 예정된 페스티벌 목록 조회 API 구현

* refactor [#126] API 명세서에 따라 사이즈 값을 서버에서 설정하도록 변경

* refactor [#126] 커서 대상 페스티벌 조회

* fix [#137] CORS 허용 도메인에 클라이언트 www 도메인 추가

* feat [#104] 타임테이블에 등록된 시간표 조회 Api 구현 (#132)

* feat [#104] UserTimetableController 및 응답값 구현

* feat [#104] UserTimetableFacade 및 DTO 구현

* feat [#104] FestivalDateService 구현

* feat [#104] FestivalDateRepository 구현

* feat [#126] 커서 정보 담을 DTO 작성

* feat [#126] 추가할 페스티벌 응답 Response 작성

* feat [#126] 커서 베이스 페이징에 사용할 데이터 DTO 생성

* feat [#126] 커서 베이스 페이징 쿼리 작성

* feat [#126] 커서 베이스 페이징 응답 DTO 생성

* feat [#126] 커서 베이스 페이징 데이터 규격 유틸 작성

* feat [#126] 예정된 페스티벌 목록 조회 API 구현

* refactor [#126] API 명세서에 따라 사이즈 값을 서버에서 설정하도록 변경

* refactor [#126] 커서 대상 페스티벌 조회

* feat [#104] UserTimetableFacade 및 DTO 구현

* refactor [#104] 원시타입으로 수정

* refactor [#104] Optional 추가

* style [#104] 리베이스 중 중복된 코드 삭제

---------

Co-authored-by: chyun <[email protected]>

* fix [#140] 날짜 값 변경해서 조회

* fix [#145] 페스티벌 생성 요청 형식 수정

* refactor [#143] 콘서트, 페스티벌 필드 값 길이 변경

* refactor [#143] 콘서트, 페스티벌 필드 값 nullable 변경

* fix [#143] ERD 변경에 따라 값 수정

* fix [#143] 기존 DTO를 사용한 Repository 이름을 DTORepository로 수정

* fix [#143] 누락된 수정사항 반영

* feat [#151] CREATED 응답 메세지 추가

* feat [#151] 페스티벌 생성 API에 Performances 테이블 데이터 추가 구현

* fix [#153] 콘서트 정보 조회 API에 좋아요 정보가 전달되지 않는 것을 수정

* feat [#144] 타임테이블 시간표 수정 Request 작성

* feat [#144] 타임테이블 시간표 수정 DTO 추가

* feat [#144] 타임테이블 시간표 수정 facade 추가

* feat [#144] 타임테이블 시간표 수정 서비스 추가

* refactor [#144] saveAll 삭제

* refactor [#156] 타임테이블 시간표 조회 응답값 userTimetableId로 수정

* refactor [#159] 스포티파이에 존재하지 않는 아티스트인 경우 404 응답 처리

* fix [#162] 좋아요가 있을 때 409 반환

* feat [#136] 최신 등록 순 공연 정보 조회 API 구현 (#158)

* feat [#136] 최신 공연 정보 DTO 작성

* feat [#136] 최신 공연 조회 함수 추가

* feat [#136] 최신 공연 조회 함수 구현

* feat [#136] 콘서트/페스티벌 아이디와 타입으로 공연 아이디 요청/응답 DTO 작성

* feat [#136] 파사드 계층에서 컨트롤러 계층 최신 공연 값 DTO 작성

* feat [#136] 콘서트/페스티벌 아이디, 공연 타입으로 공연 아이디 조회하는 로직 구현

* style [#136] 사용하지 않는 파일 삭제

* feat [#136] 최신 공연 정보 조회 응답 DTO 작성

* feat [#136] 파사드 계층 최신 공연 정보 조회 데이터 DTO 수정

* feat [#136] 좋아요 정보 없을 때 최신 공연 정보 조회 구현

* feat [#136] 좋아요 정보 있는 때 최신 공연 정보 조회 구현

* refactor [#156] 타임테이블 시간표 조회 응답값 userTimetableId로 수정

* feat [#136] 최신 공연 정보 DTO 작성

* feat [#136] 최신 공연 조회 함수 추가

* feat [#136] 최신 공연 조회 함수 구현

* feat [#136] 콘서트/페스티벌 아이디와 타입으로 공연 아이디 요청/응답 DTO 작성

* feat [#136] 파사드 계층에서 컨트롤러 계층 최신 공연 값 DTO 작성

* feat [#136] 콘서트/페스티벌 아이디, 공연 타입으로 공연 아이디 조회하는 로직 구현

* style [#136] 사용하지 않는 파일 삭제

* feat [#136] 최신 공연 정보 조회 응답 DTO 작성

* feat [#136] 파사드 계층 최신 공연 정보 조회 데이터 DTO 수정

* feat [#136] 좋아요 정보 없을 때 최신 공연 정보 조회 구현

* feat [#136] 좋아요 정보 있는 때 최신 공연 정보 조회 구현

* refactor [#159] 스포티파이에 존재하지 않는 아티스트인 경우 404 응답 처리

* feat [#136] 최신 공연 정보 DTO 작성

* feat [#136] 최신 공연 조회 함수 추가

* feat [#136] 최신 공연 조회 함수 구현

* feat [#136] 콘서트/페스티벌 아이디와 타입으로 공연 아이디 요청/응답 DTO 작성

* feat [#136] 파사드 계층에서 컨트롤러 계층 최신 공연 값 DTO 작성

* feat [#136] 콘서트/페스티벌 아이디, 공연 타입으로 공연 아이디 조회하는 로직 구현

* style [#136] 사용하지 않는 파일 삭제

* feat [#136] 최신 공연 정보 조회 응답 DTO 작성

* feat [#136] 파사드 계층 최신 공연 정보 조회 데이터 DTO 수정

* feat [#136] 좋아요 정보 없을 때 최신 공연 정보 조회 구현

* feat [#136] 좋아요 정보 있는 때 최신 공연 정보 조회 구현

* feat [#136] 최신 공연 조회 함수 구현

* feat [#136] 파사드 계층에서 컨트롤러 계층 최신 공연 값 DTO 작성

* feat [#136] 콘서트/페스티벌 아이디, 공연 타입으로 공연 아이디 조회하는 로직 구현

* feat [#136] 파사드 계층 최신 공연 정보 조회 데이터 DTO 수정

* feat [#136] 좋아요 정보 없을 때 최신 공연 정보 조회 구현

* feat [#136] 좋아요 정보 있는 때 최신 공연 정보 조회 구현

---------

Co-authored-by: ivoryeee <[email protected]>

* fix [#164] 트랜잭션 추가

* refactor [#167] 컨트롤러 계층에서 url 생성

* fix [#169] 타임테이블 조회 쿼리에 @param 어노테이션 추가

* fix [#169] userTimetableMapper에 FestivalTimeId를 키 값으로 설정

* fix [#172] 이미 추가한 페스티벌은 조회되지 않도록 수정

* feat [#176] CORS 허용 도메인에 클라이언트 IP 추가

* refactor [#176] 아티스트 공연 시작 시간값 추가

* feat [#133] cursorDTO 생성

* feat [#133] cursorRepository 구현

* feat [#133] PerformanceService 구현

* feat [#133] PerformanceFacade 구현

* feat [#133] Performance 응답값 및 DTO 구현

* feat [#133] Performance 컨트롤러 구현

* refactor [#133] ConcertFavoriteService readOnly 추가

* refactor [#133] DTO에서의 posterUrl posterPath로 변수명 수정

* refactor [#133] Repository 내 쿼리문 수정

* refactor [#133] artistStartAt 수정

* fix [#180] CORS 허용 메소드에 PATCH 추가 (#181)

* fix [#180] CORS 허용 메소드에 PATCH 추가

* feat [#133] cursorDTO 생성

* feat [#133] cursorRepository 구현

* feat [#133] PerformanceService 구현

* feat [#133] PerformanceFacade 구현

* feat [#133] Performance 응답값 및 DTO 구현

* feat [#133] Performance 컨트롤러 구현

* refactor [#133] ConcertFavoriteService readOnly 추가

* refactor [#133] DTO에서의 posterUrl posterPath로 변수명 수정

* refactor [#133] Repository 내 쿼리문 수정

* refactor [#133] artistStartAt 수정

* fix [#180] CORS 허용 메소드에 PATCH 추가

---------

Co-authored-by: ivoryeee <[email protected]>

* fix [#183] 관심 있는 아티스트 목록 조회 개수 수정

* fix [#186] 콘서트 생성 API 구현

* fix [#190] 변경된 컬럼값이 적용되지 않은 것을 수정

* fix [#189] 아티스트 검색 결과가 없을 경우 NULL 반환

* fix [#194] 기존 아티스트 아이디 값 조회 로직 변경

---------

Co-authored-by: ivoryeee <[email protected]>
Co-authored-by: Ivoryeee <[email protected]>
  • Loading branch information
3 people authored Jan 24, 2025
1 parent a5b37e8 commit 7a98d8f
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 14 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'

// psy
implementation 'p6spy:p6spy:3.9.1'
implementation 'com.github.gavlyukovskiy:datasource-decorator-spring-boot-autoconfigure:1.9.0'
// implementation 'p6spy:p6spy:3.9.1'
// implementation 'com.github.gavlyukovskiy:datasource-decorator-spring-boot-autoconfigure:1.9.0'

// spotify api
implementation 'se.michaelthelin.spotify:spotify-web-api-java:8.4.1'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,17 @@ public class ArtistFacade {

@Transactional(readOnly = true)
public SearchArtistDTO searchByKeyword(final Long userId, final String keyword) {
ConfetiArtist confetiArtist = spotifyAPIHandler.findArtistsByKeyword(keyword);
Optional<ConfetiArtist> confetiArtist = spotifyAPIHandler.findArtistsByKeyword(keyword);

boolean isFavorite = false;

if (userId != null) {
isFavorite = artistFavoriteService.isFavorite(userId, confetiArtist.getArtistId());
if (userId != null && confetiArtist.isPresent()) {
isFavorite = artistFavoriteService.isFavorite(userId, confetiArtist.get().getArtistId());
}

return SearchArtistDTO.from(confetiArtist, isFavorite);
return SearchArtistDTO.from(
confetiArtist.orElse(ConfetiArtist.empty()),
isFavorite
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ public RecentPerformancesDTO getRecentPerformances(final Long userId) {

@Transactional(readOnly = true)
public RecentPerformancesDTO getRecentPerformancesWithFavorites(final long userId) {
List<ArtistFavorite> artistFavorites = artistFavoriteService.getArtistList(userId);
List<ArtistFavorite> artistFavorites = artistFavoriteService.getArtistIdsByUserId(userId);

return RecentPerformancesDTO.from(
performanceService.getPerformancesByArtistIds(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,9 @@ public void removeFavorite(final long userId, final String artistId) {
public boolean existsByUserId(final long userId) {
return artistFavoriteRepository.existsByUserId(userId);
}

@Transactional(readOnly = true)
public List<ArtistFavorite> getArtistIdsByUserId(final long userId) {
return artistFavoriteRepository.findArtistFavoritesByUserId(userId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,9 @@ public interface ArtistFavoriteRepository extends JpaRepository<ArtistFavorite,
void deleteByUserIdAndArtist_ArtistId(final long userId, final String artistId);

boolean existsByUserId(final long userId);

@Query(
value = "SELECT af FROM ArtistFavorite af JOIN FETCH af.user u WHERE u.id = :userId"
)
List<ArtistFavorite> findArtistFavoritesByUserId(final @Param("userId") long userId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
public class PerformanceService {

private static final int INIT_PAGE = 0;
private static final String START_AT_COLUMN = "startAt";
private static final String START_AT_COLUMN = "performanceStartAt";

private final PerformanceDTORepository performanceDTORepository;
private final PerformanceRepository performanceRepository;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,13 +55,18 @@ public void init() {
refreshCount = REFRESH_INIT_VALUE;
}

public ConfetiArtist findArtistsByKeyword(final String keyword) {
Artist artist = searchArtistByKeyword(keyword)
.orElseThrow(
() -> new ConfetiException(ErrorMessage.NOT_FOUND)
);
public Optional<ConfetiArtist> findArtistsByKeyword(final String keyword) {
Optional<Artist> searched = searchArtistByKeyword(keyword);

if (searched.isEmpty()) {
return Optional.empty();
}

Artist artist = searched.get();

return ConfetiArtist.toConfetiArtist(artist, findLatestReleaseAt(artist.getId()));
return Optional.of(
ConfetiArtist.toConfetiArtist(artist, findLatestReleaseAt(artist.getId()))
);
}

public Optional<ConfetiArtist> findArtistByArtistId(final String artistId) {
Expand Down

0 comments on commit 7a98d8f

Please sign in to comment.