Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test 브랜치 test.Dockerfile 수정 및 test_deploy.yml Github Action 수정 #72

Merged
merged 14 commits into from
Apr 26, 2024

Conversation

gerry-mandering
Copy link
Contributor

PR Type

<!— Please check the one that applies to this PR using "[x]" —>

  • Feat (기능 추가)
  • Fix (버그 수정)
  • Remove (파일 삭제)
  • Rename (파일 이름 변경)
  • Comment (코드 내 주석 추가, 수정, 삭제)
  • Test (테스트 추가, 테스트 리팩토링)
  • Refactor (코드 리팩토링)
  • Style (코드 형식 변경, 세미콜론 추가)
  • Design (사용자 UI, CSS 변경)
  • Docs (문서 수정)
  • Build (빌드 관련)
  • Other - Please Describe:

Summary

  • test.Dockerfile CPU 아키텍쳐 호환성 문제로 jdk-alpine에서 jdk로 변경
  • test_deploy.yml - docker buildx 를 사용해서 멀티 아키텍처를 지원하도록 변경
    • AWS에서 ECS 인스턴스를 t4g.small arm아키텍처 기반으로 사용 중

Description


Issue Number

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가
@gerry-mandering gerry-mandering added the 🏷 Fix 버그 수정 label Apr 25, 2024
@gerry-mandering gerry-mandering self-assigned this Apr 25, 2024
Copy link
Contributor

@kwongwangjae kwongwangjae left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

확인 완료했습니다!! 고생하셨습니다

@gerry-mandering gerry-mandering merged commit 178bdf5 into develop Apr 26, 2024
1 check passed
gerry-mandering added a commit that referenced this pull request May 12, 2024
* feat: mysql + docker 세팅

* Be/#2 JPA 엔티티 코드 구성 (#6)

* Fix: `build.gradle` 오타 수정

* Feat: `BaseTimeEntity` 추상 클래스 설계

- `createdAt` : 생성 일자
- `modifiedAt` : 수정 일자

* Feat: `User` 엔티티 설계

- `id` : `user_id`로 Column명 설정
- `name` : 길이 255자 기본 값으로 설정(구글의 경우, 최대 64자)
- `displayName` : 표시 이름은 최대 50자
- `email` : 이메일의 경우 최대 길이 225자이므로 기본 값으로 설정
- `profileImage` : 프로필 이미지 url

* Fix: `User.java` auto formatting

* Feat: `Genre` 엔티티 설계

- `id` : `genre_id`로 Column명 설정
- `name` : 장르의 명은 최대 50자로 설정

* Feat: `Tag` 엔티티 설계

- `id` : `tag_id`로 Column명 설정
- `name` : 태그 명은 최대 50자로 설정

* Feat: `Genre`와 `Tag` 엔티티에 대표 이미지 url을 저장하는 Image 필드 추가

* Feat: `Genre` 엔티티에 Builder 추가

* Feat: `Tag` 엔티티에 Builder 추가

* Feat: `Genre` 엔티티와 `Track` 엔티티 연관관계 설정

- 양방향 연관관계
- Cascade.ALL : `Genre` 삭제 시, 하위 `Track`들도 삭제 됨

* Feat: `Tag` 엔티티와 `Track` 엔티티 다대다 연관관계 설정

- `TrackTag` 조인 테이블(연관관계 테이블)을 이용한 다대다 관계
- 양방향 연관관계
- `TrackTag` 테이블은 개별 PK를 가짐(복합키 X)

* Feat: `TrackDetail` 엔티티 설계

Reference: https://vladmihalcea.com/the-best-way-to-map-a-onetoone-relationship-with-jpa-and-hibernate/

* Feat: `TrackTag` 엔티티와 `TrackDetail` 엔티티에 `BaseTimeEntity` 엔티티 상속

* Feat: `Like` 엔티티 설계

* Feat: `StreamingHistory` 엔티티 설계

* Feat: `User` 엔티티와 `Like`, `StreamingHistory` 엔티티 사이의 일대다 관계 매핑

* Feat: `Track` 엔티티 설계

* Fix: `Genre` 엔티티 필드명 수정

* Feat: `Playlist`, `PlaylistTrack`, MyPlaylist` 엔티티 설계

* Fix: `Tag` 엔티티 필드명 수정

* Remove: `StreamingHistory` 엔티티의 `streamingDuration` 필드 제거

* Fix: `Track` 엔티티 필드명 수정 및 단방향 관계 처리

* Feat: `UserGenre` 엔티티를 통한 회원 취향 일대다 관계 구성

* Fix: `.gitignore` 파일에 `bin`, 프로퍼티 파일 추가 및 `.gitignore` 재적용 (#9)

* Fix: `pull_request.md` 템플릿 경로 수정 및 `issue.md` 템플릿 기능 수정 항목 추가 (#11)

* BE/#3 특정 곡 등록하기 API 구현 (#14)

* Feat: `build.gradle` 의존성 추가

- Test : `mockito`
- AWS S3 : `awssdk:s3`
- Image Processing `thumbnailator`, `imageio-webp`

* Feat: `S3ClientProperties` 프로퍼티 객체 구현 및 Application에서 프로퍼티 스캔 활성화

* Feat: `S3ClientConfig` - S3 클라이언트 빈 등록 및 `S3FileHandler` 파일 핸들링 객체 구현

* Feat: `ImageResizer` - Thumbnailator 라이브러리로 이미지 리사이징 로직 구현

* Feat: MultipartFile 구현체 및 이미지 / 오디오 파일 S3 업로더 구현

* Feat: `User` 제외한 각 도메인 별 빌더 또는 생성자 및 리포지토리 구현

* Feat: `Track` 도메인 컨트롤러 및 DTO 구현

* Feat: 이미지 / 오디오 MultipartFile들의 커스텀 Validation 어노테이션 구현

* Feat: `TagService` - associtateTrackWithTags() 메소드 구현

* Feat: `TrackService` - Track 업로드 비즈니스 로직 구현

* Feat: `Track` 도메인 테스트코드 작성

- Controller 통합 테스트
- Controller 유닛 테스트
- Service 유닛 테스트

* Feat: `ImageUploader` TrackImage 또는 ThumbnailImage 업로드 실패 시, 로깅 로직 추가

* Fix: `TrackController` 에서 `/api/v1` 접두  경로 제거

* Feat: `.gitignore` - `.vscode` 디렉토리 및 `init.sql` 파일 추가

* Feat: `JpaConfig` Configuration 클래스 작성 (#15)

* BE/#8 `.gitignore` 항목 추가 및 템플릿 경로 수정 (#17)

* Feat: `.gitignore` 에 `init.sql` 과 `.vscode` 추가

* Rename: `issue_template.md` 와 `pull_request_template.md` 경로 `.github` 하위로 변경

* BE/#9 `특정 곡 정보 가져오기` API 구현 및 테스트 코드 작성 (#19)

* Rename: `TrackResponseDto` -> `TrackUploadResponseDto` 명칭 변경

* Rename: `TrackResponseDto` -> `TrackUploadResponseDto` 명칭 변경

* Feat: `TrackResponseDto` 구현

* Feat: `특정 곡 정보 가져오기` API 구현

* Fix: `TrackController` 유닛 테스트 및 통합 테스트 API 요청 경로 수정

* Feat: `build.gradle` 에 `assertj-core` 의존성 추가

* Comment: `TrackService` 주석 추가

* Feat: `TrackTagRepository` - findByTagName() 메소드 추가

* Test: `특정 곡 정보 가져오기` API 테스트 코드 작성

* Be/#6 oAuth 2.0 로그인 로직 구현 (#22)

* feat: build.gradle depandence 추가

jwt + security + oAuth 2.0

* feat: build.gradle 의존성 추가

redis 추가

* faet: 카카오 기본 로그인 화면

백엔드 카카오 로그인 화면 구현

* feat: Cors 허용

react와 같은 외부 라이브러리 Cors 규칙 허용

* feat: oAuth 로그인을 위한 기본 entity 구현

controller 환경 + domain role 추가 Detail은 따로 빼서 구현

* feat: 카카오 데이터베이스 환경 설정

카카오 규칙에 맞는 환경설정 로직 추가

* feat: jwt 생성 및 시간 로직 구현

jwt를 통한 인증 과정 + 시간 설정

* feat: jwt 토큰 예외처리

토큰 만료기간에 대한 예외처리 구현

* feat: 카카오 SecurityConfig + handler

SecurityConfig를 통한 카카오 로그인 후 엑세스토큰 및 리프레스 토근 발급

* BE/#12 `Track` 엔티티에 곡 길이 정보 `duration` 필드 추가 (#24)

* Feat: `Track` 엔티티 `duration` 필드 추가

* Feat: Response Dto `duration` 필드 추가

* Feat: `build.gradle` - `jaudiotagger` 의존성 추기

* Feat: `AudioDataParser` - `extractDurationInSeconds` 곡 길이 추출 메소드 구현

* Feat: `TrackService` - 곡 업로드 시, 곡 길이 저장 로직 추가

* Test: `User` 및 `Track` 도메인 수정 사항 반영해서, 테스트 코드 수정

* Comment: `AudioDataParser` 주석 추가

* BE/#13 `특정 곡 재생 이벤트 기록하기` API 구현 (#27)

* Feat: `StreamingHistoryRepository` 구현

* Feat: `StreamingHistory` 엔티티 빌더 패턴 생성자 구성

* Feat: `특정 곡 재생 이벤트 기록하기` API 구현

* Fix: `JwtVertifyFilter` API 테스트 과정에서 임시로 필터 통과하도록 설정

* Test: `특정 곡 재생 이벤트 기록하기` API 테스트 코드 작성

* BE/#15 `모든 장르 리스트 가져오기` API 구현 (#29)

* Fix: `TrackService`에서 uploadTrack()의 `TrackUploadResponseDto`를 생성할 때 toDto()를 사용하도록 변경

* Feat: `GenreResponseDto` 작성

* Feat: `모든 장르 리스트 가져오기` API 구현

* Test: `모든 장르 리스트 가져오기` API 테스트 코드 작성

* BE/#16 `특정 장르의 모든 곡 가져오기` API 구현 (#31)

* Fix: `track_audio` MultipartFile 검증과정에 `wav` 확장자 추가

* Feat: `TrackRepository` Pagination을 적용한 findAllByGenreId() 메소드 작성

* Feat: `특정 장르의 모든 곡 가져오기` API의 반환 Dto인 `GenreWithTracksResponseDto` 구현

* Feat: `특정 장르의 모든 곡 가져오기` API 구현

* Test: `특정 장르의 모든 곡 가져오기` API 테스트 코드 작성

* BE/#17 `장르별 곡 3개씩 가져오기` API 구현 (#33)

* Feat: `TrackOverviewResponseDto` 작성

* Feat: `GenreWithTracksOverviewResponseDto` 작성

* Feat: `GenreRepository` - Pagination을 지원하는 findAll() 작성

* Feat: `장르별 곡 3개씩 가져오기` API 구현

* Fix: `GenreController`의 `장르별 곡 3개씩 가져오기` API Page 객체 리턴하도록 변경

* Comment: `TrackControllerTest.java` - `uploadTrackSuccess()` 테스트 전체 순차적으로 테스트 진행시 오류 나는 부분 주석 상세하게 명시

* Refactor: `TrackServiceTest`에서 Mock 객체 생성시, 파라미터로 생성하도록 코드의 유연성 높임

* Test: `장르별 곡 3개씩 가져오기` API 테스트 코드 작성

* BE/#18 `모든 태그 리스트 가져오기` 및 `특정 태그의 모든 곡 가져오기` API 구현 (#35)

* Fix: `Tag` 엔티티 `tagImage` 필드 활성화

* Feat: `TagResponseDto` 객체 작성

* Feat: `모든 태그 리스트 가져오기` API 구현

* Feat: `TagWithTracksResponseDto` 구현

* Feat: `특정 태그의 모든 곡 가져오기` API 구현

* Fix: `TagController` - @PageableDefault 항목에서 `page` 0으로 기본값 설정

* Test: `모든 태그 리스트 가져오기` 및 `특정 태그의 모든 곡 가져오기` API 테스트 코드 작성

* BE/#19 `새 플레이리스트 생성하기` API 구현 (#37)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* BE/#20 `특정 플레이리스트 정보 가져오기` API 구현 (#39)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* Feat: `PlaylistWithTracksResponseDto` 작성

* Feat: `MyPlaylist`, `PlaylistTrack` 엔티티가 `BaseTimeEntity`를 상속받도록 변경

* Feat: `PlaylistTrackRepository` - Pagination 적용한 `findAllByPlaylistId() 작성

* Feat: `특정 플레이리스트 정보 가져오기` API 구현

* Feat: `PlaylistTrack` 엔티티 Builder 추가

* Test: `특정 플레이리스트 정보 가져오기` API 테스트 코드 작성

* BE/#21 `특정 플레이리스트 이름 수정하기` API 구현 (#43)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* Feat: `PlaylistWithTracksResponseDto` 작성

* Feat: `MyPlaylist`, `PlaylistTrack` 엔티티가 `BaseTimeEntity`를 상속받도록 변경

* Feat: `PlaylistTrackRepository` - Pagination 적용한 `findAllByPlaylistId() 작성

* Feat: `특정 플레이리스트 정보 가져오기` API 구현

* Feat: `PlaylistTrack` 엔티티 Builder 추가

* Test: `특정 플레이리스트 정보 가져오기` API 테스트 코드 작성

* Rename: `CreatePlaylistResponseDto` -> `PlaylistResponseDto` 객체 명칭 변경

* Feat: `Playlist` - `playlistName` 필드 변경하는 `updatePlaylistName()` 메소드 작성

* Feat: `UpldatePlaylistNameRequestDto` 작성

* Feat: `특정 플레이리스트 이름 수정하기` API 구현

* Test: `특정 플레이리스트 이름 수정하기` API 테스트 코드 작성

* Remove: 중복 import 삭제

* Remove: 중복 import 삭제

* Remove: 중복 import 삭제

* Rename: 서비스 계층 유닛 테스트 코드 객체명 수정 (#44)

* Feat: 서비스 계층 메소드에서 `@Transactional(readOnly=true)` 명시하기 (#45)

* BE/#24 `특정 플레이리스트 삭제하기`, `특정 플레이리스트에 곡 추가하기`, `특정 플레이리스트의 곡 삭제하기` API 구현 (#50)

* Feat: `MyPlaylistRepository`, `PlaylistTrackRepository` 에서 플레이리스트 삭제시 호출되는 `deleteByPlaylist()` 메소드 추가

* Feat: `특정 플레이리스트 삭제하기` API 구현

* Test: `특정 플레이리스트 삭제하기` 테스트 코드 작성

* Feat: `AddTrackToPlaylistRequestDto` 작성

* Feat: `PlaylistTrackRepository` - 플레이리스트에 해당 트랙의 존재 여부 확인 메소드 구현

* Feat: `특정 플레이리스트에 곡 추가하기` API 구현

* Feat: `PlaylistTrackRepository` `findByPlaylistAndTrack()` 메소드 추가

* Feat: `특정 플레이리스트의 곡 삭제하기` API 구현

* Test: `특정 플레이리스트에 곡 추가하기` API 테스트 코드 작성

* Test: `특정 플레이리스트의 곡 삭제하기` API 테스트 코드 작성

* BE/#28 `플레이리스트들 가져오기`, `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` API 구현 (#53)

* Rename: `TrackOverviewResponseDto` 경로를 Genre 도메인 하위에서 Track 도메인 하위로 변경

* Feat: `PlaylistWithTracksOverviewResponseDto` 작성

* Fix: `PlaylistTrackRepository` - `findAllByPlaylistId()` 메소드 정렬방식 JPQL -> Pageable Sort로 동작하도록 변경

* Fix: `PlaylistWithTracksOverviewResponseDto` - toDto() 과정에서 User가 null일 경우도 처리 가능하도록 변경

* Feat: `플레이스트들 가져오기` API에서 요청시, RequestParam `type` 검증 커스텀 어노테이션 작성

* Feat: `PlaylistRepository` - `findByIsCuratedTrue()`, `findByIsCuratedFalseAndIsPublicTrue()` 메소드 작성

* Feat: `플레이리스트들 가져오기` API 구현

* Feat: `MyPlaylistRepository` - `existsByUserAndPlaylist()`, `findByUserAndPlaylist()` 추가

* Feat: `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` API 구현

* Teat: `플레이리스트들 가져오기` API 테스트 코드 작성

* Test: `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` 테스트 코드 작성

* feat: refresh 검증 API 구현 (#55)

* feat: refresh 검증 API 구현

/refresh로 만료 확인 가능

* fix: refresh token형식 변형 + mapping 변경

* Be/#10  jwt형식으로 swagger추가  (#56)

* feat: build.gradle 의존성 추가

* feat: swagger + jwt 설정 추가 및 기본 API summary 작성

@controller -> @RestController 변경

---------

Co-authored-by: gerry-mandering <[email protected]>

* Test: `PlaylistControllerTest` - `updatePlaylistNameSuccess` 통합테스트 추가 (#57)

* Fix: `contextLoads()` 테스트 `@ActiveProfiles("test")` 어노테이션 명시로 해결 (#59)

* Fix: `특정 플레이리스트 정보 가져오기` API 사용자 검증 과정 추가 (#60)

* Be/#11 redis 설정 및 redis refresh token 삽입 (#61)

* feat: redis.conf 파일 추가

redis 상세 설정을 위한 conf파일 추가

* fix: redis data파일 자동 생성 제외

data에 들어가는 log수집에 대한 내용을 제외하기 위해 추가

* fix: redis 버전 다운그레이드

redis 버전 의존성을 위해서 .3 -> .2로 다운그레이드

* feat: redis 도메인 구성 추가

redis  rogin을 위한 기본 구성 내용 추가

* feat: userId jwt 토큰값 추가

jwt토큰에 포함 시켜 redis refresh 검증에 사용

* faet: redis refresh 검증 로직 추가

* feat: docker-compose redis 삽입

* Create test_deploy.yml

add `test_deploy.yml` on github action

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* fix: 로그인 구현 형식 json -> cookie (#70)

json 전달형식에서 cookie 형식으로 변경

* Be/#32 좋아요 기능 구현 (#71)

* fix: 로그인 구현 형식 json -> cookie

json 전달형식에서 cookie 형식으로 변경

* fix: 리다이렉션 url 수정

genre -> genre_select

* fix: swagger 설정 변경

허용 범위 변경 및 설정 변경

* fix: jwt 시간 및 정보 변경

userId 추가 및 기본 토큰 지속 시간 변경

* fix: Genre 형식 변경

기존 enum형식 Genre 삭제 후 Genre 내용 변경

* feat: 좋아요 기능 구현

좋아요 추가 기능 및 삭제 기능 구현

* feat: track 전달 get내용 likes추가

* feat: likesFlag 형식 구현

Boolean likesFlag 형식

* Test 브랜치 `test.Dockerfile` 수정 및 `test_deploy.yml` Github Action 수정 (#72)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* `Develop` -> `Test` 브랜치 머지 (#69)

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* Fix: `test.Dockerfile` CPU 아키텍쳐 호환성 문제로 jdk-alpine에서 jdk로 변경

* Fix: `test_deploy.yml` docker buildx 를 사용해서 멀티 아키텍처를 지원하도록 변경

* BE/#36 `곡 검색하기` API 구현 (#74)

* Feat: `build.gradle` elasticsearch-java 클라이언트 의존성 추가

* Feat: `ElasticsearchConfig` 및 `ElasticsearchProperties` 작성

* Fix: `DreamvaultBackendApplication` 에서 프로퍼티 검사 경로 변경

* Fix: `LikeRepository` - existsByUserIdAndTrackId() 메소드 `@Param` 어노테이션 명시

* Feat: `JacksonConfig` - Elasticsearch java client에서 요청 시 사용하는 `objectMapper` 빈 등록

* Feat: `TrackDocument` Elasticsearch 검색 결과 반환받는 객체 작성

* Feat: `SearchTrackResponseDto`, 페이지네이션을 위한 `CustomPage` 및 기타 하위 Dto 작성

* Feat: `TrackDocumentUtil` - 검색 결과에서 하이라이팅 된 필드랑 원본 결합용 유틸 클래스 작성

* Feat: `SearchController`, `SearchService` 검색 비즈니스 로직 구현

* fix: Swagger JWT 형식 변경 (#79)

Components - > SecurityScheme

* Fix: `PlaylistService`의 `createPlaylist()`에서 MyPlaylist를 추가하지 않도록 변경 (#81)

* Fix: `JwtVerifyFilter` - whitelist에 `/search` 경로 추가 (#83)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* `Develop` -> `Test` 브랜치 머지 (#69)

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* Fix: `test.Dockerfile` CPU 아키텍쳐 호환성 문제로 jdk-alpine에서 jdk로 변경

* Fix: `test_deploy.yml` docker buildx 를 사용해서 멀티 아키텍처를 지원하도록 변경

* Fix: `JwtVerifyFilter` - whitelist에 `/search/**` 경로 추가

* Fix: `JwtVerifyFilter` - whitelist에 `/search/**` -> `/search` 경로 변경

* BE/#42 `AuthenticationPriciple`이 필요한 API에 사용자 식별 로직 붙이기 && `getPlaylistWithTracks()`에서 플레이리스트 소유 정보 추가 반환 (#85)

* Refactor: `GenreController` - userId 파라미터 전달방식 수정

* Fix: `AuthenticationPriciple`을 통한사용자 식별로직 추가

* Comment: `PlaylistService` 주석 추가

* Refacotr: `TagController` 파라미터 전달 방식 수정

* Fix: `TrackService` API에 사용자 식별로직 추가

* Refactor: 파라미터와 로직코드 가시적 구분을 위해 개행 추가

* Feat: 기본 경로들 whitelist에 추가

* Fix: `PlaylistService` - `getPlaylistWithTracks()` 특정 플레이리스트 정보 가져오기에서 `isOwner` 필드 추가

* Be/#38 User 곡 , 플레이리스트, 취향 API 구현 (#86)

* feat: 로그인 index.html 업데이트

구글 + 네이버 간편 백엔드 로그인 추가

* fix: 로그인 토큰 url 형식 변경

cookie -> params로 변경

* fix: 토큰 만료 status코드 변경

토큰 만료 내역 변경 status 200 -> 401

* feat: 네이버, 구글 로그인 형식 추가

ouath 네이버, 구글 로그인 추가

* fix: 장르 DB 형식 변겅

* feat: user 관련 API 구현

* feat: track 관련 api 구현

* feat: playlist 관련 api 구현

* feat: like 관련 api 구현

* Feat: `SwaggerConfig`에 테스트 서버 도메인 추가 (#89)

* Be/#44 JwtVerifyFilter 도메인 허용 whitelist user추가 및 도메인명 수정 (#90)

* fix: JwtVerifyFilter 도메인 허용 변경

user관련 도메인 추가 허용

* fix: user 관련 외부 controller 엔드포인트 값 변경

playlist controller, trackcontroller 각각 명칭 삭제

* Fix: `JwtVerifyFilter`에서 whitelist의 `/user` 경로 `/users`로 수정 (#93)

* BE/#47 Cors, RedirectURL 및 Swagger 설정 관련 URL들 프로퍼티로 치환 && 배포관련 파일 변경 (#95)

* Fix: `SwaggerConfig` 스웨거 서버 URL 프로퍼티 명칭 변경 `domain.test` -> `domain.backend`

* Fix: `CommonLoginSuccessHandler` - `determinTargetUrl()`에서 redirectURL 도메인을 프로퍼티에서 가져오도록 설정

* Fix: `SecurityConfig` - `corsConfiguration()`에 frontendUrl 추가

* Fix: `.gitignore`에 init*.sql 추가

* Rename: `test.Dockerfile` -> `prod.Dockerfile` 파일명 변경

* Fix: `test_deploy.yml` -> `deploy.yml` 로 변경 및 `prod.Dockerfile` 사용하도록 설정

* Fix: `appspec.yml` ECS 컨테이너 명 변경

---------

Co-authored-by: kwongwangjae <[email protected]>
Co-authored-by: kwongwangjae <[email protected]>
gerry-mandering added a commit that referenced this pull request May 15, 2024
* feat: mysql + docker 세팅

* Be/#2 JPA 엔티티 코드 구성 (#6)

* Fix: `build.gradle` 오타 수정

* Feat: `BaseTimeEntity` 추상 클래스 설계

- `createdAt` : 생성 일자
- `modifiedAt` : 수정 일자

* Feat: `User` 엔티티 설계

- `id` : `user_id`로 Column명 설정
- `name` : 길이 255자 기본 값으로 설정(구글의 경우, 최대 64자)
- `displayName` : 표시 이름은 최대 50자
- `email` : 이메일의 경우 최대 길이 225자이므로 기본 값으로 설정
- `profileImage` : 프로필 이미지 url

* Fix: `User.java` auto formatting

* Feat: `Genre` 엔티티 설계

- `id` : `genre_id`로 Column명 설정
- `name` : 장르의 명은 최대 50자로 설정

* Feat: `Tag` 엔티티 설계

- `id` : `tag_id`로 Column명 설정
- `name` : 태그 명은 최대 50자로 설정

* Feat: `Genre`와 `Tag` 엔티티에 대표 이미지 url을 저장하는 Image 필드 추가

* Feat: `Genre` 엔티티에 Builder 추가

* Feat: `Tag` 엔티티에 Builder 추가

* Feat: `Genre` 엔티티와 `Track` 엔티티 연관관계 설정

- 양방향 연관관계
- Cascade.ALL : `Genre` 삭제 시, 하위 `Track`들도 삭제 됨

* Feat: `Tag` 엔티티와 `Track` 엔티티 다대다 연관관계 설정

- `TrackTag` 조인 테이블(연관관계 테이블)을 이용한 다대다 관계
- 양방향 연관관계
- `TrackTag` 테이블은 개별 PK를 가짐(복합키 X)

* Feat: `TrackDetail` 엔티티 설계

Reference: https://vladmihalcea.com/the-best-way-to-map-a-onetoone-relationship-with-jpa-and-hibernate/

* Feat: `TrackTag` 엔티티와 `TrackDetail` 엔티티에 `BaseTimeEntity` 엔티티 상속

* Feat: `Like` 엔티티 설계

* Feat: `StreamingHistory` 엔티티 설계

* Feat: `User` 엔티티와 `Like`, `StreamingHistory` 엔티티 사이의 일대다 관계 매핑

* Feat: `Track` 엔티티 설계

* Fix: `Genre` 엔티티 필드명 수정

* Feat: `Playlist`, `PlaylistTrack`, MyPlaylist` 엔티티 설계

* Fix: `Tag` 엔티티 필드명 수정

* Remove: `StreamingHistory` 엔티티의 `streamingDuration` 필드 제거

* Fix: `Track` 엔티티 필드명 수정 및 단방향 관계 처리

* Feat: `UserGenre` 엔티티를 통한 회원 취향 일대다 관계 구성

* Fix: `.gitignore` 파일에 `bin`, 프로퍼티 파일 추가 및 `.gitignore` 재적용 (#9)

* Fix: `pull_request.md` 템플릿 경로 수정 및 `issue.md` 템플릿 기능 수정 항목 추가 (#11)

* BE/#3 특정 곡 등록하기 API 구현 (#14)

* Feat: `build.gradle` 의존성 추가

- Test : `mockito`
- AWS S3 : `awssdk:s3`
- Image Processing `thumbnailator`, `imageio-webp`

* Feat: `S3ClientProperties` 프로퍼티 객체 구현 및 Application에서 프로퍼티 스캔 활성화

* Feat: `S3ClientConfig` - S3 클라이언트 빈 등록 및 `S3FileHandler` 파일 핸들링 객체 구현

* Feat: `ImageResizer` - Thumbnailator 라이브러리로 이미지 리사이징 로직 구현

* Feat: MultipartFile 구현체 및 이미지 / 오디오 파일 S3 업로더 구현

* Feat: `User` 제외한 각 도메인 별 빌더 또는 생성자 및 리포지토리 구현

* Feat: `Track` 도메인 컨트롤러 및 DTO 구현

* Feat: 이미지 / 오디오 MultipartFile들의 커스텀 Validation 어노테이션 구현

* Feat: `TagService` - associtateTrackWithTags() 메소드 구현

* Feat: `TrackService` - Track 업로드 비즈니스 로직 구현

* Feat: `Track` 도메인 테스트코드 작성

- Controller 통합 테스트
- Controller 유닛 테스트
- Service 유닛 테스트

* Feat: `ImageUploader` TrackImage 또는 ThumbnailImage 업로드 실패 시, 로깅 로직 추가

* Fix: `TrackController` 에서 `/api/v1` 접두  경로 제거

* Feat: `.gitignore` - `.vscode` 디렉토리 및 `init.sql` 파일 추가

* Feat: `JpaConfig` Configuration 클래스 작성 (#15)

* BE/#8 `.gitignore` 항목 추가 및 템플릿 경로 수정 (#17)

* Feat: `.gitignore` 에 `init.sql` 과 `.vscode` 추가

* Rename: `issue_template.md` 와 `pull_request_template.md` 경로 `.github` 하위로 변경

* BE/#9 `특정 곡 정보 가져오기` API 구현 및 테스트 코드 작성 (#19)

* Rename: `TrackResponseDto` -> `TrackUploadResponseDto` 명칭 변경

* Rename: `TrackResponseDto` -> `TrackUploadResponseDto` 명칭 변경

* Feat: `TrackResponseDto` 구현

* Feat: `특정 곡 정보 가져오기` API 구현

* Fix: `TrackController` 유닛 테스트 및 통합 테스트 API 요청 경로 수정

* Feat: `build.gradle` 에 `assertj-core` 의존성 추가

* Comment: `TrackService` 주석 추가

* Feat: `TrackTagRepository` - findByTagName() 메소드 추가

* Test: `특정 곡 정보 가져오기` API 테스트 코드 작성

* Be/#6 oAuth 2.0 로그인 로직 구현 (#22)

* feat: build.gradle depandence 추가

jwt + security + oAuth 2.0

* feat: build.gradle 의존성 추가

redis 추가

* faet: 카카오 기본 로그인 화면

백엔드 카카오 로그인 화면 구현

* feat: Cors 허용

react와 같은 외부 라이브러리 Cors 규칙 허용

* feat: oAuth 로그인을 위한 기본 entity 구현

controller 환경 + domain role 추가 Detail은 따로 빼서 구현

* feat: 카카오 데이터베이스 환경 설정

카카오 규칙에 맞는 환경설정 로직 추가

* feat: jwt 생성 및 시간 로직 구현

jwt를 통한 인증 과정 + 시간 설정

* feat: jwt 토큰 예외처리

토큰 만료기간에 대한 예외처리 구현

* feat: 카카오 SecurityConfig + handler

SecurityConfig를 통한 카카오 로그인 후 엑세스토큰 및 리프레스 토근 발급

* BE/#12 `Track` 엔티티에 곡 길이 정보 `duration` 필드 추가 (#24)

* Feat: `Track` 엔티티 `duration` 필드 추가

* Feat: Response Dto `duration` 필드 추가

* Feat: `build.gradle` - `jaudiotagger` 의존성 추기

* Feat: `AudioDataParser` - `extractDurationInSeconds` 곡 길이 추출 메소드 구현

* Feat: `TrackService` - 곡 업로드 시, 곡 길이 저장 로직 추가

* Test: `User` 및 `Track` 도메인 수정 사항 반영해서, 테스트 코드 수정

* Comment: `AudioDataParser` 주석 추가

* BE/#13 `특정 곡 재생 이벤트 기록하기` API 구현 (#27)

* Feat: `StreamingHistoryRepository` 구현

* Feat: `StreamingHistory` 엔티티 빌더 패턴 생성자 구성

* Feat: `특정 곡 재생 이벤트 기록하기` API 구현

* Fix: `JwtVertifyFilter` API 테스트 과정에서 임시로 필터 통과하도록 설정

* Test: `특정 곡 재생 이벤트 기록하기` API 테스트 코드 작성

* BE/#15 `모든 장르 리스트 가져오기` API 구현 (#29)

* Fix: `TrackService`에서 uploadTrack()의 `TrackUploadResponseDto`를 생성할 때 toDto()를 사용하도록 변경

* Feat: `GenreResponseDto` 작성

* Feat: `모든 장르 리스트 가져오기` API 구현

* Test: `모든 장르 리스트 가져오기` API 테스트 코드 작성

* BE/#16 `특정 장르의 모든 곡 가져오기` API 구현 (#31)

* Fix: `track_audio` MultipartFile 검증과정에 `wav` 확장자 추가

* Feat: `TrackRepository` Pagination을 적용한 findAllByGenreId() 메소드 작성

* Feat: `특정 장르의 모든 곡 가져오기` API의 반환 Dto인 `GenreWithTracksResponseDto` 구현

* Feat: `특정 장르의 모든 곡 가져오기` API 구현

* Test: `특정 장르의 모든 곡 가져오기` API 테스트 코드 작성

* BE/#17 `장르별 곡 3개씩 가져오기` API 구현 (#33)

* Feat: `TrackOverviewResponseDto` 작성

* Feat: `GenreWithTracksOverviewResponseDto` 작성

* Feat: `GenreRepository` - Pagination을 지원하는 findAll() 작성

* Feat: `장르별 곡 3개씩 가져오기` API 구현

* Fix: `GenreController`의 `장르별 곡 3개씩 가져오기` API Page 객체 리턴하도록 변경

* Comment: `TrackControllerTest.java` - `uploadTrackSuccess()` 테스트 전체 순차적으로 테스트 진행시 오류 나는 부분 주석 상세하게 명시

* Refactor: `TrackServiceTest`에서 Mock 객체 생성시, 파라미터로 생성하도록 코드의 유연성 높임

* Test: `장르별 곡 3개씩 가져오기` API 테스트 코드 작성

* BE/#18 `모든 태그 리스트 가져오기` 및 `특정 태그의 모든 곡 가져오기` API 구현 (#35)

* Fix: `Tag` 엔티티 `tagImage` 필드 활성화

* Feat: `TagResponseDto` 객체 작성

* Feat: `모든 태그 리스트 가져오기` API 구현

* Feat: `TagWithTracksResponseDto` 구현

* Feat: `특정 태그의 모든 곡 가져오기` API 구현

* Fix: `TagController` - @PageableDefault 항목에서 `page` 0으로 기본값 설정

* Test: `모든 태그 리스트 가져오기` 및 `특정 태그의 모든 곡 가져오기` API 테스트 코드 작성

* BE/#19 `새 플레이리스트 생성하기` API 구현 (#37)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* BE/#20 `특정 플레이리스트 정보 가져오기` API 구현 (#39)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* Feat: `PlaylistWithTracksResponseDto` 작성

* Feat: `MyPlaylist`, `PlaylistTrack` 엔티티가 `BaseTimeEntity`를 상속받도록 변경

* Feat: `PlaylistTrackRepository` - Pagination 적용한 `findAllByPlaylistId() 작성

* Feat: `특정 플레이리스트 정보 가져오기` API 구현

* Feat: `PlaylistTrack` 엔티티 Builder 추가

* Test: `특정 플레이리스트 정보 가져오기` API 테스트 코드 작성

* BE/#21 `특정 플레이리스트 이름 수정하기` API 구현 (#43)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* Feat: `PlaylistWithTracksResponseDto` 작성

* Feat: `MyPlaylist`, `PlaylistTrack` 엔티티가 `BaseTimeEntity`를 상속받도록 변경

* Feat: `PlaylistTrackRepository` - Pagination 적용한 `findAllByPlaylistId() 작성

* Feat: `특정 플레이리스트 정보 가져오기` API 구현

* Feat: `PlaylistTrack` 엔티티 Builder 추가

* Test: `특정 플레이리스트 정보 가져오기` API 테스트 코드 작성

* Rename: `CreatePlaylistResponseDto` -> `PlaylistResponseDto` 객체 명칭 변경

* Feat: `Playlist` - `playlistName` 필드 변경하는 `updatePlaylistName()` 메소드 작성

* Feat: `UpldatePlaylistNameRequestDto` 작성

* Feat: `특정 플레이리스트 이름 수정하기` API 구현

* Test: `특정 플레이리스트 이름 수정하기` API 테스트 코드 작성

* Remove: 중복 import 삭제

* Remove: 중복 import 삭제

* Remove: 중복 import 삭제

* Rename: 서비스 계층 유닛 테스트 코드 객체명 수정 (#44)

* Feat: 서비스 계층 메소드에서 `@Transactional(readOnly=true)` 명시하기 (#45)

* BE/#24 `특정 플레이리스트 삭제하기`, `특정 플레이리스트에 곡 추가하기`, `특정 플레이리스트의 곡 삭제하기` API 구현 (#50)

* Feat: `MyPlaylistRepository`, `PlaylistTrackRepository` 에서 플레이리스트 삭제시 호출되는 `deleteByPlaylist()` 메소드 추가

* Feat: `특정 플레이리스트 삭제하기` API 구현

* Test: `특정 플레이리스트 삭제하기` 테스트 코드 작성

* Feat: `AddTrackToPlaylistRequestDto` 작성

* Feat: `PlaylistTrackRepository` - 플레이리스트에 해당 트랙의 존재 여부 확인 메소드 구현

* Feat: `특정 플레이리스트에 곡 추가하기` API 구현

* Feat: `PlaylistTrackRepository` `findByPlaylistAndTrack()` 메소드 추가

* Feat: `특정 플레이리스트의 곡 삭제하기` API 구현

* Test: `특정 플레이리스트에 곡 추가하기` API 테스트 코드 작성

* Test: `특정 플레이리스트의 곡 삭제하기` API 테스트 코드 작성

* BE/#28 `플레이리스트들 가져오기`, `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` API 구현 (#53)

* Rename: `TrackOverviewResponseDto` 경로를 Genre 도메인 하위에서 Track 도메인 하위로 변경

* Feat: `PlaylistWithTracksOverviewResponseDto` 작성

* Fix: `PlaylistTrackRepository` - `findAllByPlaylistId()` 메소드 정렬방식 JPQL -> Pageable Sort로 동작하도록 변경

* Fix: `PlaylistWithTracksOverviewResponseDto` - toDto() 과정에서 User가 null일 경우도 처리 가능하도록 변경

* Feat: `플레이스트들 가져오기` API에서 요청시, RequestParam `type` 검증 커스텀 어노테이션 작성

* Feat: `PlaylistRepository` - `findByIsCuratedTrue()`, `findByIsCuratedFalseAndIsPublicTrue()` 메소드 작성

* Feat: `플레이리스트들 가져오기` API 구현

* Feat: `MyPlaylistRepository` - `existsByUserAndPlaylist()`, `findByUserAndPlaylist()` 추가

* Feat: `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` API 구현

* Teat: `플레이리스트들 가져오기` API 테스트 코드 작성

* Test: `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` 테스트 코드 작성

* feat: refresh 검증 API 구현 (#55)

* feat: refresh 검증 API 구현

/refresh로 만료 확인 가능

* fix: refresh token형식 변형 + mapping 변경

* Be/#10  jwt형식으로 swagger추가  (#56)

* feat: build.gradle 의존성 추가

* feat: swagger + jwt 설정 추가 및 기본 API summary 작성

@controller -> @RestController 변경

---------



* Test: `PlaylistControllerTest` - `updatePlaylistNameSuccess` 통합테스트 추가 (#57)

* Fix: `contextLoads()` 테스트 `@ActiveProfiles("test")` 어노테이션 명시로 해결 (#59)

* Fix: `특정 플레이리스트 정보 가져오기` API 사용자 검증 과정 추가 (#60)

* Be/#11 redis 설정 및 redis refresh token 삽입 (#61)

* feat: redis.conf 파일 추가

redis 상세 설정을 위한 conf파일 추가

* fix: redis data파일 자동 생성 제외

data에 들어가는 log수집에 대한 내용을 제외하기 위해 추가

* fix: redis 버전 다운그레이드

redis 버전 의존성을 위해서 .3 -> .2로 다운그레이드

* feat: redis 도메인 구성 추가

redis  rogin을 위한 기본 구성 내용 추가

* feat: userId jwt 토큰값 추가

jwt토큰에 포함 시켜 redis refresh 검증에 사용

* faet: redis refresh 검증 로직 추가

* feat: docker-compose redis 삽입

* Create test_deploy.yml

add `test_deploy.yml` on github action

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* fix: 로그인 구현 형식 json -> cookie (#70)

json 전달형식에서 cookie 형식으로 변경

* Be/#32 좋아요 기능 구현 (#71)

* fix: 로그인 구현 형식 json -> cookie

json 전달형식에서 cookie 형식으로 변경

* fix: 리다이렉션 url 수정

genre -> genre_select

* fix: swagger 설정 변경

허용 범위 변경 및 설정 변경

* fix: jwt 시간 및 정보 변경

userId 추가 및 기본 토큰 지속 시간 변경

* fix: Genre 형식 변경

기존 enum형식 Genre 삭제 후 Genre 내용 변경

* feat: 좋아요 기능 구현

좋아요 추가 기능 및 삭제 기능 구현

* feat: track 전달 get내용 likes추가

* feat: likesFlag 형식 구현

Boolean likesFlag 형식

* Test 브랜치 `test.Dockerfile` 수정 및 `test_deploy.yml` Github Action 수정 (#72)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* `Develop` -> `Test` 브랜치 머지 (#69)

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* Fix: `test.Dockerfile` CPU 아키텍쳐 호환성 문제로 jdk-alpine에서 jdk로 변경

* Fix: `test_deploy.yml` docker buildx 를 사용해서 멀티 아키텍처를 지원하도록 변경

* BE/#36 `곡 검색하기` API 구현 (#74)

* Feat: `build.gradle` elasticsearch-java 클라이언트 의존성 추가

* Feat: `ElasticsearchConfig` 및 `ElasticsearchProperties` 작성

* Fix: `DreamvaultBackendApplication` 에서 프로퍼티 검사 경로 변경

* Fix: `LikeRepository` - existsByUserIdAndTrackId() 메소드 `@Param` 어노테이션 명시

* Feat: `JacksonConfig` - Elasticsearch java client에서 요청 시 사용하는 `objectMapper` 빈 등록

* Feat: `TrackDocument` Elasticsearch 검색 결과 반환받는 객체 작성

* Feat: `SearchTrackResponseDto`, 페이지네이션을 위한 `CustomPage` 및 기타 하위 Dto 작성

* Feat: `TrackDocumentUtil` - 검색 결과에서 하이라이팅 된 필드랑 원본 결합용 유틸 클래스 작성

* Feat: `SearchController`, `SearchService` 검색 비즈니스 로직 구현

* fix: Swagger JWT 형식 변경 (#79)

Components - > SecurityScheme

* Fix: `PlaylistService`의 `createPlaylist()`에서 MyPlaylist를 추가하지 않도록 변경 (#81)

* Fix: `JwtVerifyFilter` - whitelist에 `/search` 경로 추가 (#83)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* `Develop` -> `Test` 브랜치 머지 (#69)

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* Fix: `test.Dockerfile` CPU 아키텍쳐 호환성 문제로 jdk-alpine에서 jdk로 변경

* Fix: `test_deploy.yml` docker buildx 를 사용해서 멀티 아키텍처를 지원하도록 변경

* Fix: `JwtVerifyFilter` - whitelist에 `/search/**` 경로 추가

* Fix: `JwtVerifyFilter` - whitelist에 `/search/**` -> `/search` 경로 변경

* BE/#42 `AuthenticationPriciple`이 필요한 API에 사용자 식별 로직 붙이기 && `getPlaylistWithTracks()`에서 플레이리스트 소유 정보 추가 반환 (#85)

* Refactor: `GenreController` - userId 파라미터 전달방식 수정

* Fix: `AuthenticationPriciple`을 통한사용자 식별로직 추가

* Comment: `PlaylistService` 주석 추가

* Refacotr: `TagController` 파라미터 전달 방식 수정

* Fix: `TrackService` API에 사용자 식별로직 추가

* Refactor: 파라미터와 로직코드 가시적 구분을 위해 개행 추가

* Feat: 기본 경로들 whitelist에 추가

* Fix: `PlaylistService` - `getPlaylistWithTracks()` 특정 플레이리스트 정보 가져오기에서 `isOwner` 필드 추가

* Be/#38 User 곡 , 플레이리스트, 취향 API 구현 (#86)

* feat: 로그인 index.html 업데이트

구글 + 네이버 간편 백엔드 로그인 추가

* fix: 로그인 토큰 url 형식 변경

cookie -> params로 변경

* fix: 토큰 만료 status코드 변경

토큰 만료 내역 변경 status 200 -> 401

* feat: 네이버, 구글 로그인 형식 추가

ouath 네이버, 구글 로그인 추가

* fix: 장르 DB 형식 변겅

* feat: user 관련 API 구현

* feat: track 관련 api 구현

* feat: playlist 관련 api 구현

* feat: like 관련 api 구현

* Feat: `SwaggerConfig`에 테스트 서버 도메인 추가 (#89)

* Be/#44 JwtVerifyFilter 도메인 허용 whitelist user추가 및 도메인명 수정 (#90)

* fix: JwtVerifyFilter 도메인 허용 변경

user관련 도메인 추가 허용

* fix: user 관련 외부 controller 엔드포인트 값 변경

playlist controller, trackcontroller 각각 명칭 삭제

* Fix: `JwtVerifyFilter`에서 whitelist의 `/user` 경로 `/users`로 수정 (#93)

* BE/#47 Cors, RedirectURL 및 Swagger 설정 관련 URL들 프로퍼티로 치환 && 배포관련 파일 변경 (#95)

* Fix: `SwaggerConfig` 스웨거 서버 URL 프로퍼티 명칭 변경 `domain.test` -> `domain.backend`

* Fix: `CommonLoginSuccessHandler` - `determinTargetUrl()`에서 redirectURL 도메인을 프로퍼티에서 가져오도록 설정

* Fix: `SecurityConfig` - `corsConfiguration()`에 frontendUrl 추가

* Fix: `.gitignore`에 init*.sql 추가

* Rename: `test.Dockerfile` -> `prod.Dockerfile` 파일명 변경

* Fix: `test_deploy.yml` -> `deploy.yml` 로 변경 및 `prod.Dockerfile` 사용하도록 설정

* Fix: `appspec.yml` ECS 컨테이너 명 변경

---------

Co-authored-by: kwongwangjae <[email protected]>
Co-authored-by: kwongwangjae <[email protected]>
gerry-mandering added a commit that referenced this pull request May 22, 2024
* Merge: `develop` 브랜치에서 `main` 브랜치로 현재 작업 내용 머지 (#96) (#103)

* feat: mysql + docker 세팅

* Be/#2 JPA 엔티티 코드 구성 (#6)

* Fix: `build.gradle` 오타 수정

* Feat: `BaseTimeEntity` 추상 클래스 설계

- `createdAt` : 생성 일자
- `modifiedAt` : 수정 일자

* Feat: `User` 엔티티 설계

- `id` : `user_id`로 Column명 설정
- `name` : 길이 255자 기본 값으로 설정(구글의 경우, 최대 64자)
- `displayName` : 표시 이름은 최대 50자
- `email` : 이메일의 경우 최대 길이 225자이므로 기본 값으로 설정
- `profileImage` : 프로필 이미지 url

* Fix: `User.java` auto formatting

* Feat: `Genre` 엔티티 설계

- `id` : `genre_id`로 Column명 설정
- `name` : 장르의 명은 최대 50자로 설정

* Feat: `Tag` 엔티티 설계

- `id` : `tag_id`로 Column명 설정
- `name` : 태그 명은 최대 50자로 설정

* Feat: `Genre`와 `Tag` 엔티티에 대표 이미지 url을 저장하는 Image 필드 추가

* Feat: `Genre` 엔티티에 Builder 추가

* Feat: `Tag` 엔티티에 Builder 추가

* Feat: `Genre` 엔티티와 `Track` 엔티티 연관관계 설정

- 양방향 연관관계
- Cascade.ALL : `Genre` 삭제 시, 하위 `Track`들도 삭제 됨

* Feat: `Tag` 엔티티와 `Track` 엔티티 다대다 연관관계 설정

- `TrackTag` 조인 테이블(연관관계 테이블)을 이용한 다대다 관계
- 양방향 연관관계
- `TrackTag` 테이블은 개별 PK를 가짐(복합키 X)

* Feat: `TrackDetail` 엔티티 설계

Reference: https://vladmihalcea.com/the-best-way-to-map-a-onetoone-relationship-with-jpa-and-hibernate/

* Feat: `TrackTag` 엔티티와 `TrackDetail` 엔티티에 `BaseTimeEntity` 엔티티 상속

* Feat: `Like` 엔티티 설계

* Feat: `StreamingHistory` 엔티티 설계

* Feat: `User` 엔티티와 `Like`, `StreamingHistory` 엔티티 사이의 일대다 관계 매핑

* Feat: `Track` 엔티티 설계

* Fix: `Genre` 엔티티 필드명 수정

* Feat: `Playlist`, `PlaylistTrack`, MyPlaylist` 엔티티 설계

* Fix: `Tag` 엔티티 필드명 수정

* Remove: `StreamingHistory` 엔티티의 `streamingDuration` 필드 제거

* Fix: `Track` 엔티티 필드명 수정 및 단방향 관계 처리

* Feat: `UserGenre` 엔티티를 통한 회원 취향 일대다 관계 구성

* Fix: `.gitignore` 파일에 `bin`, 프로퍼티 파일 추가 및 `.gitignore` 재적용 (#9)

* Fix: `pull_request.md` 템플릿 경로 수정 및 `issue.md` 템플릿 기능 수정 항목 추가 (#11)

* BE/#3 특정 곡 등록하기 API 구현 (#14)

* Feat: `build.gradle` 의존성 추가

- Test : `mockito`
- AWS S3 : `awssdk:s3`
- Image Processing `thumbnailator`, `imageio-webp`

* Feat: `S3ClientProperties` 프로퍼티 객체 구현 및 Application에서 프로퍼티 스캔 활성화

* Feat: `S3ClientConfig` - S3 클라이언트 빈 등록 및 `S3FileHandler` 파일 핸들링 객체 구현

* Feat: `ImageResizer` - Thumbnailator 라이브러리로 이미지 리사이징 로직 구현

* Feat: MultipartFile 구현체 및 이미지 / 오디오 파일 S3 업로더 구현

* Feat: `User` 제외한 각 도메인 별 빌더 또는 생성자 및 리포지토리 구현

* Feat: `Track` 도메인 컨트롤러 및 DTO 구현

* Feat: 이미지 / 오디오 MultipartFile들의 커스텀 Validation 어노테이션 구현

* Feat: `TagService` - associtateTrackWithTags() 메소드 구현

* Feat: `TrackService` - Track 업로드 비즈니스 로직 구현

* Feat: `Track` 도메인 테스트코드 작성

- Controller 통합 테스트
- Controller 유닛 테스트
- Service 유닛 테스트

* Feat: `ImageUploader` TrackImage 또는 ThumbnailImage 업로드 실패 시, 로깅 로직 추가

* Fix: `TrackController` 에서 `/api/v1` 접두  경로 제거

* Feat: `.gitignore` - `.vscode` 디렉토리 및 `init.sql` 파일 추가

* Feat: `JpaConfig` Configuration 클래스 작성 (#15)

* BE/#8 `.gitignore` 항목 추가 및 템플릿 경로 수정 (#17)

* Feat: `.gitignore` 에 `init.sql` 과 `.vscode` 추가

* Rename: `issue_template.md` 와 `pull_request_template.md` 경로 `.github` 하위로 변경

* BE/#9 `특정 곡 정보 가져오기` API 구현 및 테스트 코드 작성 (#19)

* Rename: `TrackResponseDto` -> `TrackUploadResponseDto` 명칭 변경

* Rename: `TrackResponseDto` -> `TrackUploadResponseDto` 명칭 변경

* Feat: `TrackResponseDto` 구현

* Feat: `특정 곡 정보 가져오기` API 구현

* Fix: `TrackController` 유닛 테스트 및 통합 테스트 API 요청 경로 수정

* Feat: `build.gradle` 에 `assertj-core` 의존성 추가

* Comment: `TrackService` 주석 추가

* Feat: `TrackTagRepository` - findByTagName() 메소드 추가

* Test: `특정 곡 정보 가져오기` API 테스트 코드 작성

* Be/#6 oAuth 2.0 로그인 로직 구현 (#22)

* feat: build.gradle depandence 추가

jwt + security + oAuth 2.0

* feat: build.gradle 의존성 추가

redis 추가

* faet: 카카오 기본 로그인 화면

백엔드 카카오 로그인 화면 구현

* feat: Cors 허용

react와 같은 외부 라이브러리 Cors 규칙 허용

* feat: oAuth 로그인을 위한 기본 entity 구현

controller 환경 + domain role 추가 Detail은 따로 빼서 구현

* feat: 카카오 데이터베이스 환경 설정

카카오 규칙에 맞는 환경설정 로직 추가

* feat: jwt 생성 및 시간 로직 구현

jwt를 통한 인증 과정 + 시간 설정

* feat: jwt 토큰 예외처리

토큰 만료기간에 대한 예외처리 구현

* feat: 카카오 SecurityConfig + handler

SecurityConfig를 통한 카카오 로그인 후 엑세스토큰 및 리프레스 토근 발급

* BE/#12 `Track` 엔티티에 곡 길이 정보 `duration` 필드 추가 (#24)

* Feat: `Track` 엔티티 `duration` 필드 추가

* Feat: Response Dto `duration` 필드 추가

* Feat: `build.gradle` - `jaudiotagger` 의존성 추기

* Feat: `AudioDataParser` - `extractDurationInSeconds` 곡 길이 추출 메소드 구현

* Feat: `TrackService` - 곡 업로드 시, 곡 길이 저장 로직 추가

* Test: `User` 및 `Track` 도메인 수정 사항 반영해서, 테스트 코드 수정

* Comment: `AudioDataParser` 주석 추가

* BE/#13 `특정 곡 재생 이벤트 기록하기` API 구현 (#27)

* Feat: `StreamingHistoryRepository` 구현

* Feat: `StreamingHistory` 엔티티 빌더 패턴 생성자 구성

* Feat: `특정 곡 재생 이벤트 기록하기` API 구현

* Fix: `JwtVertifyFilter` API 테스트 과정에서 임시로 필터 통과하도록 설정

* Test: `특정 곡 재생 이벤트 기록하기` API 테스트 코드 작성

* BE/#15 `모든 장르 리스트 가져오기` API 구현 (#29)

* Fix: `TrackService`에서 uploadTrack()의 `TrackUploadResponseDto`를 생성할 때 toDto()를 사용하도록 변경

* Feat: `GenreResponseDto` 작성

* Feat: `모든 장르 리스트 가져오기` API 구현

* Test: `모든 장르 리스트 가져오기` API 테스트 코드 작성

* BE/#16 `특정 장르의 모든 곡 가져오기` API 구현 (#31)

* Fix: `track_audio` MultipartFile 검증과정에 `wav` 확장자 추가

* Feat: `TrackRepository` Pagination을 적용한 findAllByGenreId() 메소드 작성

* Feat: `특정 장르의 모든 곡 가져오기` API의 반환 Dto인 `GenreWithTracksResponseDto` 구현

* Feat: `특정 장르의 모든 곡 가져오기` API 구현

* Test: `특정 장르의 모든 곡 가져오기` API 테스트 코드 작성

* BE/#17 `장르별 곡 3개씩 가져오기` API 구현 (#33)

* Feat: `TrackOverviewResponseDto` 작성

* Feat: `GenreWithTracksOverviewResponseDto` 작성

* Feat: `GenreRepository` - Pagination을 지원하는 findAll() 작성

* Feat: `장르별 곡 3개씩 가져오기` API 구현

* Fix: `GenreController`의 `장르별 곡 3개씩 가져오기` API Page 객체 리턴하도록 변경

* Comment: `TrackControllerTest.java` - `uploadTrackSuccess()` 테스트 전체 순차적으로 테스트 진행시 오류 나는 부분 주석 상세하게 명시

* Refactor: `TrackServiceTest`에서 Mock 객체 생성시, 파라미터로 생성하도록 코드의 유연성 높임

* Test: `장르별 곡 3개씩 가져오기` API 테스트 코드 작성

* BE/#18 `모든 태그 리스트 가져오기` 및 `특정 태그의 모든 곡 가져오기` API 구현 (#35)

* Fix: `Tag` 엔티티 `tagImage` 필드 활성화

* Feat: `TagResponseDto` 객체 작성

* Feat: `모든 태그 리스트 가져오기` API 구현

* Feat: `TagWithTracksResponseDto` 구현

* Feat: `특정 태그의 모든 곡 가져오기` API 구현

* Fix: `TagController` - @PageableDefault 항목에서 `page` 0으로 기본값 설정

* Test: `모든 태그 리스트 가져오기` 및 `특정 태그의 모든 곡 가져오기` API 테스트 코드 작성

* BE/#19 `새 플레이리스트 생성하기` API 구현 (#37)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* BE/#20 `특정 플레이리스트 정보 가져오기` API 구현 (#39)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* Feat: `PlaylistWithTracksResponseDto` 작성

* Feat: `MyPlaylist`, `PlaylistTrack` 엔티티가 `BaseTimeEntity`를 상속받도록 변경

* Feat: `PlaylistTrackRepository` - Pagination 적용한 `findAllByPlaylistId() 작성

* Feat: `특정 플레이리스트 정보 가져오기` API 구현

* Feat: `PlaylistTrack` 엔티티 Builder 추가

* Test: `특정 플레이리스트 정보 가져오기` API 테스트 코드 작성

* BE/#21 `특정 플레이리스트 이름 수정하기` API 구현 (#43)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* Feat: `PlaylistWithTracksResponseDto` 작성

* Feat: `MyPlaylist`, `PlaylistTrack` 엔티티가 `BaseTimeEntity`를 상속받도록 변경

* Feat: `PlaylistTrackRepository` - Pagination 적용한 `findAllByPlaylistId() 작성

* Feat: `특정 플레이리스트 정보 가져오기` API 구현

* Feat: `PlaylistTrack` 엔티티 Builder 추가

* Test: `특정 플레이리스트 정보 가져오기` API 테스트 코드 작성

* Rename: `CreatePlaylistResponseDto` -> `PlaylistResponseDto` 객체 명칭 변경

* Feat: `Playlist` - `playlistName` 필드 변경하는 `updatePlaylistName()` 메소드 작성

* Feat: `UpldatePlaylistNameRequestDto` 작성

* Feat: `특정 플레이리스트 이름 수정하기` API 구현

* Test: `특정 플레이리스트 이름 수정하기` API 테스트 코드 작성

* Remove: 중복 import 삭제

* Remove: 중복 import 삭제

* Remove: 중복 import 삭제

* Rename: 서비스 계층 유닛 테스트 코드 객체명 수정 (#44)

* Feat: 서비스 계층 메소드에서 `@Transactional(readOnly=true)` 명시하기 (#45)

* BE/#24 `특정 플레이리스트 삭제하기`, `특정 플레이리스트에 곡 추가하기`, `특정 플레이리스트의 곡 삭제하기` API 구현 (#50)

* Feat: `MyPlaylistRepository`, `PlaylistTrackRepository` 에서 플레이리스트 삭제시 호출되는 `deleteByPlaylist()` 메소드 추가

* Feat: `특정 플레이리스트 삭제하기` API 구현

* Test: `특정 플레이리스트 삭제하기` 테스트 코드 작성

* Feat: `AddTrackToPlaylistRequestDto` 작성

* Feat: `PlaylistTrackRepository` - 플레이리스트에 해당 트랙의 존재 여부 확인 메소드 구현

* Feat: `특정 플레이리스트에 곡 추가하기` API 구현

* Feat: `PlaylistTrackRepository` `findByPlaylistAndTrack()` 메소드 추가

* Feat: `특정 플레이리스트의 곡 삭제하기` API 구현

* Test: `특정 플레이리스트에 곡 추가하기` API 테스트 코드 작성

* Test: `특정 플레이리스트의 곡 삭제하기` API 테스트 코드 작성

* BE/#28 `플레이리스트들 가져오기`, `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` API 구현 (#53)

* Rename: `TrackOverviewResponseDto` 경로를 Genre 도메인 하위에서 Track 도메인 하위로 변경

* Feat: `PlaylistWithTracksOverviewResponseDto` 작성

* Fix: `PlaylistTrackRepository` - `findAllByPlaylistId()` 메소드 정렬방식 JPQL -> Pageable Sort로 동작하도록 변경

* Fix: `PlaylistWithTracksOverviewResponseDto` - toDto() 과정에서 User가 null일 경우도 처리 가능하도록 변경

* Feat: `플레이스트들 가져오기` API에서 요청시, RequestParam `type` 검증 커스텀 어노테이션 작성

* Feat: `PlaylistRepository` - `findByIsCuratedTrue()`, `findByIsCuratedFalseAndIsPublicTrue()` 메소드 작성

* Feat: `플레이리스트들 가져오기` API 구현

* Feat: `MyPlaylistRepository` - `existsByUserAndPlaylist()`, `findByUserAndPlaylist()` 추가

* Feat: `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` API 구현

* Teat: `플레이리스트들 가져오기` API 테스트 코드 작성

* Test: `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` 테스트 코드 작성

* feat: refresh 검증 API 구현 (#55)

* feat: refresh 검증 API 구현

/refresh로 만료 확인 가능

* fix: refresh token형식 변형 + mapping 변경

* Be/#10  jwt형식으로 swagger추가  (#56)

* feat: build.gradle 의존성 추가

* feat: swagger + jwt 설정 추가 및 기본 API summary 작성

@controller -> @RestController 변경

---------



* Test: `PlaylistControllerTest` - `updatePlaylistNameSuccess` 통합테스트 추가 (#57)

* Fix: `contextLoads()` 테스트 `@ActiveProfiles("test")` 어노테이션 명시로 해결 (#59)

* Fix: `특정 플레이리스트 정보 가져오기` API 사용자 검증 과정 추가 (#60)

* Be/#11 redis 설정 및 redis refresh token 삽입 (#61)

* feat: redis.conf 파일 추가

redis 상세 설정을 위한 conf파일 추가

* fix: redis data파일 자동 생성 제외

data에 들어가는 log수집에 대한 내용을 제외하기 위해 추가

* fix: redis 버전 다운그레이드

redis 버전 의존성을 위해서 .3 -> .2로 다운그레이드

* feat: redis 도메인 구성 추가

redis  rogin을 위한 기본 구성 내용 추가

* feat: userId jwt 토큰값 추가

jwt토큰에 포함 시켜 redis refresh 검증에 사용

* faet: redis refresh 검증 로직 추가

* feat: docker-compose redis 삽입

* Create test_deploy.yml

add `test_deploy.yml` on github action

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* fix: 로그인 구현 형식 json -> cookie (#70)

json 전달형식에서 cookie 형식으로 변경

* Be/#32 좋아요 기능 구현 (#71)

* fix: 로그인 구현 형식 json -> cookie

json 전달형식에서 cookie 형식으로 변경

* fix: 리다이렉션 url 수정

genre -> genre_select

* fix: swagger 설정 변경

허용 범위 변경 및 설정 변경

* fix: jwt 시간 및 정보 변경

userId 추가 및 기본 토큰 지속 시간 변경

* fix: Genre 형식 변경

기존 enum형식 Genre 삭제 후 Genre 내용 변경

* feat: 좋아요 기능 구현

좋아요 추가 기능 및 삭제 기능 구현

* feat: track 전달 get내용 likes추가

* feat: likesFlag 형식 구현

Boolean likesFlag 형식

* Test 브랜치 `test.Dockerfile` 수정 및 `test_deploy.yml` Github Action 수정 (#72)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* `Develop` -> `Test` 브랜치 머지 (#69)

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* Fix: `test.Dockerfile` CPU 아키텍쳐 호환성 문제로 jdk-alpine에서 jdk로 변경

* Fix: `test_deploy.yml` docker buildx 를 사용해서 멀티 아키텍처를 지원하도록 변경

* BE/#36 `곡 검색하기` API 구현 (#74)

* Feat: `build.gradle` elasticsearch-java 클라이언트 의존성 추가

* Feat: `ElasticsearchConfig` 및 `ElasticsearchProperties` 작성

* Fix: `DreamvaultBackendApplication` 에서 프로퍼티 검사 경로 변경

* Fix: `LikeRepository` - existsByUserIdAndTrackId() 메소드 `@Param` 어노테이션 명시

* Feat: `JacksonConfig` - Elasticsearch java client에서 요청 시 사용하는 `objectMapper` 빈 등록

* Feat: `TrackDocument` Elasticsearch 검색 결과 반환받는 객체 작성

* Feat: `SearchTrackResponseDto`, 페이지네이션을 위한 `CustomPage` 및 기타 하위 Dto 작성

* Feat: `TrackDocumentUtil` - 검색 결과에서 하이라이팅 된 필드랑 원본 결합용 유틸 클래스 작성

* Feat: `SearchController`, `SearchService` 검색 비즈니스 로직 구현

* fix: Swagger JWT 형식 변경 (#79)

Components - > SecurityScheme

* Fix: `PlaylistService`의 `createPlaylist()`에서 MyPlaylist를 추가하지 않도록 변경 (#81)

* Fix: `JwtVerifyFilter` - whitelist에 `/search` 경로 추가 (#83)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* `Develop` -> `Test` 브랜치 머지 (#69)

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* Fix: `test.Dockerfile` CPU 아키텍쳐 호환성 문제로 jdk-alpine에서 jdk로 변경

* Fix: `test_deploy.yml` docker buildx 를 사용해서 멀티 아키텍처를 지원하도록 변경

* Fix: `JwtVerifyFilter` - whitelist에 `/search/**` 경로 추가

* Fix: `JwtVerifyFilter` - whitelist에 `/search/**` -> `/search` 경로 변경

* BE/#42 `AuthenticationPriciple`이 필요한 API에 사용자 식별 로직 붙이기 && `getPlaylistWithTracks()`에서 플레이리스트 소유 정보 추가 반환 (#85)

* Refactor: `GenreController` - userId 파라미터 전달방식 수정

* Fix: `AuthenticationPriciple`을 통한사용자 식별로직 추가

* Comment: `PlaylistService` 주석 추가

* Refacotr: `TagController` 파라미터 전달 방식 수정

* Fix: `TrackService` API에 사용자 식별로직 추가

* Refactor: 파라미터와 로직코드 가시적 구분을 위해 개행 추가

* Feat: 기본 경로들 whitelist에 추가

* Fix: `PlaylistService` - `getPlaylistWithTracks()` 특정 플레이리스트 정보 가져오기에서 `isOwner` 필드 추가

* Be/#38 User 곡 , 플레이리스트, 취향 API 구현 (#86)

* feat: 로그인 index.html 업데이트

구글 + 네이버 간편 백엔드 로그인 추가

* fix: 로그인 토큰 url 형식 변경

cookie -> params로 변경

* fix: 토큰 만료 status코드 변경

토큰 만료 내역 변경 status 200 -> 401

* feat: 네이버, 구글 로그인 형식 추가

ouath 네이버, 구글 로그인 추가

* fix: 장르 DB 형식 변겅

* feat: user 관련 API 구현

* feat: track 관련 api 구현

* feat: playlist 관련 api 구현

* feat: like 관련 api 구현

* Feat: `SwaggerConfig`에 테스트 서버 도메인 추가 (#89)

* Be/#44 JwtVerifyFilter 도메인 허용 whitelist user추가 및 도메인명 수정 (#90)

* fix: JwtVerifyFilter 도메인 허용 변경

user관련 도메인 추가 허용

* fix: user 관련 외부 controller 엔드포인트 값 변경

playlist controller, trackcontroller 각각 명칭 삭제

* Fix: `JwtVerifyFilter`에서 whitelist의 `/user` 경로 `/users`로 수정 (#93)

* BE/#47 Cors, RedirectURL 및 Swagger 설정 관련 URL들 프로퍼티로 치환 && 배포관련 파일 변경 (#95)

* Fix: `SwaggerConfig` 스웨거 서버 URL 프로퍼티 명칭 변경 `domain.test` -> `domain.backend`

* Fix: `CommonLoginSuccessHandler` - `determinTargetUrl()`에서 redirectURL 도메인을 프로퍼티에서 가져오도록 설정

* Fix: `SecurityConfig` - `corsConfiguration()`에 frontendUrl 추가

* Fix: `.gitignore`에 init*.sql 추가

* Rename: `test.Dockerfile` -> `prod.Dockerfile` 파일명 변경

* Fix: `test_deploy.yml` -> `deploy.yml` 로 변경 및 `prod.Dockerfile` 사용하도록 설정

* Fix: `appspec.yml` ECS 컨테이너 명 변경

---------

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

* Fix: `deploy.yml` 오타 수정 (#105)

* Fix: `TagService` - 새 태그 생성 시, 사용자가 업로드한 곡의 이미지를 태그 이미지로 사용하도록 변경 (#109)

* fix: 로그인 redirecturl 변경 (#108)

/auth/login, /auth/signup

---------

Co-authored-by: kwongwangjae <[email protected]>
Co-authored-by: kwongwangjae <[email protected]>
gerry-mandering added a commit that referenced this pull request May 22, 2024
* Merge: `develop` 브랜치에서 `main` 브랜치로 현재 작업 내용 머지 (#96)

* feat: mysql + docker 세팅

* Be/#2 JPA 엔티티 코드 구성 (#6)

* Fix: `build.gradle` 오타 수정

* Feat: `BaseTimeEntity` 추상 클래스 설계

- `createdAt` : 생성 일자
- `modifiedAt` : 수정 일자

* Feat: `User` 엔티티 설계

- `id` : `user_id`로 Column명 설정
- `name` : 길이 255자 기본 값으로 설정(구글의 경우, 최대 64자)
- `displayName` : 표시 이름은 최대 50자
- `email` : 이메일의 경우 최대 길이 225자이므로 기본 값으로 설정
- `profileImage` : 프로필 이미지 url

* Fix: `User.java` auto formatting

* Feat: `Genre` 엔티티 설계

- `id` : `genre_id`로 Column명 설정
- `name` : 장르의 명은 최대 50자로 설정

* Feat: `Tag` 엔티티 설계

- `id` : `tag_id`로 Column명 설정
- `name` : 태그 명은 최대 50자로 설정

* Feat: `Genre`와 `Tag` 엔티티에 대표 이미지 url을 저장하는 Image 필드 추가

* Feat: `Genre` 엔티티에 Builder 추가

* Feat: `Tag` 엔티티에 Builder 추가

* Feat: `Genre` 엔티티와 `Track` 엔티티 연관관계 설정

- 양방향 연관관계
- Cascade.ALL : `Genre` 삭제 시, 하위 `Track`들도 삭제 됨

* Feat: `Tag` 엔티티와 `Track` 엔티티 다대다 연관관계 설정

- `TrackTag` 조인 테이블(연관관계 테이블)을 이용한 다대다 관계
- 양방향 연관관계
- `TrackTag` 테이블은 개별 PK를 가짐(복합키 X)

* Feat: `TrackDetail` 엔티티 설계

Reference: https://vladmihalcea.com/the-best-way-to-map-a-onetoone-relationship-with-jpa-and-hibernate/

* Feat: `TrackTag` 엔티티와 `TrackDetail` 엔티티에 `BaseTimeEntity` 엔티티 상속

* Feat: `Like` 엔티티 설계

* Feat: `StreamingHistory` 엔티티 설계

* Feat: `User` 엔티티와 `Like`, `StreamingHistory` 엔티티 사이의 일대다 관계 매핑

* Feat: `Track` 엔티티 설계

* Fix: `Genre` 엔티티 필드명 수정

* Feat: `Playlist`, `PlaylistTrack`, MyPlaylist` 엔티티 설계

* Fix: `Tag` 엔티티 필드명 수정

* Remove: `StreamingHistory` 엔티티의 `streamingDuration` 필드 제거

* Fix: `Track` 엔티티 필드명 수정 및 단방향 관계 처리

* Feat: `UserGenre` 엔티티를 통한 회원 취향 일대다 관계 구성

* Fix: `.gitignore` 파일에 `bin`, 프로퍼티 파일 추가 및 `.gitignore` 재적용 (#9)

* Fix: `pull_request.md` 템플릿 경로 수정 및 `issue.md` 템플릿 기능 수정 항목 추가 (#11)

* BE/#3 특정 곡 등록하기 API 구현 (#14)

* Feat: `build.gradle` 의존성 추가

- Test : `mockito`
- AWS S3 : `awssdk:s3`
- Image Processing `thumbnailator`, `imageio-webp`

* Feat: `S3ClientProperties` 프로퍼티 객체 구현 및 Application에서 프로퍼티 스캔 활성화

* Feat: `S3ClientConfig` - S3 클라이언트 빈 등록 및 `S3FileHandler` 파일 핸들링 객체 구현

* Feat: `ImageResizer` - Thumbnailator 라이브러리로 이미지 리사이징 로직 구현

* Feat: MultipartFile 구현체 및 이미지 / 오디오 파일 S3 업로더 구현

* Feat: `User` 제외한 각 도메인 별 빌더 또는 생성자 및 리포지토리 구현

* Feat: `Track` 도메인 컨트롤러 및 DTO 구현

* Feat: 이미지 / 오디오 MultipartFile들의 커스텀 Validation 어노테이션 구현

* Feat: `TagService` - associtateTrackWithTags() 메소드 구현

* Feat: `TrackService` - Track 업로드 비즈니스 로직 구현

* Feat: `Track` 도메인 테스트코드 작성

- Controller 통합 테스트
- Controller 유닛 테스트
- Service 유닛 테스트

* Feat: `ImageUploader` TrackImage 또는 ThumbnailImage 업로드 실패 시, 로깅 로직 추가

* Fix: `TrackController` 에서 `/api/v1` 접두  경로 제거

* Feat: `.gitignore` - `.vscode` 디렉토리 및 `init.sql` 파일 추가

* Feat: `JpaConfig` Configuration 클래스 작성 (#15)

* BE/#8 `.gitignore` 항목 추가 및 템플릿 경로 수정 (#17)

* Feat: `.gitignore` 에 `init.sql` 과 `.vscode` 추가

* Rename: `issue_template.md` 와 `pull_request_template.md` 경로 `.github` 하위로 변경

* BE/#9 `특정 곡 정보 가져오기` API 구현 및 테스트 코드 작성 (#19)

* Rename: `TrackResponseDto` -> `TrackUploadResponseDto` 명칭 변경

* Rename: `TrackResponseDto` -> `TrackUploadResponseDto` 명칭 변경

* Feat: `TrackResponseDto` 구현

* Feat: `특정 곡 정보 가져오기` API 구현

* Fix: `TrackController` 유닛 테스트 및 통합 테스트 API 요청 경로 수정

* Feat: `build.gradle` 에 `assertj-core` 의존성 추가

* Comment: `TrackService` 주석 추가

* Feat: `TrackTagRepository` - findByTagName() 메소드 추가

* Test: `특정 곡 정보 가져오기` API 테스트 코드 작성

* Be/#6 oAuth 2.0 로그인 로직 구현 (#22)

* feat: build.gradle depandence 추가

jwt + security + oAuth 2.0

* feat: build.gradle 의존성 추가

redis 추가

* faet: 카카오 기본 로그인 화면

백엔드 카카오 로그인 화면 구현

* feat: Cors 허용

react와 같은 외부 라이브러리 Cors 규칙 허용

* feat: oAuth 로그인을 위한 기본 entity 구현

controller 환경 + domain role 추가 Detail은 따로 빼서 구현

* feat: 카카오 데이터베이스 환경 설정

카카오 규칙에 맞는 환경설정 로직 추가

* feat: jwt 생성 및 시간 로직 구현

jwt를 통한 인증 과정 + 시간 설정

* feat: jwt 토큰 예외처리

토큰 만료기간에 대한 예외처리 구현

* feat: 카카오 SecurityConfig + handler

SecurityConfig를 통한 카카오 로그인 후 엑세스토큰 및 리프레스 토근 발급

* BE/#12 `Track` 엔티티에 곡 길이 정보 `duration` 필드 추가 (#24)

* Feat: `Track` 엔티티 `duration` 필드 추가

* Feat: Response Dto `duration` 필드 추가

* Feat: `build.gradle` - `jaudiotagger` 의존성 추기

* Feat: `AudioDataParser` - `extractDurationInSeconds` 곡 길이 추출 메소드 구현

* Feat: `TrackService` - 곡 업로드 시, 곡 길이 저장 로직 추가

* Test: `User` 및 `Track` 도메인 수정 사항 반영해서, 테스트 코드 수정

* Comment: `AudioDataParser` 주석 추가

* BE/#13 `특정 곡 재생 이벤트 기록하기` API 구현 (#27)

* Feat: `StreamingHistoryRepository` 구현

* Feat: `StreamingHistory` 엔티티 빌더 패턴 생성자 구성

* Feat: `특정 곡 재생 이벤트 기록하기` API 구현

* Fix: `JwtVertifyFilter` API 테스트 과정에서 임시로 필터 통과하도록 설정

* Test: `특정 곡 재생 이벤트 기록하기` API 테스트 코드 작성

* BE/#15 `모든 장르 리스트 가져오기` API 구현 (#29)

* Fix: `TrackService`에서 uploadTrack()의 `TrackUploadResponseDto`를 생성할 때 toDto()를 사용하도록 변경

* Feat: `GenreResponseDto` 작성

* Feat: `모든 장르 리스트 가져오기` API 구현

* Test: `모든 장르 리스트 가져오기` API 테스트 코드 작성

* BE/#16 `특정 장르의 모든 곡 가져오기` API 구현 (#31)

* Fix: `track_audio` MultipartFile 검증과정에 `wav` 확장자 추가

* Feat: `TrackRepository` Pagination을 적용한 findAllByGenreId() 메소드 작성

* Feat: `특정 장르의 모든 곡 가져오기` API의 반환 Dto인 `GenreWithTracksResponseDto` 구현

* Feat: `특정 장르의 모든 곡 가져오기` API 구현

* Test: `특정 장르의 모든 곡 가져오기` API 테스트 코드 작성

* BE/#17 `장르별 곡 3개씩 가져오기` API 구현 (#33)

* Feat: `TrackOverviewResponseDto` 작성

* Feat: `GenreWithTracksOverviewResponseDto` 작성

* Feat: `GenreRepository` - Pagination을 지원하는 findAll() 작성

* Feat: `장르별 곡 3개씩 가져오기` API 구현

* Fix: `GenreController`의 `장르별 곡 3개씩 가져오기` API Page 객체 리턴하도록 변경

* Comment: `TrackControllerTest.java` - `uploadTrackSuccess()` 테스트 전체 순차적으로 테스트 진행시 오류 나는 부분 주석 상세하게 명시

* Refactor: `TrackServiceTest`에서 Mock 객체 생성시, 파라미터로 생성하도록 코드의 유연성 높임

* Test: `장르별 곡 3개씩 가져오기` API 테스트 코드 작성

* BE/#18 `모든 태그 리스트 가져오기` 및 `특정 태그의 모든 곡 가져오기` API 구현 (#35)

* Fix: `Tag` 엔티티 `tagImage` 필드 활성화

* Feat: `TagResponseDto` 객체 작성

* Feat: `모든 태그 리스트 가져오기` API 구현

* Feat: `TagWithTracksResponseDto` 구현

* Feat: `특정 태그의 모든 곡 가져오기` API 구현

* Fix: `TagController` - @PageableDefault 항목에서 `page` 0으로 기본값 설정

* Test: `모든 태그 리스트 가져오기` 및 `특정 태그의 모든 곡 가져오기` API 테스트 코드 작성

* BE/#19 `새 플레이리스트 생성하기` API 구현 (#37)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* BE/#20 `특정 플레이리스트 정보 가져오기` API 구현 (#39)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* Feat: `PlaylistWithTracksResponseDto` 작성

* Feat: `MyPlaylist`, `PlaylistTrack` 엔티티가 `BaseTimeEntity`를 상속받도록 변경

* Feat: `PlaylistTrackRepository` - Pagination 적용한 `findAllByPlaylistId() 작성

* Feat: `특정 플레이리스트 정보 가져오기` API 구현

* Feat: `PlaylistTrack` 엔티티 Builder 추가

* Test: `특정 플레이리스트 정보 가져오기` API 테스트 코드 작성

* BE/#21 `특정 플레이리스트 이름 수정하기` API 구현 (#43)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* Feat: `PlaylistWithTracksResponseDto` 작성

* Feat: `MyPlaylist`, `PlaylistTrack` 엔티티가 `BaseTimeEntity`를 상속받도록 변경

* Feat: `PlaylistTrackRepository` - Pagination 적용한 `findAllByPlaylistId() 작성

* Feat: `특정 플레이리스트 정보 가져오기` API 구현

* Feat: `PlaylistTrack` 엔티티 Builder 추가

* Test: `특정 플레이리스트 정보 가져오기` API 테스트 코드 작성

* Rename: `CreatePlaylistResponseDto` -> `PlaylistResponseDto` 객체 명칭 변경

* Feat: `Playlist` - `playlistName` 필드 변경하는 `updatePlaylistName()` 메소드 작성

* Feat: `UpldatePlaylistNameRequestDto` 작성

* Feat: `특정 플레이리스트 이름 수정하기` API 구현

* Test: `특정 플레이리스트 이름 수정하기` API 테스트 코드 작성

* Remove: 중복 import 삭제

* Remove: 중복 import 삭제

* Remove: 중복 import 삭제

* Rename: 서비스 계층 유닛 테스트 코드 객체명 수정 (#44)

* Feat: 서비스 계층 메소드에서 `@Transactional(readOnly=true)` 명시하기 (#45)

* BE/#24 `특정 플레이리스트 삭제하기`, `특정 플레이리스트에 곡 추가하기`, `특정 플레이리스트의 곡 삭제하기` API 구현 (#50)

* Feat: `MyPlaylistRepository`, `PlaylistTrackRepository` 에서 플레이리스트 삭제시 호출되는 `deleteByPlaylist()` 메소드 추가

* Feat: `특정 플레이리스트 삭제하기` API 구현

* Test: `특정 플레이리스트 삭제하기` 테스트 코드 작성

* Feat: `AddTrackToPlaylistRequestDto` 작성

* Feat: `PlaylistTrackRepository` - 플레이리스트에 해당 트랙의 존재 여부 확인 메소드 구현

* Feat: `특정 플레이리스트에 곡 추가하기` API 구현

* Feat: `PlaylistTrackRepository` `findByPlaylistAndTrack()` 메소드 추가

* Feat: `특정 플레이리스트의 곡 삭제하기` API 구현

* Test: `특정 플레이리스트에 곡 추가하기` API 테스트 코드 작성

* Test: `특정 플레이리스트의 곡 삭제하기` API 테스트 코드 작성

* BE/#28 `플레이리스트들 가져오기`, `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` API 구현 (#53)

* Rename: `TrackOverviewResponseDto` 경로를 Genre 도메인 하위에서 Track 도메인 하위로 변경

* Feat: `PlaylistWithTracksOverviewResponseDto` 작성

* Fix: `PlaylistTrackRepository` - `findAllByPlaylistId()` 메소드 정렬방식 JPQL -> Pageable Sort로 동작하도록 변경

* Fix: `PlaylistWithTracksOverviewResponseDto` - toDto() 과정에서 User가 null일 경우도 처리 가능하도록 변경

* Feat: `플레이스트들 가져오기` API에서 요청시, RequestParam `type` 검증 커스텀 어노테이션 작성

* Feat: `PlaylistRepository` - `findByIsCuratedTrue()`, `findByIsCuratedFalseAndIsPublicTrue()` 메소드 작성

* Feat: `플레이리스트들 가져오기` API 구현

* Feat: `MyPlaylistRepository` - `existsByUserAndPlaylist()`, `findByUserAndPlaylist()` 추가

* Feat: `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` API 구현

* Teat: `플레이리스트들 가져오기` API 테스트 코드 작성

* Test: `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` 테스트 코드 작성

* feat: refresh 검증 API 구현 (#55)

* feat: refresh 검증 API 구현

/refresh로 만료 확인 가능

* fix: refresh token형식 변형 + mapping 변경

* Be/#10  jwt형식으로 swagger추가  (#56)

* feat: build.gradle 의존성 추가

* feat: swagger + jwt 설정 추가 및 기본 API summary 작성

@controller -> @RestController 변경

---------

Co-authored-by: gerry-mandering <[email protected]>

* Test: `PlaylistControllerTest` - `updatePlaylistNameSuccess` 통합테스트 추가 (#57)

* Fix: `contextLoads()` 테스트 `@ActiveProfiles("test")` 어노테이션 명시로 해결 (#59)

* Fix: `특정 플레이리스트 정보 가져오기` API 사용자 검증 과정 추가 (#60)

* Be/#11 redis 설정 및 redis refresh token 삽입 (#61)

* feat: redis.conf 파일 추가

redis 상세 설정을 위한 conf파일 추가

* fix: redis data파일 자동 생성 제외

data에 들어가는 log수집에 대한 내용을 제외하기 위해 추가

* fix: redis 버전 다운그레이드

redis 버전 의존성을 위해서 .3 -> .2로 다운그레이드

* feat: redis 도메인 구성 추가

redis  rogin을 위한 기본 구성 내용 추가

* feat: userId jwt 토큰값 추가

jwt토큰에 포함 시켜 redis refresh 검증에 사용

* faet: redis refresh 검증 로직 추가

* feat: docker-compose redis 삽입

* Create test_deploy.yml

add `test_deploy.yml` on github action

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* fix: 로그인 구현 형식 json -> cookie (#70)

json 전달형식에서 cookie 형식으로 변경

* Be/#32 좋아요 기능 구현 (#71)

* fix: 로그인 구현 형식 json -> cookie

json 전달형식에서 cookie 형식으로 변경

* fix: 리다이렉션 url 수정

genre -> genre_select

* fix: swagger 설정 변경

허용 범위 변경 및 설정 변경

* fix: jwt 시간 및 정보 변경

userId 추가 및 기본 토큰 지속 시간 변경

* fix: Genre 형식 변경

기존 enum형식 Genre 삭제 후 Genre 내용 변경

* feat: 좋아요 기능 구현

좋아요 추가 기능 및 삭제 기능 구현

* feat: track 전달 get내용 likes추가

* feat: likesFlag 형식 구현

Boolean likesFlag 형식

* Test 브랜치 `test.Dockerfile` 수정 및 `test_deploy.yml` Github Action 수정 (#72)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* `Develop` -> `Test` 브랜치 머지 (#69)

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* Fix: `test.Dockerfile` CPU 아키텍쳐 호환성 문제로 jdk-alpine에서 jdk로 변경

* Fix: `test_deploy.yml` docker buildx 를 사용해서 멀티 아키텍처를 지원하도록 변경

* BE/#36 `곡 검색하기` API 구현 (#74)

* Feat: `build.gradle` elasticsearch-java 클라이언트 의존성 추가

* Feat: `ElasticsearchConfig` 및 `ElasticsearchProperties` 작성

* Fix: `DreamvaultBackendApplication` 에서 프로퍼티 검사 경로 변경

* Fix: `LikeRepository` - existsByUserIdAndTrackId() 메소드 `@Param` 어노테이션 명시

* Feat: `JacksonConfig` - Elasticsearch java client에서 요청 시 사용하는 `objectMapper` 빈 등록

* Feat: `TrackDocument` Elasticsearch 검색 결과 반환받는 객체 작성

* Feat: `SearchTrackResponseDto`, 페이지네이션을 위한 `CustomPage` 및 기타 하위 Dto 작성

* Feat: `TrackDocumentUtil` - 검색 결과에서 하이라이팅 된 필드랑 원본 결합용 유틸 클래스 작성

* Feat: `SearchController`, `SearchService` 검색 비즈니스 로직 구현

* fix: Swagger JWT 형식 변경 (#79)

Components - > SecurityScheme

* Fix: `PlaylistService`의 `createPlaylist()`에서 MyPlaylist를 추가하지 않도록 변경 (#81)

* Fix: `JwtVerifyFilter` - whitelist에 `/search` 경로 추가 (#83)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* `Develop` -> `Test` 브랜치 머지 (#69)

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* Fix: `test.Dockerfile` CPU 아키텍쳐 호환성 문제로 jdk-alpine에서 jdk로 변경

* Fix: `test_deploy.yml` docker buildx 를 사용해서 멀티 아키텍처를 지원하도록 변경

* Fix: `JwtVerifyFilter` - whitelist에 `/search/**` 경로 추가

* Fix: `JwtVerifyFilter` - whitelist에 `/search/**` -> `/search` 경로 변경

* BE/#42 `AuthenticationPriciple`이 필요한 API에 사용자 식별 로직 붙이기 && `getPlaylistWithTracks()`에서 플레이리스트 소유 정보 추가 반환 (#85)

* Refactor: `GenreController` - userId 파라미터 전달방식 수정

* Fix: `AuthenticationPriciple`을 통한사용자 식별로직 추가

* Comment: `PlaylistService` 주석 추가

* Refacotr: `TagController` 파라미터 전달 방식 수정

* Fix: `TrackService` API에 사용자 식별로직 추가

* Refactor: 파라미터와 로직코드 가시적 구분을 위해 개행 추가

* Feat: 기본 경로들 whitelist에 추가

* Fix: `PlaylistService` - `getPlaylistWithTracks()` 특정 플레이리스트 정보 가져오기에서 `isOwner` 필드 추가

* Be/#38 User 곡 , 플레이리스트, 취향 API 구현 (#86)

* feat: 로그인 index.html 업데이트

구글 + 네이버 간편 백엔드 로그인 추가

* fix: 로그인 토큰 url 형식 변경

cookie -> params로 변경

* fix: 토큰 만료 status코드 변경

토큰 만료 내역 변경 status 200 -> 401

* feat: 네이버, 구글 로그인 형식 추가

ouath 네이버, 구글 로그인 추가

* fix: 장르 DB 형식 변겅

* feat: user 관련 API 구현

* feat: track 관련 api 구현

* feat: playlist 관련 api 구현

* feat: like 관련 api 구현

* Feat: `SwaggerConfig`에 테스트 서버 도메인 추가 (#89)

* Be/#44 JwtVerifyFilter 도메인 허용 whitelist user추가 및 도메인명 수정 (#90)

* fix: JwtVerifyFilter 도메인 허용 변경

user관련 도메인 추가 허용

* fix: user 관련 외부 controller 엔드포인트 값 변경

playlist controller, trackcontroller 각각 명칭 삭제

* Fix: `JwtVerifyFilter`에서 whitelist의 `/user` 경로 `/users`로 수정 (#93)

* BE/#47 Cors, RedirectURL 및 Swagger 설정 관련 URL들 프로퍼티로 치환 && 배포관련 파일 변경 (#95)

* Fix: `SwaggerConfig` 스웨거 서버 URL 프로퍼티 명칭 변경 `domain.test` -> `domain.backend`

* Fix: `CommonLoginSuccessHandler` - `determinTargetUrl()`에서 redirectURL 도메인을 프로퍼티에서 가져오도록 설정

* Fix: `SecurityConfig` - `corsConfiguration()`에 frontendUrl 추가

* Fix: `.gitignore`에 init*.sql 추가

* Rename: `test.Dockerfile` -> `prod.Dockerfile` 파일명 변경

* Fix: `test_deploy.yml` -> `deploy.yml` 로 변경 및 `prod.Dockerfile` 사용하도록 설정

* Fix: `appspec.yml` ECS 컨테이너 명 변경

---------

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

* Merge: 로그인 리다이렉트 URL 변경 및 태그 생성 시, 이미지 적용 로직 수정 main 브랜치로 머지 (#110)

* Merge: `develop` 브랜치에서 `main` 브랜치로 현재 작업 내용 머지 (#96) (#103)

* feat: mysql + docker 세팅

* Be/#2 JPA 엔티티 코드 구성 (#6)

* Fix: `build.gradle` 오타 수정

* Feat: `BaseTimeEntity` 추상 클래스 설계

- `createdAt` : 생성 일자
- `modifiedAt` : 수정 일자

* Feat: `User` 엔티티 설계

- `id` : `user_id`로 Column명 설정
- `name` : 길이 255자 기본 값으로 설정(구글의 경우, 최대 64자)
- `displayName` : 표시 이름은 최대 50자
- `email` : 이메일의 경우 최대 길이 225자이므로 기본 값으로 설정
- `profileImage` : 프로필 이미지 url

* Fix: `User.java` auto formatting

* Feat: `Genre` 엔티티 설계

- `id` : `genre_id`로 Column명 설정
- `name` : 장르의 명은 최대 50자로 설정

* Feat: `Tag` 엔티티 설계

- `id` : `tag_id`로 Column명 설정
- `name` : 태그 명은 최대 50자로 설정

* Feat: `Genre`와 `Tag` 엔티티에 대표 이미지 url을 저장하는 Image 필드 추가

* Feat: `Genre` 엔티티에 Builder 추가

* Feat: `Tag` 엔티티에 Builder 추가

* Feat: `Genre` 엔티티와 `Track` 엔티티 연관관계 설정

- 양방향 연관관계
- Cascade.ALL : `Genre` 삭제 시, 하위 `Track`들도 삭제 됨

* Feat: `Tag` 엔티티와 `Track` 엔티티 다대다 연관관계 설정

- `TrackTag` 조인 테이블(연관관계 테이블)을 이용한 다대다 관계
- 양방향 연관관계
- `TrackTag` 테이블은 개별 PK를 가짐(복합키 X)

* Feat: `TrackDetail` 엔티티 설계

Reference: https://vladmihalcea.com/the-best-way-to-map-a-onetoone-relationship-with-jpa-and-hibernate/

* Feat: `TrackTag` 엔티티와 `TrackDetail` 엔티티에 `BaseTimeEntity` 엔티티 상속

* Feat: `Like` 엔티티 설계

* Feat: `StreamingHistory` 엔티티 설계

* Feat: `User` 엔티티와 `Like`, `StreamingHistory` 엔티티 사이의 일대다 관계 매핑

* Feat: `Track` 엔티티 설계

* Fix: `Genre` 엔티티 필드명 수정

* Feat: `Playlist`, `PlaylistTrack`, MyPlaylist` 엔티티 설계

* Fix: `Tag` 엔티티 필드명 수정

* Remove: `StreamingHistory` 엔티티의 `streamingDuration` 필드 제거

* Fix: `Track` 엔티티 필드명 수정 및 단방향 관계 처리

* Feat: `UserGenre` 엔티티를 통한 회원 취향 일대다 관계 구성

* Fix: `.gitignore` 파일에 `bin`, 프로퍼티 파일 추가 및 `.gitignore` 재적용 (#9)

* Fix: `pull_request.md` 템플릿 경로 수정 및 `issue.md` 템플릿 기능 수정 항목 추가 (#11)

* BE/#3 특정 곡 등록하기 API 구현 (#14)

* Feat: `build.gradle` 의존성 추가

- Test : `mockito`
- AWS S3 : `awssdk:s3`
- Image Processing `thumbnailator`, `imageio-webp`

* Feat: `S3ClientProperties` 프로퍼티 객체 구현 및 Application에서 프로퍼티 스캔 활성화

* Feat: `S3ClientConfig` - S3 클라이언트 빈 등록 및 `S3FileHandler` 파일 핸들링 객체 구현

* Feat: `ImageResizer` - Thumbnailator 라이브러리로 이미지 리사이징 로직 구현

* Feat: MultipartFile 구현체 및 이미지 / 오디오 파일 S3 업로더 구현

* Feat: `User` 제외한 각 도메인 별 빌더 또는 생성자 및 리포지토리 구현

* Feat: `Track` 도메인 컨트롤러 및 DTO 구현

* Feat: 이미지 / 오디오 MultipartFile들의 커스텀 Validation 어노테이션 구현

* Feat: `TagService` - associtateTrackWithTags() 메소드 구현

* Feat: `TrackService` - Track 업로드 비즈니스 로직 구현

* Feat: `Track` 도메인 테스트코드 작성

- Controller 통합 테스트
- Controller 유닛 테스트
- Service 유닛 테스트

* Feat: `ImageUploader` TrackImage 또는 ThumbnailImage 업로드 실패 시, 로깅 로직 추가

* Fix: `TrackController` 에서 `/api/v1` 접두  경로 제거

* Feat: `.gitignore` - `.vscode` 디렉토리 및 `init.sql` 파일 추가

* Feat: `JpaConfig` Configuration 클래스 작성 (#15)

* BE/#8 `.gitignore` 항목 추가 및 템플릿 경로 수정 (#17)

* Feat: `.gitignore` 에 `init.sql` 과 `.vscode` 추가

* Rename: `issue_template.md` 와 `pull_request_template.md` 경로 `.github` 하위로 변경

* BE/#9 `특정 곡 정보 가져오기` API 구현 및 테스트 코드 작성 (#19)

* Rename: `TrackResponseDto` -> `TrackUploadResponseDto` 명칭 변경

* Rename: `TrackResponseDto` -> `TrackUploadResponseDto` 명칭 변경

* Feat: `TrackResponseDto` 구현

* Feat: `특정 곡 정보 가져오기` API 구현

* Fix: `TrackController` 유닛 테스트 및 통합 테스트 API 요청 경로 수정

* Feat: `build.gradle` 에 `assertj-core` 의존성 추가

* Comment: `TrackService` 주석 추가

* Feat: `TrackTagRepository` - findByTagName() 메소드 추가

* Test: `특정 곡 정보 가져오기` API 테스트 코드 작성

* Be/#6 oAuth 2.0 로그인 로직 구현 (#22)

* feat: build.gradle depandence 추가

jwt + security + oAuth 2.0

* feat: build.gradle 의존성 추가

redis 추가

* faet: 카카오 기본 로그인 화면

백엔드 카카오 로그인 화면 구현

* feat: Cors 허용

react와 같은 외부 라이브러리 Cors 규칙 허용

* feat: oAuth 로그인을 위한 기본 entity 구현

controller 환경 + domain role 추가 Detail은 따로 빼서 구현

* feat: 카카오 데이터베이스 환경 설정

카카오 규칙에 맞는 환경설정 로직 추가

* feat: jwt 생성 및 시간 로직 구현

jwt를 통한 인증 과정 + 시간 설정

* feat: jwt 토큰 예외처리

토큰 만료기간에 대한 예외처리 구현

* feat: 카카오 SecurityConfig + handler

SecurityConfig를 통한 카카오 로그인 후 엑세스토큰 및 리프레스 토근 발급

* BE/#12 `Track` 엔티티에 곡 길이 정보 `duration` 필드 추가 (#24)

* Feat: `Track` 엔티티 `duration` 필드 추가

* Feat: Response Dto `duration` 필드 추가

* Feat: `build.gradle` - `jaudiotagger` 의존성 추기

* Feat: `AudioDataParser` - `extractDurationInSeconds` 곡 길이 추출 메소드 구현

* Feat: `TrackService` - 곡 업로드 시, 곡 길이 저장 로직 추가

* Test: `User` 및 `Track` 도메인 수정 사항 반영해서, 테스트 코드 수정

* Comment: `AudioDataParser` 주석 추가

* BE/#13 `특정 곡 재생 이벤트 기록하기` API 구현 (#27)

* Feat: `StreamingHistoryRepository` 구현

* Feat: `StreamingHistory` 엔티티 빌더 패턴 생성자 구성

* Feat: `특정 곡 재생 이벤트 기록하기` API 구현

* Fix: `JwtVertifyFilter` API 테스트 과정에서 임시로 필터 통과하도록 설정

* Test: `특정 곡 재생 이벤트 기록하기` API 테스트 코드 작성

* BE/#15 `모든 장르 리스트 가져오기` API 구현 (#29)

* Fix: `TrackService`에서 uploadTrack()의 `TrackUploadResponseDto`를 생성할 때 toDto()를 사용하도록 변경

* Feat: `GenreResponseDto` 작성

* Feat: `모든 장르 리스트 가져오기` API 구현

* Test: `모든 장르 리스트 가져오기` API 테스트 코드 작성

* BE/#16 `특정 장르의 모든 곡 가져오기` API 구현 (#31)

* Fix: `track_audio` MultipartFile 검증과정에 `wav` 확장자 추가

* Feat: `TrackRepository` Pagination을 적용한 findAllByGenreId() 메소드 작성

* Feat: `특정 장르의 모든 곡 가져오기` API의 반환 Dto인 `GenreWithTracksResponseDto` 구현

* Feat: `특정 장르의 모든 곡 가져오기` API 구현

* Test: `특정 장르의 모든 곡 가져오기` API 테스트 코드 작성

* BE/#17 `장르별 곡 3개씩 가져오기` API 구현 (#33)

* Feat: `TrackOverviewResponseDto` 작성

* Feat: `GenreWithTracksOverviewResponseDto` 작성

* Feat: `GenreRepository` - Pagination을 지원하는 findAll() 작성

* Feat: `장르별 곡 3개씩 가져오기` API 구현

* Fix: `GenreController`의 `장르별 곡 3개씩 가져오기` API Page 객체 리턴하도록 변경

* Comment: `TrackControllerTest.java` - `uploadTrackSuccess()` 테스트 전체 순차적으로 테스트 진행시 오류 나는 부분 주석 상세하게 명시

* Refactor: `TrackServiceTest`에서 Mock 객체 생성시, 파라미터로 생성하도록 코드의 유연성 높임

* Test: `장르별 곡 3개씩 가져오기` API 테스트 코드 작성

* BE/#18 `모든 태그 리스트 가져오기` 및 `특정 태그의 모든 곡 가져오기` API 구현 (#35)

* Fix: `Tag` 엔티티 `tagImage` 필드 활성화

* Feat: `TagResponseDto` 객체 작성

* Feat: `모든 태그 리스트 가져오기` API 구현

* Feat: `TagWithTracksResponseDto` 구현

* Feat: `특정 태그의 모든 곡 가져오기` API 구현

* Fix: `TagController` - @PageableDefault 항목에서 `page` 0으로 기본값 설정

* Test: `모든 태그 리스트 가져오기` 및 `특정 태그의 모든 곡 가져오기` API 테스트 코드 작성

* BE/#19 `새 플레이리스트 생성하기` API 구현 (#37)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* BE/#20 `특정 플레이리스트 정보 가져오기` API 구현 (#39)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* Feat: `PlaylistWithTracksResponseDto` 작성

* Feat: `MyPlaylist`, `PlaylistTrack` 엔티티가 `BaseTimeEntity`를 상속받도록 변경

* Feat: `PlaylistTrackRepository` - Pagination 적용한 `findAllByPlaylistId() 작성

* Feat: `특정 플레이리스트 정보 가져오기` API 구현

* Feat: `PlaylistTrack` 엔티티 Builder 추가

* Test: `특정 플레이리스트 정보 가져오기` API 테스트 코드 작성

* BE/#21 `특정 플레이리스트 이름 수정하기` API 구현 (#43)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* Feat: `PlaylistWithTracksResponseDto` 작성

* Feat: `MyPlaylist`, `PlaylistTrack` 엔티티가 `BaseTimeEntity`를 상속받도록 변경

* Feat: `PlaylistTrackRepository` - Pagination 적용한 `findAllByPlaylistId() 작성

* Feat: `특정 플레이리스트 정보 가져오기` API 구현

* Feat: `PlaylistTrack` 엔티티 Builder 추가

* Test: `특정 플레이리스트 정보 가져오기` API 테스트 코드 작성

* Rename: `CreatePlaylistResponseDto` -> `PlaylistResponseDto` 객체 명칭 변경

* Feat: `Playlist` - `playlistName` 필드 변경하는 `updatePlaylistName()` 메소드 작성

* Feat: `UpldatePlaylistNameRequestDto` 작성

* Feat: `특정 플레이리스트 이름 수정하기` API 구현

* Test: `특정 플레이리스트 이름 수정하기` API 테스트 코드 작성

* Remove: 중복 import 삭제

* Remove: 중복 import 삭제

* Remove: 중복 import 삭제

* Rename: 서비스 계층 유닛 테스트 코드 객체명 수정 (#44)

* Feat: 서비스 계층 메소드에서 `@Transactional(readOnly=true)` 명시하기 (#45)

* BE/#24 `특정 플레이리스트 삭제하기`, `특정 플레이리스트에 곡 추가하기`, `특정 플레이리스트의 곡 삭제하기` API 구현 (#50)

* Feat: `MyPlaylistRepository`, `PlaylistTrackRepository` 에서 플레이리스트 삭제시 호출되는 `deleteByPlaylist()` 메소드 추가

* Feat: `특정 플레이리스트 삭제하기` API 구현

* Test: `특정 플레이리스트 삭제하기` 테스트 코드 작성

* Feat: `AddTrackToPlaylistRequestDto` 작성

* Feat: `PlaylistTrackRepository` - 플레이리스트에 해당 트랙의 존재 여부 확인 메소드 구현

* Feat: `특정 플레이리스트에 곡 추가하기` API 구현

* Feat: `PlaylistTrackRepository` `findByPlaylistAndTrack()` 메소드 추가

* Feat: `특정 플레이리스트의 곡 삭제하기` API 구현

* Test: `특정 플레이리스트에 곡 추가하기` API 테스트 코드 작성

* Test: `특정 플레이리스트의 곡 삭제하기` API 테스트 코드 작성

* BE/#28 `플레이리스트들 가져오기`, `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` API 구현 (#53)

* Rename: `TrackOverviewResponseDto` 경로를 Genre 도메인 하위에서 Track 도메인 하위로 변경

* Feat: `PlaylistWithTracksOverviewResponseDto` 작성

* Fix: `PlaylistTrackRepository` - `findAllByPlaylistId()` 메소드 정렬방식 JPQL -> Pageable Sort로 동작하도록 변경

* Fix: `PlaylistWithTracksOverviewResponseDto` - toDto() 과정에서 User가 null일 경우도 처리 가능하도록 변경

* Feat: `플레이스트들 가져오기` API에서 요청시, RequestParam `type` 검증 커스텀 어노테이션 작성

* Feat: `PlaylistRepository` - `findByIsCuratedTrue()`, `findByIsCuratedFalseAndIsPublicTrue()` 메소드 작성

* Feat: `플레이리스트들 가져오기` API 구현

* Feat: `MyPlaylistRepository` - `existsByUserAndPlaylist()`, `findByUserAndPlaylist()` 추가

* Feat: `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` API 구현

* Teat: `플레이리스트들 가져오기` API 테스트 코드 작성

* Test: `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` 테스트 코드 작성

* feat: refresh 검증 API 구현 (#55)

* feat: refresh 검증 API 구현

/refresh로 만료 확인 가능

* fix: refresh token형식 변형 + mapping 변경

* Be/#10  jwt형식으로 swagger추가  (#56)

* feat: build.gradle 의존성 추가

* feat: swagger + jwt 설정 추가 및 기본 API summary 작성

@controller -> @RestController 변경

---------



* Test: `PlaylistControllerTest` - `updatePlaylistNameSuccess` 통합테스트 추가 (#57)

* Fix: `contextLoads()` 테스트 `@ActiveProfiles("test")` 어노테이션 명시로 해결 (#59)

* Fix: `특정 플레이리스트 정보 가져오기` API 사용자 검증 과정 추가 (#60)

* Be/#11 redis 설정 및 redis refresh token 삽입 (#61)

* feat: redis.conf 파일 추가

redis 상세 설정을 위한 conf파일 추가

* fix: redis data파일 자동 생성 제외

data에 들어가는 log수집에 대한 내용을 제외하기 위해 추가

* fix: redis 버전 다운그레이드

redis 버전 의존성을 위해서 .3 -> .2로 다운그레이드

* feat: redis 도메인 구성 추가

redis  rogin을 위한 기본 구성 내용 추가

* feat: userId jwt 토큰값 추가

jwt토큰에 포함 시켜 redis refresh 검증에 사용

* faet: redis refresh 검증 로직 추가

* feat: docker-compose redis 삽입

* Create test_deploy.yml

add `test_deploy.yml` on github action

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* fix: 로그인 구현 형식 json -> cookie (#70)

json 전달형식에서 cookie 형식으로 변경

* Be/#32 좋아요 기능 구현 (#71)

* fix: 로그인 구현 형식 json -> cookie

json 전달형식에서 cookie 형식으로 변경

* fix: 리다이렉션 url 수정

genre -> genre_select

* fix: swagger 설정 변경

허용 범위 변경 및 설정 변경

* fix: jwt 시간 및 정보 변경

userId 추가 및 기본 토큰 지속 시간 변경

* fix: Genre 형식 변경

기존 enum형식 Genre 삭제 후 Genre 내용 변경

* feat: 좋아요 기능 구현

좋아요 추가 기능 및 삭제 기능 구현

* feat: track 전달 get내용 likes추가

* feat: likesFlag 형식 구현

Boolean likesFlag 형식

* Test 브랜치 `test.Dockerfile` 수정 및 `test_deploy.yml` Github Action 수정 (#72)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* `Develop` -> `Test` 브랜치 머지 (#69)

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* Fix: `test.Dockerfile` CPU 아키텍쳐 호환성 문제로 jdk-alpine에서 jdk로 변경

* Fix: `test_deploy.yml` docker buildx 를 사용해서 멀티 아키텍처를 지원하도록 변경

* BE/#36 `곡 검색하기` API 구현 (#74)

* Feat: `build.gradle` elasticsearch-java 클라이언트 의존성 추가

* Feat: `ElasticsearchConfig` 및 `ElasticsearchProperties` 작성

* Fix: `DreamvaultBackendApplication` 에서 프로퍼티 검사 경로 변경

* Fix: `LikeRepository` - existsByUserIdAndTrackId() 메소드 `@Param` 어노테이션 명시

* Feat: `JacksonConfig` - Elasticsearch java client에서 요청 시 사용하는 `objectMapper` 빈 등록

* Feat: `TrackDocument` Elasticsearch 검색 결과 반환받는 객체 작성

* Feat: `SearchTrackResponseDto`, 페이지네이션을 위한 `CustomPage` 및 기타 하위 Dto 작성

* Feat: `TrackDocumentUtil` - 검색 결과에서 하이라이팅 된 필드랑 원본 결합용 유틸 클래스 작성

* Feat: `SearchController`, `SearchService` 검색 비즈니스 로직 구현

* fix: Swagger JWT 형식 변경 (#79)

Components - > SecurityScheme

* Fix: `PlaylistService`의 `createPlaylist()`에서 MyPlaylist를 추가하지 않도록 변경 (#81)

* Fix: `JwtVerifyFilter` - whitelist에 `/search` 경로 추가 (#83)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* `Develop` -> `Test` 브랜치 머지 (#69)

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* Fix: `test.Dockerfile` CPU 아키텍쳐 호환성 문제로 jdk-alpine에서 jdk로 변경

* Fix: `test_deploy.yml` docker buildx 를 사용해서 멀티 아키텍처를 지원하도록 변경

* Fix: `JwtVerifyFilter` - whitelist에 `/search/**` 경로 추가

* Fix: `JwtVerifyFilter` - whitelist에 `/search/**` -> `/search` 경로 변경

* BE/#42 `AuthenticationPriciple`이 필요한 API에 사용자 식별 로직 붙이기 && `getPlaylistWithTracks()`에서 플레이리스트 소유 정보 추가 반환 (#85)

* Refactor: `GenreController` - userId 파라미터 전달방식 수정

* Fix: `AuthenticationPriciple`을 통한사용자 식별로직 추가

* Comment: `PlaylistService` 주석 추가

* Refacotr: `TagController` 파라미터 전달 방식 수정

* Fix: `TrackService` API에 사용자 식별로직 추가

* Refactor: 파라미터와 로직코드 가시적 구분을 위해 개행 추가

* Feat: 기본 경로들 whitelist에 추가

* Fix: `PlaylistService` - `getPlaylistWithTracks()` 특정 플레이리스트 정보 가져오기에서 `isOwner` 필드 추가

* Be/#38 User 곡 , 플레이리스트, 취향 API 구현 (#86)

* feat: 로그인 index.html 업데이트

구글 + 네이버 간편 백엔드 로그인 추가

* fix: 로그인 토큰 url 형식 변경

cookie -> params로 변경

* fix: 토큰 만료 status코드 변경

토큰 만료 내역 변경 status 200 -> 401

* feat: 네이버, 구글 로그인 형식 추가

ouath 네이버, 구글 로그인 추가

* fix: 장르 DB 형식 변겅

* feat: user 관련 API 구현

* feat: track 관련 api 구현

* feat: playlist 관련 api 구현

* feat: like 관련 api 구현

* Feat: `SwaggerConfig`에 테스트 서버 도메인 추가 (#89)

* Be/#44 JwtVerifyFilter 도메인 허용 whitelist user추가 및 도메인명 수정 (#90)

* fix: JwtVerifyFilter 도메인 허용 변경

user관련 도메인 추가 허용

* fix: user 관련 외부 controller 엔드포인트 값 변경

playlist controller, trackcontroller 각각 명칭 삭제

* Fix: `JwtVerifyFilter`에서 whitelist의 `/user` 경로 `/users`로 수정 (#93)

* BE/#47 Cors, RedirectURL 및 Swagger 설정 관련 URL들 프로퍼티로 치환 && 배포관련 파일 변경 (#95)

* Fix: `SwaggerConfig` 스웨거 서버 URL 프로퍼티 명칭 변경 `domain.test` -> `domain.backend`

* Fix: `CommonLoginSuccessHandler` - `determinTargetUrl()`에서 redirectURL 도메인을 프로퍼티에서 가져오도록 설정

* Fix: `SecurityConfig` - `corsConfiguration()`에 frontendUrl 추가

* Fix: `.gitignore`에 init*.sql 추가

* Rename: `test.Dockerfile` -> `prod.Dockerfile` 파일명 변경

* Fix: `test_deploy.yml` -> `deploy.yml` 로 변경 및 `prod.Dockerfile` 사용하도록 설정

* Fix: `appspec.yml` ECS 컨테이너 명 변경

---------

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

* Fix: `deploy.yml` 오타 수정 (#105)

* Fix: `TagService` - 새 태그 생성 시, 사용자가 업로드한 곡의 이미지를 태그 이미지로 사용하도록 변경 (#109)

* fix: 로그인 redirecturl 변경 (#108)

/auth/login, /auth/signup

---------

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

---------

Co-authored-by: kwongwangjae <[email protected]>
Co-authored-by: kwongwangjae <[email protected]>
gerry-mandering added a commit that referenced this pull request May 23, 2024
* Merge: `develop` 브랜치에서 `main` 브랜치로 현재 작업 내용 머지 (#96) (#103)

* feat: mysql + docker 세팅

* Be/#2 JPA 엔티티 코드 구성 (#6)

* Fix: `build.gradle` 오타 수정

* Feat: `BaseTimeEntity` 추상 클래스 설계

- `createdAt` : 생성 일자
- `modifiedAt` : 수정 일자

* Feat: `User` 엔티티 설계

- `id` : `user_id`로 Column명 설정
- `name` : 길이 255자 기본 값으로 설정(구글의 경우, 최대 64자)
- `displayName` : 표시 이름은 최대 50자
- `email` : 이메일의 경우 최대 길이 225자이므로 기본 값으로 설정
- `profileImage` : 프로필 이미지 url

* Fix: `User.java` auto formatting

* Feat: `Genre` 엔티티 설계

- `id` : `genre_id`로 Column명 설정
- `name` : 장르의 명은 최대 50자로 설정

* Feat: `Tag` 엔티티 설계

- `id` : `tag_id`로 Column명 설정
- `name` : 태그 명은 최대 50자로 설정

* Feat: `Genre`와 `Tag` 엔티티에 대표 이미지 url을 저장하는 Image 필드 추가

* Feat: `Genre` 엔티티에 Builder 추가

* Feat: `Tag` 엔티티에 Builder 추가

* Feat: `Genre` 엔티티와 `Track` 엔티티 연관관계 설정

- 양방향 연관관계
- Cascade.ALL : `Genre` 삭제 시, 하위 `Track`들도 삭제 됨

* Feat: `Tag` 엔티티와 `Track` 엔티티 다대다 연관관계 설정

- `TrackTag` 조인 테이블(연관관계 테이블)을 이용한 다대다 관계
- 양방향 연관관계
- `TrackTag` 테이블은 개별 PK를 가짐(복합키 X)

* Feat: `TrackDetail` 엔티티 설계

Reference: https://vladmihalcea.com/the-best-way-to-map-a-onetoone-relationship-with-jpa-and-hibernate/

* Feat: `TrackTag` 엔티티와 `TrackDetail` 엔티티에 `BaseTimeEntity` 엔티티 상속

* Feat: `Like` 엔티티 설계

* Feat: `StreamingHistory` 엔티티 설계

* Feat: `User` 엔티티와 `Like`, `StreamingHistory` 엔티티 사이의 일대다 관계 매핑

* Feat: `Track` 엔티티 설계

* Fix: `Genre` 엔티티 필드명 수정

* Feat: `Playlist`, `PlaylistTrack`, MyPlaylist` 엔티티 설계

* Fix: `Tag` 엔티티 필드명 수정

* Remove: `StreamingHistory` 엔티티의 `streamingDuration` 필드 제거

* Fix: `Track` 엔티티 필드명 수정 및 단방향 관계 처리

* Feat: `UserGenre` 엔티티를 통한 회원 취향 일대다 관계 구성

* Fix: `.gitignore` 파일에 `bin`, 프로퍼티 파일 추가 및 `.gitignore` 재적용 (#9)

* Fix: `pull_request.md` 템플릿 경로 수정 및 `issue.md` 템플릿 기능 수정 항목 추가 (#11)

* BE/#3 특정 곡 등록하기 API 구현 (#14)

* Feat: `build.gradle` 의존성 추가

- Test : `mockito`
- AWS S3 : `awssdk:s3`
- Image Processing `thumbnailator`, `imageio-webp`

* Feat: `S3ClientProperties` 프로퍼티 객체 구현 및 Application에서 프로퍼티 스캔 활성화

* Feat: `S3ClientConfig` - S3 클라이언트 빈 등록 및 `S3FileHandler` 파일 핸들링 객체 구현

* Feat: `ImageResizer` - Thumbnailator 라이브러리로 이미지 리사이징 로직 구현

* Feat: MultipartFile 구현체 및 이미지 / 오디오 파일 S3 업로더 구현

* Feat: `User` 제외한 각 도메인 별 빌더 또는 생성자 및 리포지토리 구현

* Feat: `Track` 도메인 컨트롤러 및 DTO 구현

* Feat: 이미지 / 오디오 MultipartFile들의 커스텀 Validation 어노테이션 구현

* Feat: `TagService` - associtateTrackWithTags() 메소드 구현

* Feat: `TrackService` - Track 업로드 비즈니스 로직 구현

* Feat: `Track` 도메인 테스트코드 작성

- Controller 통합 테스트
- Controller 유닛 테스트
- Service 유닛 테스트

* Feat: `ImageUploader` TrackImage 또는 ThumbnailImage 업로드 실패 시, 로깅 로직 추가

* Fix: `TrackController` 에서 `/api/v1` 접두  경로 제거

* Feat: `.gitignore` - `.vscode` 디렉토리 및 `init.sql` 파일 추가

* Feat: `JpaConfig` Configuration 클래스 작성 (#15)

* BE/#8 `.gitignore` 항목 추가 및 템플릿 경로 수정 (#17)

* Feat: `.gitignore` 에 `init.sql` 과 `.vscode` 추가

* Rename: `issue_template.md` 와 `pull_request_template.md` 경로 `.github` 하위로 변경

* BE/#9 `특정 곡 정보 가져오기` API 구현 및 테스트 코드 작성 (#19)

* Rename: `TrackResponseDto` -> `TrackUploadResponseDto` 명칭 변경

* Rename: `TrackResponseDto` -> `TrackUploadResponseDto` 명칭 변경

* Feat: `TrackResponseDto` 구현

* Feat: `특정 곡 정보 가져오기` API 구현

* Fix: `TrackController` 유닛 테스트 및 통합 테스트 API 요청 경로 수정

* Feat: `build.gradle` 에 `assertj-core` 의존성 추가

* Comment: `TrackService` 주석 추가

* Feat: `TrackTagRepository` - findByTagName() 메소드 추가

* Test: `특정 곡 정보 가져오기` API 테스트 코드 작성

* Be/#6 oAuth 2.0 로그인 로직 구현 (#22)

* feat: build.gradle depandence 추가

jwt + security + oAuth 2.0

* feat: build.gradle 의존성 추가

redis 추가

* faet: 카카오 기본 로그인 화면

백엔드 카카오 로그인 화면 구현

* feat: Cors 허용

react와 같은 외부 라이브러리 Cors 규칙 허용

* feat: oAuth 로그인을 위한 기본 entity 구현

controller 환경 + domain role 추가 Detail은 따로 빼서 구현

* feat: 카카오 데이터베이스 환경 설정

카카오 규칙에 맞는 환경설정 로직 추가

* feat: jwt 생성 및 시간 로직 구현

jwt를 통한 인증 과정 + 시간 설정

* feat: jwt 토큰 예외처리

토큰 만료기간에 대한 예외처리 구현

* feat: 카카오 SecurityConfig + handler

SecurityConfig를 통한 카카오 로그인 후 엑세스토큰 및 리프레스 토근 발급

* BE/#12 `Track` 엔티티에 곡 길이 정보 `duration` 필드 추가 (#24)

* Feat: `Track` 엔티티 `duration` 필드 추가

* Feat: Response Dto `duration` 필드 추가

* Feat: `build.gradle` - `jaudiotagger` 의존성 추기

* Feat: `AudioDataParser` - `extractDurationInSeconds` 곡 길이 추출 메소드 구현

* Feat: `TrackService` - 곡 업로드 시, 곡 길이 저장 로직 추가

* Test: `User` 및 `Track` 도메인 수정 사항 반영해서, 테스트 코드 수정

* Comment: `AudioDataParser` 주석 추가

* BE/#13 `특정 곡 재생 이벤트 기록하기` API 구현 (#27)

* Feat: `StreamingHistoryRepository` 구현

* Feat: `StreamingHistory` 엔티티 빌더 패턴 생성자 구성

* Feat: `특정 곡 재생 이벤트 기록하기` API 구현

* Fix: `JwtVertifyFilter` API 테스트 과정에서 임시로 필터 통과하도록 설정

* Test: `특정 곡 재생 이벤트 기록하기` API 테스트 코드 작성

* BE/#15 `모든 장르 리스트 가져오기` API 구현 (#29)

* Fix: `TrackService`에서 uploadTrack()의 `TrackUploadResponseDto`를 생성할 때 toDto()를 사용하도록 변경

* Feat: `GenreResponseDto` 작성

* Feat: `모든 장르 리스트 가져오기` API 구현

* Test: `모든 장르 리스트 가져오기` API 테스트 코드 작성

* BE/#16 `특정 장르의 모든 곡 가져오기` API 구현 (#31)

* Fix: `track_audio` MultipartFile 검증과정에 `wav` 확장자 추가

* Feat: `TrackRepository` Pagination을 적용한 findAllByGenreId() 메소드 작성

* Feat: `특정 장르의 모든 곡 가져오기` API의 반환 Dto인 `GenreWithTracksResponseDto` 구현

* Feat: `특정 장르의 모든 곡 가져오기` API 구현

* Test: `특정 장르의 모든 곡 가져오기` API 테스트 코드 작성

* BE/#17 `장르별 곡 3개씩 가져오기` API 구현 (#33)

* Feat: `TrackOverviewResponseDto` 작성

* Feat: `GenreWithTracksOverviewResponseDto` 작성

* Feat: `GenreRepository` - Pagination을 지원하는 findAll() 작성

* Feat: `장르별 곡 3개씩 가져오기` API 구현

* Fix: `GenreController`의 `장르별 곡 3개씩 가져오기` API Page 객체 리턴하도록 변경

* Comment: `TrackControllerTest.java` - `uploadTrackSuccess()` 테스트 전체 순차적으로 테스트 진행시 오류 나는 부분 주석 상세하게 명시

* Refactor: `TrackServiceTest`에서 Mock 객체 생성시, 파라미터로 생성하도록 코드의 유연성 높임

* Test: `장르별 곡 3개씩 가져오기` API 테스트 코드 작성

* BE/#18 `모든 태그 리스트 가져오기` 및 `특정 태그의 모든 곡 가져오기` API 구현 (#35)

* Fix: `Tag` 엔티티 `tagImage` 필드 활성화

* Feat: `TagResponseDto` 객체 작성

* Feat: `모든 태그 리스트 가져오기` API 구현

* Feat: `TagWithTracksResponseDto` 구현

* Feat: `특정 태그의 모든 곡 가져오기` API 구현

* Fix: `TagController` - @PageableDefault 항목에서 `page` 0으로 기본값 설정

* Test: `모든 태그 리스트 가져오기` 및 `특정 태그의 모든 곡 가져오기` API 테스트 코드 작성

* BE/#19 `새 플레이리스트 생성하기` API 구현 (#37)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* BE/#20 `특정 플레이리스트 정보 가져오기` API 구현 (#39)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* Feat: `PlaylistWithTracksResponseDto` 작성

* Feat: `MyPlaylist`, `PlaylistTrack` 엔티티가 `BaseTimeEntity`를 상속받도록 변경

* Feat: `PlaylistTrackRepository` - Pagination 적용한 `findAllByPlaylistId() 작성

* Feat: `특정 플레이리스트 정보 가져오기` API 구현

* Feat: `PlaylistTrack` 엔티티 Builder 추가

* Test: `특정 플레이리스트 정보 가져오기` API 테스트 코드 작성

* BE/#21 `특정 플레이리스트 이름 수정하기` API 구현 (#43)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* Feat: `PlaylistWithTracksResponseDto` 작성

* Feat: `MyPlaylist`, `PlaylistTrack` 엔티티가 `BaseTimeEntity`를 상속받도록 변경

* Feat: `PlaylistTrackRepository` - Pagination 적용한 `findAllByPlaylistId() 작성

* Feat: `특정 플레이리스트 정보 가져오기` API 구현

* Feat: `PlaylistTrack` 엔티티 Builder 추가

* Test: `특정 플레이리스트 정보 가져오기` API 테스트 코드 작성

* Rename: `CreatePlaylistResponseDto` -> `PlaylistResponseDto` 객체 명칭 변경

* Feat: `Playlist` - `playlistName` 필드 변경하는 `updatePlaylistName()` 메소드 작성

* Feat: `UpldatePlaylistNameRequestDto` 작성

* Feat: `특정 플레이리스트 이름 수정하기` API 구현

* Test: `특정 플레이리스트 이름 수정하기` API 테스트 코드 작성

* Remove: 중복 import 삭제

* Remove: 중복 import 삭제

* Remove: 중복 import 삭제

* Rename: 서비스 계층 유닛 테스트 코드 객체명 수정 (#44)

* Feat: 서비스 계층 메소드에서 `@Transactional(readOnly=true)` 명시하기 (#45)

* BE/#24 `특정 플레이리스트 삭제하기`, `특정 플레이리스트에 곡 추가하기`, `특정 플레이리스트의 곡 삭제하기` API 구현 (#50)

* Feat: `MyPlaylistRepository`, `PlaylistTrackRepository` 에서 플레이리스트 삭제시 호출되는 `deleteByPlaylist()` 메소드 추가

* Feat: `특정 플레이리스트 삭제하기` API 구현

* Test: `특정 플레이리스트 삭제하기` 테스트 코드 작성

* Feat: `AddTrackToPlaylistRequestDto` 작성

* Feat: `PlaylistTrackRepository` - 플레이리스트에 해당 트랙의 존재 여부 확인 메소드 구현

* Feat: `특정 플레이리스트에 곡 추가하기` API 구현

* Feat: `PlaylistTrackRepository` `findByPlaylistAndTrack()` 메소드 추가

* Feat: `특정 플레이리스트의 곡 삭제하기` API 구현

* Test: `특정 플레이리스트에 곡 추가하기` API 테스트 코드 작성

* Test: `특정 플레이리스트의 곡 삭제하기` API 테스트 코드 작성

* BE/#28 `플레이리스트들 가져오기`, `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` API 구현 (#53)

* Rename: `TrackOverviewResponseDto` 경로를 Genre 도메인 하위에서 Track 도메인 하위로 변경

* Feat: `PlaylistWithTracksOverviewResponseDto` 작성

* Fix: `PlaylistTrackRepository` - `findAllByPlaylistId()` 메소드 정렬방식 JPQL -> Pageable Sort로 동작하도록 변경

* Fix: `PlaylistWithTracksOverviewResponseDto` - toDto() 과정에서 User가 null일 경우도 처리 가능하도록 변경

* Feat: `플레이스트들 가져오기` API에서 요청시, RequestParam `type` 검증 커스텀 어노테이션 작성

* Feat: `PlaylistRepository` - `findByIsCuratedTrue()`, `findByIsCuratedFalseAndIsPublicTrue()` 메소드 작성

* Feat: `플레이리스트들 가져오기` API 구현

* Feat: `MyPlaylistRepository` - `existsByUserAndPlaylist()`, `findByUserAndPlaylist()` 추가

* Feat: `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` API 구현

* Teat: `플레이리스트들 가져오기` API 테스트 코드 작성

* Test: `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` 테스트 코드 작성

* feat: refresh 검증 API 구현 (#55)

* feat: refresh 검증 API 구현

/refresh로 만료 확인 가능

* fix: refresh token형식 변형 + mapping 변경

* Be/#10  jwt형식으로 swagger추가  (#56)

* feat: build.gradle 의존성 추가

* feat: swagger + jwt 설정 추가 및 기본 API summary 작성

@Controller -> @RestController 변경

---------



* Test: `PlaylistControllerTest` - `updatePlaylistNameSuccess` 통합테스트 추가 (#57)

* Fix: `contextLoads()` 테스트 `@ActiveProfiles("test")` 어노테이션 명시로 해결 (#59)

* Fix: `특정 플레이리스트 정보 가져오기` API 사용자 검증 과정 추가 (#60)

* Be/#11 redis 설정 및 redis refresh token 삽입 (#61)

* feat: redis.conf 파일 추가

redis 상세 설정을 위한 conf파일 추가

* fix: redis data파일 자동 생성 제외

data에 들어가는 log수집에 대한 내용을 제외하기 위해 추가

* fix: redis 버전 다운그레이드

redis 버전 의존성을 위해서 .3 -> .2로 다운그레이드

* feat: redis 도메인 구성 추가

redis  rogin을 위한 기본 구성 내용 추가

* feat: userId jwt 토큰값 추가

jwt토큰에 포함 시켜 redis refresh 검증에 사용

* faet: redis refresh 검증 로직 추가

* feat: docker-compose redis 삽입

* Create test_deploy.yml

add `test_deploy.yml` on github action

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* fix: 로그인 구현 형식 json -> cookie (#70)

json 전달형식에서 cookie 형식으로 변경

* Be/#32 좋아요 기능 구현 (#71)

* fix: 로그인 구현 형식 json -> cookie

json 전달형식에서 cookie 형식으로 변경

* fix: 리다이렉션 url 수정

genre -> genre_select

* fix: swagger 설정 변경

허용 범위 변경 및 설정 변경

* fix: jwt 시간 및 정보 변경

userId 추가 및 기본 토큰 지속 시간 변경

* fix: Genre 형식 변경

기존 enum형식 Genre 삭제 후 Genre 내용 변경

* feat: 좋아요 기능 구현

좋아요 추가 기능 및 삭제 기능 구현

* feat: track 전달 get내용 likes추가

* feat: likesFlag 형식 구현

Boolean likesFlag 형식

* Test 브랜치 `test.Dockerfile` 수정 및 `test_deploy.yml` Github Action 수정 (#72)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* `Develop` -> `Test` 브랜치 머지 (#69)

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* Fix: `test.Dockerfile` CPU 아키텍쳐 호환성 문제로 jdk-alpine에서 jdk로 변경

* Fix: `test_deploy.yml` docker buildx 를 사용해서 멀티 아키텍처를 지원하도록 변경

* BE/#36 `곡 검색하기` API 구현 (#74)

* Feat: `build.gradle` elasticsearch-java 클라이언트 의존성 추가

* Feat: `ElasticsearchConfig` 및 `ElasticsearchProperties` 작성

* Fix: `DreamvaultBackendApplication` 에서 프로퍼티 검사 경로 변경

* Fix: `LikeRepository` - existsByUserIdAndTrackId() 메소드 `@Param` 어노테이션 명시

* Feat: `JacksonConfig` - Elasticsearch java client에서 요청 시 사용하는 `objectMapper` 빈 등록

* Feat: `TrackDocument` Elasticsearch 검색 결과 반환받는 객체 작성

* Feat: `SearchTrackResponseDto`, 페이지네이션을 위한 `CustomPage` 및 기타 하위 Dto 작성

* Feat: `TrackDocumentUtil` - 검색 결과에서 하이라이팅 된 필드랑 원본 결합용 유틸 클래스 작성

* Feat: `SearchController`, `SearchService` 검색 비즈니스 로직 구현

* fix: Swagger JWT 형식 변경 (#79)

Components - > SecurityScheme

* Fix: `PlaylistService`의 `createPlaylist()`에서 MyPlaylist를 추가하지 않도록 변경 (#81)

* Fix: `JwtVerifyFilter` - whitelist에 `/search` 경로 추가 (#83)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* `Develop` -> `Test` 브랜치 머지 (#69)

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* Fix: `test.Dockerfile` CPU 아키텍쳐 호환성 문제로 jdk-alpine에서 jdk로 변경

* Fix: `test_deploy.yml` docker buildx 를 사용해서 멀티 아키텍처를 지원하도록 변경

* Fix: `JwtVerifyFilter` - whitelist에 `/search/**` 경로 추가

* Fix: `JwtVerifyFilter` - whitelist에 `/search/**` -> `/search` 경로 변경

* BE/#42 `AuthenticationPriciple`이 필요한 API에 사용자 식별 로직 붙이기 && `getPlaylistWithTracks()`에서 플레이리스트 소유 정보 추가 반환 (#85)

* Refactor: `GenreController` - userId 파라미터 전달방식 수정

* Fix: `AuthenticationPriciple`을 통한사용자 식별로직 추가

* Comment: `PlaylistService` 주석 추가

* Refacotr: `TagController` 파라미터 전달 방식 수정

* Fix: `TrackService` API에 사용자 식별로직 추가

* Refactor: 파라미터와 로직코드 가시적 구분을 위해 개행 추가

* Feat: 기본 경로들 whitelist에 추가

* Fix: `PlaylistService` - `getPlaylistWithTracks()` 특정 플레이리스트 정보 가져오기에서 `isOwner` 필드 추가

* Be/#38 User 곡 , 플레이리스트, 취향 API 구현 (#86)

* feat: 로그인 index.html 업데이트

구글 + 네이버 간편 백엔드 로그인 추가

* fix: 로그인 토큰 url 형식 변경

cookie -> params로 변경

* fix: 토큰 만료 status코드 변경

토큰 만료 내역 변경 status 200 -> 401

* feat: 네이버, 구글 로그인 형식 추가

ouath 네이버, 구글 로그인 추가

* fix: 장르 DB 형식 변겅

* feat: user 관련 API 구현

* feat: track 관련 api 구현

* feat: playlist 관련 api 구현

* feat: like 관련 api 구현

* Feat: `SwaggerConfig`에 테스트 서버 도메인 추가 (#89)

* Be/#44 JwtVerifyFilter 도메인 허용 whitelist user추가 및 도메인명 수정 (#90)

* fix: JwtVerifyFilter 도메인 허용 변경

user관련 도메인 추가 허용

* fix: user 관련 외부 controller 엔드포인트 값 변경

playlist controller, trackcontroller 각각 명칭 삭제

* Fix: `JwtVerifyFilter`에서 whitelist의 `/user` 경로 `/users`로 수정 (#93)

* BE/#47 Cors, RedirectURL 및 Swagger 설정 관련 URL들 프로퍼티로 치환 && 배포관련 파일 변경 (#95)

* Fix: `SwaggerConfig` 스웨거 서버 URL 프로퍼티 명칭 변경 `domain.test` -> `domain.backend`

* Fix: `CommonLoginSuccessHandler` - `determinTargetUrl()`에서 redirectURL 도메인을 프로퍼티에서 가져오도록 설정

* Fix: `SecurityConfig` - `corsConfiguration()`에 frontendUrl 추가

* Fix: `.gitignore`에 init*.sql 추가

* Rename: `test.Dockerfile` -> `prod.Dockerfile` 파일명 변경

* Fix: `test_deploy.yml` -> `deploy.yml` 로 변경 및 `prod.Dockerfile` 사용하도록 설정

* Fix: `appspec.yml` ECS 컨테이너 명 변경

---------

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

* Fix: `deploy.yml` 오타 수정 (#105)

* Fix: `TagService` - 새 태그 생성 시, 사용자가 업로드한 곡의 이미지를 태그 이미지로 사용하도록 변경 (#109)

* fix: 로그인 redirecturl 변경 (#108)

/auth/login, /auth/signup

* Main -> develop 다시 머지 진행 (#111)

* Merge: `develop` 브랜치에서 `main` 브랜치로 현재 작업 내용 머지 (#96)

* feat: mysql + docker 세팅

* Be/#2 JPA 엔티티 코드 구성 (#6)

* Fix: `build.gradle` 오타 수정

* Feat: `BaseTimeEntity` 추상 클래스 설계

- `createdAt` : 생성 일자
- `modifiedAt` : 수정 일자

* Feat: `User` 엔티티 설계

- `id` : `user_id`로 Column명 설정
- `name` : 길이 255자 기본 값으로 설정(구글의 경우, 최대 64자)
- `displayName` : 표시 이름은 최대 50자
- `email` : 이메일의 경우 최대 길이 225자이므로 기본 값으로 설정
- `profileImage` : 프로필 이미지 url

* Fix: `User.java` auto formatting

* Feat: `Genre` 엔티티 설계

- `id` : `genre_id`로 Column명 설정
- `name` : 장르의 명은 최대 50자로 설정

* Feat: `Tag` 엔티티 설계

- `id` : `tag_id`로 Column명 설정
- `name` : 태그 명은 최대 50자로 설정

* Feat: `Genre`와 `Tag` 엔티티에 대표 이미지 url을 저장하는 Image 필드 추가

* Feat: `Genre` 엔티티에 Builder 추가

* Feat: `Tag` 엔티티에 Builder 추가

* Feat: `Genre` 엔티티와 `Track` 엔티티 연관관계 설정

- 양방향 연관관계
- Cascade.ALL : `Genre` 삭제 시, 하위 `Track`들도 삭제 됨

* Feat: `Tag` 엔티티와 `Track` 엔티티 다대다 연관관계 설정

- `TrackTag` 조인 테이블(연관관계 테이블)을 이용한 다대다 관계
- 양방향 연관관계
- `TrackTag` 테이블은 개별 PK를 가짐(복합키 X)

* Feat: `TrackDetail` 엔티티 설계

Reference: https://vladmihalcea.com/the-best-way-to-map-a-onetoone-relationship-with-jpa-and-hibernate/

* Feat: `TrackTag` 엔티티와 `TrackDetail` 엔티티에 `BaseTimeEntity` 엔티티 상속

* Feat: `Like` 엔티티 설계

* Feat: `StreamingHistory` 엔티티 설계

* Feat: `User` 엔티티와 `Like`, `StreamingHistory` 엔티티 사이의 일대다 관계 매핑

* Feat: `Track` 엔티티 설계

* Fix: `Genre` 엔티티 필드명 수정

* Feat: `Playlist`, `PlaylistTrack`, MyPlaylist` 엔티티 설계

* Fix: `Tag` 엔티티 필드명 수정

* Remove: `StreamingHistory` 엔티티의 `streamingDuration` 필드 제거

* Fix: `Track` 엔티티 필드명 수정 및 단방향 관계 처리

* Feat: `UserGenre` 엔티티를 통한 회원 취향 일대다 관계 구성

* Fix: `.gitignore` 파일에 `bin`, 프로퍼티 파일 추가 및 `.gitignore` 재적용 (#9)

* Fix: `pull_request.md` 템플릿 경로 수정 및 `issue.md` 템플릿 기능 수정 항목 추가 (#11)

* BE/#3 특정 곡 등록하기 API 구현 (#14)

* Feat: `build.gradle` 의존성 추가

- Test : `mockito`
- AWS S3 : `awssdk:s3`
- Image Processing `thumbnailator`, `imageio-webp`

* Feat: `S3ClientProperties` 프로퍼티 객체 구현 및 Application에서 프로퍼티 스캔 활성화

* Feat: `S3ClientConfig` - S3 클라이언트 빈 등록 및 `S3FileHandler` 파일 핸들링 객체 구현

* Feat: `ImageResizer` - Thumbnailator 라이브러리로 이미지 리사이징 로직 구현

* Feat: MultipartFile 구현체 및 이미지 / 오디오 파일 S3 업로더 구현

* Feat: `User` 제외한 각 도메인 별 빌더 또는 생성자 및 리포지토리 구현

* Feat: `Track` 도메인 컨트롤러 및 DTO 구현

* Feat: 이미지 / 오디오 MultipartFile들의 커스텀 Validation 어노테이션 구현

* Feat: `TagService` - associtateTrackWithTags() 메소드 구현

* Feat: `TrackService` - Track 업로드 비즈니스 로직 구현

* Feat: `Track` 도메인 테스트코드 작성

- Controller 통합 테스트
- Controller 유닛 테스트
- Service 유닛 테스트

* Feat: `ImageUploader` TrackImage 또는 ThumbnailImage 업로드 실패 시, 로깅 로직 추가

* Fix: `TrackController` 에서 `/api/v1` 접두  경로 제거

* Feat: `.gitignore` - `.vscode` 디렉토리 및 `init.sql` 파일 추가

* Feat: `JpaConfig` Configuration 클래스 작성 (#15)

* BE/#8 `.gitignore` 항목 추가 및 템플릿 경로 수정 (#17)

* Feat: `.gitignore` 에 `init.sql` 과 `.vscode` 추가

* Rename: `issue_template.md` 와 `pull_request_template.md` 경로 `.github` 하위로 변경

* BE/#9 `특정 곡 정보 가져오기` API 구현 및 테스트 코드 작성 (#19)

* Rename: `TrackResponseDto` -> `TrackUploadResponseDto` 명칭 변경

* Rename: `TrackResponseDto` -> `TrackUploadResponseDto` 명칭 변경

* Feat: `TrackResponseDto` 구현

* Feat: `특정 곡 정보 가져오기` API 구현

* Fix: `TrackController` 유닛 테스트 및 통합 테스트 API 요청 경로 수정

* Feat: `build.gradle` 에 `assertj-core` 의존성 추가

* Comment: `TrackService` 주석 추가

* Feat: `TrackTagRepository` - findByTagName() 메소드 추가

* Test: `특정 곡 정보 가져오기` API 테스트 코드 작성

* Be/#6 oAuth 2.0 로그인 로직 구현 (#22)

* feat: build.gradle depandence 추가

jwt + security + oAuth 2.0

* feat: build.gradle 의존성 추가

redis 추가

* faet: 카카오 기본 로그인 화면

백엔드 카카오 로그인 화면 구현

* feat: Cors 허용

react와 같은 외부 라이브러리 Cors 규칙 허용

* feat: oAuth 로그인을 위한 기본 entity 구현

controller 환경 + domain role 추가 Detail은 따로 빼서 구현

* feat: 카카오 데이터베이스 환경 설정

카카오 규칙에 맞는 환경설정 로직 추가

* feat: jwt 생성 및 시간 로직 구현

jwt를 통한 인증 과정 + 시간 설정

* feat: jwt 토큰 예외처리

토큰 만료기간에 대한 예외처리 구현

* feat: 카카오 SecurityConfig + handler

SecurityConfig를 통한 카카오 로그인 후 엑세스토큰 및 리프레스 토근 발급

* BE/#12 `Track` 엔티티에 곡 길이 정보 `duration` 필드 추가 (#24)

* Feat: `Track` 엔티티 `duration` 필드 추가

* Feat: Response Dto `duration` 필드 추가

* Feat: `build.gradle` - `jaudiotagger` 의존성 추기

* Feat: `AudioDataParser` - `extractDurationInSeconds` 곡 길이 추출 메소드 구현

* Feat: `TrackService` - 곡 업로드 시, 곡 길이 저장 로직 추가

* Test: `User` 및 `Track` 도메인 수정 사항 반영해서, 테스트 코드 수정

* Comment: `AudioDataParser` 주석 추가

* BE/#13 `특정 곡 재생 이벤트 기록하기` API 구현 (#27)

* Feat: `StreamingHistoryRepository` 구현

* Feat: `StreamingHistory` 엔티티 빌더 패턴 생성자 구성

* Feat: `특정 곡 재생 이벤트 기록하기` API 구현

* Fix: `JwtVertifyFilter` API 테스트 과정에서 임시로 필터 통과하도록 설정

* Test: `특정 곡 재생 이벤트 기록하기` API 테스트 코드 작성

* BE/#15 `모든 장르 리스트 가져오기` API 구현 (#29)

* Fix: `TrackService`에서 uploadTrack()의 `TrackUploadResponseDto`를 생성할 때 toDto()를 사용하도록 변경

* Feat: `GenreResponseDto` 작성

* Feat: `모든 장르 리스트 가져오기` API 구현

* Test: `모든 장르 리스트 가져오기` API 테스트 코드 작성

* BE/#16 `특정 장르의 모든 곡 가져오기` API 구현 (#31)

* Fix: `track_audio` MultipartFile 검증과정에 `wav` 확장자 추가

* Feat: `TrackRepository` Pagination을 적용한 findAllByGenreId() 메소드 작성

* Feat: `특정 장르의 모든 곡 가져오기` API의 반환 Dto인 `GenreWithTracksResponseDto` 구현

* Feat: `특정 장르의 모든 곡 가져오기` API 구현

* Test: `특정 장르의 모든 곡 가져오기` API 테스트 코드 작성

* BE/#17 `장르별 곡 3개씩 가져오기` API 구현 (#33)

* Feat: `TrackOverviewResponseDto` 작성

* Feat: `GenreWithTracksOverviewResponseDto` 작성

* Feat: `GenreRepository` - Pagination을 지원하는 findAll() 작성

* Feat: `장르별 곡 3개씩 가져오기` API 구현

* Fix: `GenreController`의 `장르별 곡 3개씩 가져오기` API Page 객체 리턴하도록 변경

* Comment: `TrackControllerTest.java` - `uploadTrackSuccess()` 테스트 전체 순차적으로 테스트 진행시 오류 나는 부분 주석 상세하게 명시

* Refactor: `TrackServiceTest`에서 Mock 객체 생성시, 파라미터로 생성하도록 코드의 유연성 높임

* Test: `장르별 곡 3개씩 가져오기` API 테스트 코드 작성

* BE/#18 `모든 태그 리스트 가져오기` 및 `특정 태그의 모든 곡 가져오기` API 구현 (#35)

* Fix: `Tag` 엔티티 `tagImage` 필드 활성화

* Feat: `TagResponseDto` 객체 작성

* Feat: `모든 태그 리스트 가져오기` API 구현

* Feat: `TagWithTracksResponseDto` 구현

* Feat: `특정 태그의 모든 곡 가져오기` API 구현

* Fix: `TagController` - @PageableDefault 항목에서 `page` 0으로 기본값 설정

* Test: `모든 태그 리스트 가져오기` 및 `특정 태그의 모든 곡 가져오기` API 테스트 코드 작성

* BE/#19 `새 플레이리스트 생성하기` API 구현 (#37)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* BE/#20 `특정 플레이리스트 정보 가져오기` API 구현 (#39)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* Feat: `PlaylistWithTracksResponseDto` 작성

* Feat: `MyPlaylist`, `PlaylistTrack` 엔티티가 `BaseTimeEntity`를 상속받도록 변경

* Feat: `PlaylistTrackRepository` - Pagination 적용한 `findAllByPlaylistId() 작성

* Feat: `특정 플레이리스트 정보 가져오기` API 구현

* Feat: `PlaylistTrack` 엔티티 Builder 추가

* Test: `특정 플레이리스트 정보 가져오기` API 테스트 코드 작성

* BE/#21 `특정 플레이리스트 이름 수정하기` API 구현 (#43)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* Feat: `PlaylistWithTracksResponseDto` 작성

* Feat: `MyPlaylist`, `PlaylistTrack` 엔티티가 `BaseTimeEntity`를 상속받도록 변경

* Feat: `PlaylistTrackRepository` - Pagination 적용한 `findAllByPlaylistId() 작성

* Feat: `특정 플레이리스트 정보 가져오기` API 구현

* Feat: `PlaylistTrack` 엔티티 Builder 추가

* Test: `특정 플레이리스트 정보 가져오기` API 테스트 코드 작성

* Rename: `CreatePlaylistResponseDto` -> `PlaylistResponseDto` 객체 명칭 변경

* Feat: `Playlist` - `playlistName` 필드 변경하는 `updatePlaylistName()` 메소드 작성

* Feat: `UpldatePlaylistNameRequestDto` 작성

* Feat: `특정 플레이리스트 이름 수정하기` API 구현

* Test: `특정 플레이리스트 이름 수정하기` API 테스트 코드 작성

* Remove: 중복 import 삭제

* Remove: 중복 import 삭제

* Remove: 중복 import 삭제

* Rename: 서비스 계층 유닛 테스트 코드 객체명 수정 (#44)

* Feat: 서비스 계층 메소드에서 `@Transactional(readOnly=true)` 명시하기 (#45)

* BE/#24 `특정 플레이리스트 삭제하기`, `특정 플레이리스트에 곡 추가하기`, `특정 플레이리스트의 곡 삭제하기` API 구현 (#50)

* Feat: `MyPlaylistRepository`, `PlaylistTrackRepository` 에서 플레이리스트 삭제시 호출되는 `deleteByPlaylist()` 메소드 추가

* Feat: `특정 플레이리스트 삭제하기` API 구현

* Test: `특정 플레이리스트 삭제하기` 테스트 코드 작성

* Feat: `AddTrackToPlaylistRequestDto` 작성

* Feat: `PlaylistTrackRepository` - 플레이리스트에 해당 트랙의 존재 여부 확인 메소드 구현

* Feat: `특정 플레이리스트에 곡 추가하기` API 구현

* Feat: `PlaylistTrackRepository` `findByPlaylistAndTrack()` 메소드 추가

* Feat: `특정 플레이리스트의 곡 삭제하기` API 구현

* Test: `특정 플레이리스트에 곡 추가하기` API 테스트 코드 작성

* Test: `특정 플레이리스트의 곡 삭제하기` API 테스트 코드 작성

* BE/#28 `플레이리스트들 가져오기`, `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` API 구현 (#53)

* Rename: `TrackOverviewResponseDto` 경로를 Genre 도메인 하위에서 Track 도메인 하위로 변경

* Feat: `PlaylistWithTracksOverviewResponseDto` 작성

* Fix: `PlaylistTrackRepository` - `findAllByPlaylistId()` 메소드 정렬방식 JPQL -> Pageable Sort로 동작하도록 변경

* Fix: `PlaylistWithTracksOverviewResponseDto` - toDto() 과정에서 User가 null일 경우도 처리 가능하도록 변경

* Feat: `플레이스트들 가져오기` API에서 요청시, RequestParam `type` 검증 커스텀 어노테이션 작성

* Feat: `PlaylistRepository` - `findByIsCuratedTrue()`, `findByIsCuratedFalseAndIsPublicTrue()` 메소드 작성

* Feat: `플레이리스트들 가져오기` API 구현

* Feat: `MyPlaylistRepository` - `existsByUserAndPlaylist()`, `findByUserAndPlaylist()` 추가

* Feat: `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` API 구현

* Teat: `플레이리스트들 가져오기` API 테스트 코드 작성

* Test: `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` 테스트 코드 작성

* feat: refresh 검증 API 구현 (#55)

* feat: refresh 검증 API 구현

/refresh로 만료 확인 가능

* fix: refresh token형식 변형 + mapping 변경

* Be/#10  jwt형식으로 swagger추가  (#56)

* feat: build.gradle 의존성 추가

* feat: swagger + jwt 설정 추가 및 기본 API summary 작성

@Controller -> @RestController 변경

---------

Co-authored-by: gerry-mandering <[email protected]>

* Test: `PlaylistControllerTest` - `updatePlaylistNameSuccess` 통합테스트 추가 (#57)

* Fix: `contextLoads()` 테스트 `@ActiveProfiles("test")` 어노테이션 명시로 해결 (#59)

* Fix: `특정 플레이리스트 정보 가져오기` API 사용자 검증 과정 추가 (#60)

* Be/#11 redis 설정 및 redis refresh token 삽입 (#61)

* feat: redis.conf 파일 추가

redis 상세 설정을 위한 conf파일 추가

* fix: redis data파일 자동 생성 제외

data에 들어가는 log수집에 대한 내용을 제외하기 위해 추가

* fix: redis 버전 다운그레이드

redis 버전 의존성을 위해서 .3 -> .2로 다운그레이드

* feat: redis 도메인 구성 추가

redis  rogin을 위한 기본 구성 내용 추가

* feat: userId jwt 토큰값 추가

jwt토큰에 포함 시켜 redis refresh 검증에 사용

* faet: redis refresh 검증 로직 추가

* feat: docker-compose redis 삽입

* Create test_deploy.yml

add `test_deploy.yml` on github action

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* fix: 로그인 구현 형식 json -> cookie (#70)

json 전달형식에서 cookie 형식으로 변경

* Be/#32 좋아요 기능 구현 (#71)

* fix: 로그인 구현 형식 json -> cookie

json 전달형식에서 cookie 형식으로 변경

* fix: 리다이렉션 url 수정

genre -> genre_select

* fix: swagger 설정 변경

허용 범위 변경 및 설정 변경

* fix: jwt 시간 및 정보 변경

userId 추가 및 기본 토큰 지속 시간 변경

* fix: Genre 형식 변경

기존 enum형식 Genre 삭제 후 Genre 내용 변경

* feat: 좋아요 기능 구현

좋아요 추가 기능 및 삭제 기능 구현

* feat: track 전달 get내용 likes추가

* feat: likesFlag 형식 구현

Boolean likesFlag 형식

* Test 브랜치 `test.Dockerfile` 수정 및 `test_deploy.yml` Github Action 수정 (#72)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* `Develop` -> `Test` 브랜치 머지 (#69)

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* Fix: `test.Dockerfile` CPU 아키텍쳐 호환성 문제로 jdk-alpine에서 jdk로 변경

* Fix: `test_deploy.yml` docker buildx 를 사용해서 멀티 아키텍처를 지원하도록 변경

* BE/#36 `곡 검색하기` API 구현 (#74)

* Feat: `build.gradle` elasticsearch-java 클라이언트 의존성 추가

* Feat: `ElasticsearchConfig` 및 `ElasticsearchProperties` 작성

* Fix: `DreamvaultBackendApplication` 에서 프로퍼티 검사 경로 변경

* Fix: `LikeRepository` - existsByUserIdAndTrackId() 메소드 `@Param` 어노테이션 명시

* Feat: `JacksonConfig` - Elasticsearch java client에서 요청 시 사용하는 `objectMapper` 빈 등록

* Feat: `TrackDocument` Elasticsearch 검색 결과 반환받는 객체 작성

* Feat: `SearchTrackResponseDto`, 페이지네이션을 위한 `CustomPage` 및 기타 하위 Dto 작성

* Feat: `TrackDocumentUtil` - 검색 결과에서 하이라이팅 된 필드랑 원본 결합용 유틸 클래스 작성

* Feat: `SearchController`, `SearchService` 검색 비즈니스 로직 구현

* fix: Swagger JWT 형식 변경 (#79)

Components - > SecurityScheme

* Fix: `PlaylistService`의 `createPlaylist()`에서 MyPlaylist를 추가하지 않도록 변경 (#81)

* Fix: `JwtVerifyFilter` - whitelist에 `/search` 경로 추가 (#83)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* `Develop` -> `Test` 브랜치 머지 (#69)

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* Fix: `test.Dockerfile` CPU 아키텍쳐 호환성 문제로 jdk-alpine에서 jdk로 변경

* Fix: `test_deploy.yml` docker buildx 를 사용해서 멀티 아키텍처를 지원하도록 변경

* Fix: `JwtVerifyFilter` - whitelist에 `/search/**` 경로 추가

* Fix: `JwtVerifyFilter` - whitelist에 `/search/**` -> `/search` 경로 변경

* BE/#42 `AuthenticationPriciple`이 필요한 API에 사용자 식별 로직 붙이기 && `getPlaylistWithTracks()`에서 플레이리스트 소유 정보 추가 반환 (#85)

* Refactor: `GenreController` - userId 파라미터 전달방식 수정

* Fix: `AuthenticationPriciple`을 통한사용자 식별로직 추가

* Comment: `PlaylistService` 주석 추가

* Refacotr: `TagController` 파라미터 전달 방식 수정

* Fix: `TrackService` API에 사용자 식별로직 추가

* Refactor: 파라미터와 로직코드 가시적 구분을 위해 개행 추가

* Feat: 기본 경로들 whitelist에 추가

* Fix: `PlaylistService` - `getPlaylistWithTracks()` 특정 플레이리스트 정보 가져오기에서 `isOwner` 필드 추가

* Be/#38 User 곡 , 플레이리스트, 취향 API 구현 (#86)

* feat: 로그인 index.html 업데이트

구글 + 네이버 간편 백엔드 로그인 추가

* fix: 로그인 토큰 url 형식 변경

cookie -> params로 변경

* fix: 토큰 만료 status코드 변경

토큰 만료 내역 변경 status 200 -> 401

* feat: 네이버, 구글 로그인 형식 추가

ouath 네이버, 구글 로그인 추가

* fix: 장르 DB 형식 변겅

* feat: user 관련 API 구현

* feat: track 관련 api 구현

* feat: playlist 관련 api 구현

* feat: like 관련 api 구현

* Feat: `SwaggerConfig`에 테스트 서버 도메인 추가 (#89)

* Be/#44 JwtVerifyFilter 도메인 허용 whitelist user추가 및 도메인명 수정 (#90)

* fix: JwtVerifyFilter 도메인 허용 변경

user관련 도메인 추가 허용

* fix: user 관련 외부 controller 엔드포인트 값 변경

playlist controller, trackcontroller 각각 명칭 삭제

* Fix: `JwtVerifyFilter`에서 whitelist의 `/user` 경로 `/users`로 수정 (#93)

* BE/#47 Cors, RedirectURL 및 Swagger 설정 관련 URL들 프로퍼티로 치환 && 배포관련 파일 변경 (#95)

* Fix: `SwaggerConfig` 스웨거 서버 URL 프로퍼티 명칭 변경 `domain.test` -> `domain.backend`

* Fix: `CommonLoginSuccessHandler` - `determinTargetUrl()`에서 redirectURL 도메인을 프로퍼티에서 가져오도록 설정

* Fix: `SecurityConfig` - `corsConfiguration()`에 frontendUrl 추가

* Fix: `.gitignore`에 init*.sql 추가

* Rename: `test.Dockerfile` -> `prod.Dockerfile` 파일명 변경

* Fix: `test_deploy.yml` -> `deploy.yml` 로 변경 및 `prod.Dockerfile` 사용하도록 설정

* Fix: `appspec.yml` ECS 컨테이너 명 변경

---------

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

* Merge: 로그인 리다이렉트 URL 변경 및 태그 생성 시, 이미지 적용 로직 수정 main 브랜치로 머지 (#110)

* Merge: `develop` 브랜치에서 `main` 브랜치로 현재 작업 내용 머지 (#96) (#103)

* feat: mysql + docker 세팅

* Be/#2 JPA 엔티티 코드 구성 (#6)

* Fix: `build.gradle` 오타 수정

* Feat: `BaseTimeEntity` 추상 클래스 설계

- `createdAt` : 생성 일자
- `modifiedAt` : 수정 일자

* Feat: `User` 엔티티 설계

- `id` : `user_id`로 Column명 설정
- `name` : 길이 255자 기본 값으로 설정(구글의 경우, 최대 64자)
- `displayName` : 표시 이름은 최대 50자
- `email` : 이메일의 경우 최대 길이 225자이므로 기본 값으로 설정
- `profileImage` : 프로필 이미지 url

* Fix: `User.java` auto formatting

* Feat: `Genre` 엔티티 설계

- `id` : `genre_id`로 Column명 설정
- `name` : 장르의 명은 최대 50자로 설정

* Feat: `Tag` 엔티티 설계

- `id` : `tag_id`로 Column명 설정
- `name` : 태그 명은 최대 50자로 설정

* Feat: `Genre`와 `Tag` 엔티티에 대표 이미지 url을 저장하는 Image 필드 추가

* Feat: `Genre` 엔티티에 Builder 추가

* Feat: `Tag` 엔티티에 Builder 추가

* Feat: `Genre` 엔티티와 `Track` 엔티티 연관관계 설정

- 양방향 연관관계
- Cascade.ALL : `Genre` 삭제 시, 하위 `Track`들도 삭제 됨

* Feat: `Tag` 엔티티와 `Track` 엔티티 다대다 연관관계 설정

- `TrackTag` 조인 테이블(연관관계 테이블)을 이용한 다대다 관계
- 양방향 연관관계
- `TrackTag` 테이블은 개별 PK를 가짐(복합키 X)

* Feat: `TrackDetail` 엔티티 설계

Reference: https://vladmihalcea.com/the-best-way-to-map-a-onetoone-relationship-with-jpa-and-hibernate/

* Feat: `TrackTag` 엔티티와 `TrackDetail` 엔티티에 `BaseTimeEntity` 엔티티 상속

* Feat: `Like` 엔티티 설계

* Feat: `StreamingHistory` 엔티티 설계

* Feat: `User` 엔티티와 `Like`, `StreamingHistory` 엔티티 사이의 일대다 관계 매핑

* Feat: `Track` 엔티티 설계

* Fix: `Genre` 엔티티 필드명 수정

* Feat: `Playlist`, `PlaylistTrack`, MyPlaylist` 엔티티 설계

* Fix: `Tag` 엔티티 필드명 수정

* Remove: `StreamingHistory` 엔티티의 `streamingDuration` 필드 제거

* Fix: `Track` 엔티티 필드명 수정 및 단방향 관계 처리

* Feat: `UserGenre` 엔티티를 통한 회원 취향 일대다 관계 구성

* Fix: `.gitignore` 파일에 `bin`, 프로퍼티 파일 추가 및 `.gitignore` 재적용 (#9)

* Fix: `pull_request.md` 템플릿 경로 수정 및 `issue.md` 템플릿 기능 수정 항목 추가 (#11)

* BE/#3 특정 곡 등록하기 API 구현 (#14)

* Feat: `build.gradle` 의존성 추가

- Test : `mockito`
- AWS S3 : `awssdk:s3`
- Image Processing `thumbnailator`, `imageio-webp`

* Feat: `S3ClientProperties` 프로퍼티 객체 구현 및 Application에서 프로퍼티 스캔 활성화

* Feat: `S3ClientConfig` - S3 클라이언트 빈 등록 및 `S3FileHandler` 파일 핸들링 객체 구현

* Feat: `ImageResizer` - Thumbnailator 라이브러리로 이미지 리사이징 로직 구현

* Feat: MultipartFile 구현체 및 이미지 / 오디오 파일 S3 업로더 구현

* Feat: `User` 제외한 각 도메인 별 빌더 또는 생성자 및 리포지토리 구현

* Feat: `Track` 도메인 컨트롤러 및 DTO 구현

* Feat: 이미지 / 오디오 MultipartFile들의 커스텀 Validation 어노테이션 구현

* Feat: `TagService` - associtateTrackWithTags() 메소드 구현

* Feat: `TrackService` - Track 업로드 비즈니스 로직 구현

* Feat: `Track` 도메인 테스트코드 작성

- Controller 통합 테스트
- Controller 유닛 테스트
- Service 유닛 테스트

* Feat: `ImageUploader` TrackImage 또는 ThumbnailImage 업로드 실패 시, 로깅 로직 추가

* Fix: `TrackController` 에서 `/api/v1` 접두  경로 제거

* Feat: `.gitignore` - `.vscode` 디렉토리 및 `init.sql` 파일 추가

* Feat: `JpaConfig` Configuration 클래스 작성 (#15)

* BE/#8 `.gitignore` 항목 추가 및 템플릿 경로 수정 (#17)

* Feat: `.gitignore` 에 `init.sql` 과 `.vscode` 추가

* Rename: `issue_template.md` 와 `pull_request_template.md` 경로 `.github` 하위로 변경

* BE/#9 `특정 곡 정보 가져오기` API 구현 및 테스트 코드 작성 (#19)

* Rename: `TrackResponseDto` -> `TrackUploadResponseDto` 명칭 변경

* Rename: `TrackResponseDto` -> `TrackUploadResponseDto` 명칭 변경

* Feat: `TrackResponseDto` 구현

* Feat: `특정 곡 정보 가져오기` API 구현

* Fix: `TrackController` 유닛 테스트 및 통합 테스트 API 요청 경로 수정

* Feat: `build.gradle` 에 `assertj-core` 의존성 추가

* Comment: `TrackService` 주석 추가

* Feat: `TrackTagRepository` - findByTagName() 메소드 추가

* Test: `특정 곡 정보 가져오기` API 테스트 코드 작성

* Be/#6 oAuth 2.0 로그인 로직 구현 (#22)

* feat: build.gradle depandence 추가

jwt + security + oAuth 2.0

* feat: build.gradle 의존성 추가

redis 추가

* faet: 카카오 기본 로그인 화면

백엔드 카카오 로그인 화면 구현

* feat: Cors 허용

react와 같은 외부 라이브러리 Cors 규칙 허용

* feat: oAuth 로그인을 위한 기본 entity 구현

controller 환경 + domain role 추가 Detail은 따로 빼서 구현

* feat: 카카오 데이터베이스 환경 설정

카카오 규칙에 맞는 환경설정 로직 추가

* feat: jwt 생성 및 시간 로직 구현

jwt를 통한 인증 과정 + 시간 설정

* feat: jwt 토큰 예외처리

토큰 만료기간에 대한 예외처리 구현

* feat: 카카오 SecurityConfig + handler

SecurityConfig를 통한 카카오 로그인 후 엑세스토큰 및 리프레스 토근 발급

* BE/#12 `Track` 엔티티에 곡 길이 정보 `duration` 필드 추가 (#24)

* Feat: `Track` 엔티티 `duration` 필드 추가

* Feat: Response Dto `duration` 필드 추가

* Feat: `build.gradle` - `jaudiotagger` 의존성 추기

* Feat: `AudioDataParser` - `extractDurationInSeconds` 곡 길이 추출 메소드 구현

* Feat: `TrackService` - 곡 업로드 시, 곡 길이 저장 로직 추가

* Test: `User` 및 `Track` 도메인 수정 사항 반영해서, 테스트 코드 수정

* Comment: `AudioDataParser` 주석 추가

* BE/#13 `특정 곡 재생 이벤트 기록하기` API 구현 (#27)

* Feat: `StreamingHistoryRepository` 구현

* Feat: `StreamingHistory` 엔티티 빌더 패턴 생성자 구성

* Feat: `특정 곡 재생 이벤트 기록하기` API 구현

* Fix: `JwtVertifyFilter` API 테스트 과정에서 임시로 필터 통과하도록 설정

* Test: `특정 곡 재생 이벤트 기록하기` API 테스트 코드 작성

* BE/#15 `모든 장르 리스트 가져오기` API 구현 (#29)

* Fix: `TrackService`에서 uploadTrack()의 `TrackUploadResponseDto`를 생성할 때 toDto()를 사용하도록 변경

* Feat: `GenreResponseDto` 작성

* Feat: `모든 장르 리스트 가져오기` API 구현

* Test: `모든 장르 리스트 가져오기` API 테스트 코드 작성

* BE/#16 `특정 장르의 모든 곡 가져오기` API 구현 (#31)

* Fix: `track_audio` MultipartFile 검증과정에 `wav` 확장자 추가

* Feat: `TrackRepository` Pagination을 적용한 findAllByGenreId() 메소드 작성

* Feat: `특정 장르의 모든 곡 가져오기` API의 반환 Dto인 `GenreWithTracksResponseDto` 구현

* Feat: `특정 장르의 모든 곡 가져오기` API 구현

* Test: `특정 장르의 모든 곡 가져오기` API 테스트 코드 작성

* BE/#17 `장르별 곡 3개씩 가져오기` API 구현 (#33)

* Feat: `TrackOverviewResponseDto` 작성

* Feat: `GenreWithTracksOverviewResponseDto` 작성

* Feat: `GenreRepository` - Pagination을 지원하는 findAll() 작성

* Feat: `장르별 곡 3개씩 가져오기` API 구현

* Fix: `GenreController`의 `장르별 곡 3개씩 가져오기` API Page 객체 리턴하도록 변경

* Comment: `TrackControllerTest.java` - `uploadTrackSuccess()` 테스트 전체 순차적으로 테스트 진행시 오류 나는 부분 주석 상세하게 명시

* Refactor: `TrackServiceTest`에서 Mock 객체 생성시, 파라미터로 생성하도록 코드의 유연성 높임

* Test: `장르별 곡 3개씩 가져오기` API 테스트 코드 작성

* BE/#18 `모든 태그 리스트 가져오기` 및 `특정 태그의 모든 곡 가져오기` API 구현 (#35)

* Fix: `Tag` 엔티티 `tagImage` 필드 활성화

* Feat: `TagResponseDto` 객체 작성

* Feat: `모든 태그 리스트 가져오기` API 구현

* Feat: `TagWithTracksResponseDto` 구현

* Feat: `특정 태그의 모든 곡 가져오기` API 구현

* Fix: `TagController` - @PageableDefault 항목에서 `page` 0으로 기본값 설정

* Test: `모든 태그 리스트 가져오기` 및 `특정 태그의 모든 곡 가져오기` API 테스트 코드 작성

* BE/#19 `새 플레이리스트 생성하기` API 구현 (#37)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* BE/#20 `특정 플레이리스트 정보 가져오기` API 구현 (#39)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* Feat: `PlaylistWithTracksResponseDto` 작성

* Feat: `MyPlaylist`, `PlaylistTrack` 엔티티가 `BaseTimeEntity`를 상속받도록 변경

* Feat: `PlaylistTrackRepository` - Pagination 적용한 `findAllByPlaylistId() 작성

* Feat: `특정 플레이리스트 정보 가져오기` API 구현

* Feat: `PlaylistTrack` 엔티티 Builder 추가

* Test: `특정 플레이리스트 정보 가져오기` API 테스트 코드 작성

* BE/#21 `특정 플레이리스트 이름 수정하기` API 구현 (#43)

* Feat: `CreatePlaylistResponseDto` 작성

* Feat: `CreatePlaylistRequestDto` 작성

* Feat: Playlist 도메인 관련 Repository 생성

* Fix: `CreatePlaylistResponseDto` - `playlistId` 자료형 long -> Long으로 변경

* Feat: `MyPlaylist`, `Playlist` 엔티티 Builder 추가

* Feat: `새 플레이리스트 생성하기` API 구현

* Test: `새 플레이리스트 작성하기` 테스트 코드 작성

* Feat: `PlaylistWithTracksResponseDto` 작성

* Feat: `MyPlaylist`, `PlaylistTrack` 엔티티가 `BaseTimeEntity`를 상속받도록 변경

* Feat: `PlaylistTrackRepository` - Pagination 적용한 `findAllByPlaylistId() 작성

* Feat: `특정 플레이리스트 정보 가져오기` API 구현

* Feat: `PlaylistTrack` 엔티티 Builder 추가

* Test: `특정 플레이리스트 정보 가져오기` API 테스트 코드 작성

* Rename: `CreatePlaylistResponseDto` -> `PlaylistResponseDto` 객체 명칭 변경

* Feat: `Playlist` - `playlistName` 필드 변경하는 `updatePlaylistName()` 메소드 작성

* Feat: `UpldatePlaylistNameRequestDto` 작성

* Feat: `특정 플레이리스트 이름 수정하기` API 구현

* Test: `특정 플레이리스트 이름 수정하기` API 테스트 코드 작성

* Remove: 중복 import 삭제

* Remove: 중복 import 삭제

* Remove: 중복 import 삭제

* Rename: 서비스 계층 유닛 테스트 코드 객체명 수정 (#44)

* Feat: 서비스 계층 메소드에서 `@Transactional(readOnly=true)` 명시하기 (#45)

* BE/#24 `특정 플레이리스트 삭제하기`, `특정 플레이리스트에 곡 추가하기`, `특정 플레이리스트의 곡 삭제하기` API 구현 (#50)

* Feat: `MyPlaylistRepository`, `PlaylistTrackRepository` 에서 플레이리스트 삭제시 호출되는 `deleteByPlaylist()` 메소드 추가

* Feat: `특정 플레이리스트 삭제하기` API 구현

* Test: `특정 플레이리스트 삭제하기` 테스트 코드 작성

* Feat: `AddTrackToPlaylistRequestDto` 작성

* Feat: `PlaylistTrackRepository` - 플레이리스트에 해당 트랙의 존재 여부 확인 메소드 구현

* Feat: `특정 플레이리스트에 곡 추가하기` API 구현

* Feat: `PlaylistTrackRepository` `findByPlaylistAndTrack()` 메소드 추가

* Feat: `특정 플레이리스트의 곡 삭제하기` API 구현

* Test: `특정 플레이리스트에 곡 추가하기` API 테스트 코드 작성

* Test: `특정 플레이리스트의 곡 삭제하기` API 테스트 코드 작성

* BE/#28 `플레이리스트들 가져오기`, `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` API 구현 (#53)

* Rename: `TrackOverviewResponseDto` 경로를 Genre 도메인 하위에서 Track 도메인 하위로 변경

* Feat: `PlaylistWithTracksOverviewResponseDto` 작성

* Fix: `PlaylistTrackRepository` - `findAllByPlaylistId()` 메소드 정렬방식 JPQL -> Pageable Sort로 동작하도록 변경

* Fix: `PlaylistWithTracksOverviewResponseDto` - toDto() 과정에서 User가 null일 경우도 처리 가능하도록 변경

* Feat: `플레이스트들 가져오기` API에서 요청시, RequestParam `type` 검증 커스텀 어노테이션 작성

* Feat: `PlaylistRepository` - `findByIsCuratedTrue()`, `findByIsCuratedFalseAndIsPublicTrue()` 메소드 작성

* Feat: `플레이리스트들 가져오기` API 구현

* Feat: `MyPlaylistRepository` - `existsByUserAndPlaylist()`, `findByUserAndPlaylist()` 추가

* Feat: `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` API 구현

* Teat: `플레이리스트들 가져오기` API 테스트 코드 작성

* Test: `특정 플레이리스트 팔로우하기`, `특정 플레이리스트 언 팔로우하기` 테스트 코드 작성

* feat: refresh 검증 API 구현 (#55)

* feat: refresh 검증 API 구현

/refresh로 만료 확인 가능

* fix: refresh token형식 변형 + mapping 변경

* Be/#10  jwt형식으로 swagger추가  (#56)

* feat: build.gradle 의존성 추가

* feat: swagger + jwt 설정 추가 및 기본 API summary 작성

@Controller -> @RestController 변경

---------



* Test: `PlaylistControllerTest` - `updatePlaylistNameSuccess` 통합테스트 추가 (#57)

* Fix: `contextLoads()` 테스트 `@ActiveProfiles("test")` 어노테이션 명시로 해결 (#59)

* Fix: `특정 플레이리스트 정보 가져오기` API 사용자 검증 과정 추가 (#60)

* Be/#11 redis 설정 및 redis refresh token 삽입 (#61)

* feat: redis.conf 파일 추가

redis 상세 설정을 위한 conf파일 추가

* fix: redis data파일 자동 생성 제외

data에 들어가는 log수집에 대한 내용을 제외하기 위해 추가

* fix: redis 버전 다운그레이드

redis 버전 의존성을 위해서 .3 -> .2로 다운그레이드

* feat: redis 도메인 구성 추가

redis  rogin을 위한 기본 구성 내용 추가

* feat: userId jwt 토큰값 추가

jwt토큰에 포함 시켜 redis refresh 검증에 사용

* faet: redis refresh 검증 로직 추가

* feat: docker-compose redis 삽입

* Create test_deploy.yml

add `test_deploy.yml` on github action

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* fix: 로그인 구현 형식 json -> cookie (#70)

json 전달형식에서 cookie 형식으로 변경

* Be/#32 좋아요 기능 구현 (#71)

* fix: 로그인 구현 형식 json -> cookie

json 전달형식에서 cookie 형식으로 변경

* fix: 리다이렉션 url 수정

genre -> genre_select

* fix: swagger 설정 변경

허용 범위 변경 및 설정 변경

* fix: jwt 시간 및 정보 변경

userId 추가 및 기본 토큰 지속 시간 변경

* fix: Genre 형식 변경

기존 enum형식 Genre 삭제 후 Genre 내용 변경

* feat: 좋아요 기능 구현

좋아요 추가 기능 및 삭제 기능 구현

* feat: track 전달 get내용 likes추가

* feat: likesFlag 형식 구현

Boolean likesFlag 형식

* Test 브랜치 `test.Dockerfile` 수정 및 `test_deploy.yml` Github Action 수정 (#72)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* `Develop` -> `Test` 브랜치 머지 (#69)

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* Fix: `test.Dockerfile` CPU 아키텍쳐 호환성 문제로 jdk-alpine에서 jdk로 변경

* Fix: `test_deploy.yml` docker buildx 를 사용해서 멀티 아키텍처를 지원하도록 변경

* BE/#36 `곡 검색하기` API 구현 (#74)

* Feat: `build.gradle` elasticsearch-java 클라이언트 의존성 추가

* Feat: `ElasticsearchConfig` 및 `ElasticsearchProperties` 작성

* Fix: `DreamvaultBackendApplication` 에서 프로퍼티 검사 경로 변경

* Fix: `LikeRepository` - existsByUserIdAndTrackId() 메소드 `@Param` 어노테이션 명시

* Feat: `JacksonConfig` - Elasticsearch java client에서 요청 시 사용하는 `objectMapper` 빈 등록

* Feat: `TrackDocument` Elasticsearch 검색 결과 반환받는 객체 작성

* Feat: `SearchTrackResponseDto`, 페이지네이션을 위한 `CustomPage` 및 기타 하위 Dto 작성

* Feat: `TrackDocumentUtil` - 검색 결과에서 하이라이팅 된 필드랑 원본 결합용 유틸 클래스 작성

* Feat: `SearchController`, `SearchService` 검색 비즈니스 로직 구현

* fix: Swagger JWT 형식 변경 (#79)

Components - > SecurityScheme

* Fix: `PlaylistService`의 `createPlaylist()`에서 MyPlaylist를 추가하지 않도록 변경 (#81)

* Fix: `JwtVerifyFilter` - whitelist에 `/search` 경로 추가 (#83)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* `Develop` -> `Test` 브랜치 머지 (#69)

* BE/#33 `ThumnailImageMultipartFile` S3 업로드 폴더 명 수정 (#68)

* BE/#34 `TrackDetail` 도메인 `prompt` 필드 VARCHAR 사이즈 수정 (#67)

* BE/#35 테스트 서버 배포하기 (#66)

* Fix: `build.gradle`에서 plain 빌드파일 생성하지 않도록 변경

* Feat: `test.Dockerfile` 생성

* Feat: `appspec.yml` 파일 작성

* Feat: `spring-actuator` 의존성 추가 및 `redis` 의존성 주석처리

* Feat: `test_deploy.yml` 추가

* Fix: `appspec.yml` - 컨테이너 명 수정

* Feat: `.gitignore` 파일에 `init_test.sql` 추가

* Fix: `test.Dockerfile` CPU 아키텍쳐 호환성 문제로 jdk-alpine에서 jdk로 변경

* Fix: `test_deploy.yml` docker buildx 를 사용해서 멀티 아키텍처를 지원하도록 변경

* Fix: `JwtVerifyFilter` - whitelist에 `/search/**` 경로 추가

* Fix: `JwtVerifyFilter` - whitelist에 `/search/**` -> `/search` 경로 변경

* BE/#42 `AuthenticationPriciple`이 필요한 API에 사용자 식별 로직 붙이기 && `getPlaylistWithTracks()`에서 플레이리스트 소유 정보 추가 반환 (#85)

* Refactor: `GenreController` - userId 파라미터 전달방식 수정

* Fix: `AuthenticationPriciple`을 통한사용자 식별로직 추가

* Comment: `PlaylistService` 주석 추가

* Refacotr: `TagController` 파라미터 전달 방식 수정

* Fix: `TrackService` API에 사용자 식별로직 추가

* Refactor: 파라미터와 로직코드 가시적 구분을 위해 개행 추가

* Feat: 기본 경로들 whitelist에 추가

* Fix: `PlaylistService` - `getPlaylistWithTracks()` 특정 플레이리스트 정보 가져오기에서 `isOwner` 필드 추가

* Be/#38 User 곡 , 플레이리스트, 취향 API 구현 (#86)

* feat: 로그인 index.html 업데이트

구글 + 네이버 간편 백엔드 로그인 추가

* fix: 로그인 토큰 url 형식 변경

cookie -> params로 변경

* fix: 토큰 만료 status코드 변경

토큰 만료 내역 변경 status 200 -> 401

* feat: 네이버, 구글 로그인 형식 추가

ouath 네이버, 구글 로그인 추가

* fix: 장르 DB 형식 변겅

* feat: user 관련 API 구현

* feat: track 관련 api 구현

* feat: playlist 관련 api 구현

* feat: like 관련 api 구현

* Feat: `SwaggerConfig`에 테스트 서버 도메인 추가 (#89)

* Be/#44 JwtVerifyFilter 도메인 허용 whitelist user추가 및 도메인명 수정 (#90)

* fix: JwtVerifyFilter 도메인 허용 변경

user관련 도메인 추가 허용

* fix: user 관련 외부 controller 엔드포인트 값 변경

playlist controller, trackcontroller 각각 명칭 삭제

* Fix: `JwtVerifyFilter`에서 whitelist의 `/user` 경로 `/users`로 수정 (#93)

* BE/#47 Cors, RedirectURL 및 Swagger 설정 관련 URL들 프로퍼티로 치환 && 배포관련 파일 변경 (#95)

* Fix: `SwaggerConfig` 스웨거 서버 URL 프로퍼티 명칭 변경 `domain.test` -> `domain.backend`

* Fix: `CommonLoginSuccessHandler` - `determinTargetUrl()`에서 redirectURL 도메인을 프로퍼티에서 가져오도록 설정

* Fix: `SecurityConfig` - `corsConfiguration()`에 frontendUrl 추가

* Fix: `.gitignore`에 init*.sql 추가

* Rename: `test.Dockerfile` -> `prod.Dockerfile` 파일명 변경

* Fix: `test_deploy.yml` -> `deploy.yml` 로 변경 및 `prod.Dockerfile` 사용하도록 설정

* Fix: `appspec.yml` ECS 컨테이너 명 변경

---------

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

* Fix: `deploy.yml` 오타 수정 (#105)

* Fix: `TagService` - 새 태그 생성 시, 사용자가 업로드한 곡의 이미지를 태그 이미지로 사용하도록 변경 (#109)

* fix: 로그인 redirecturl 변경 (#108)

/auth/login, /auth/signup

---------

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

---------

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

* BE/#53 track 최신곡 받아오기 오류 수정  (#113)

* fix: track 최신곡 받아오기 오류 수정

id 중복 허용 및 변경 감지

* feat: 최신곡 중복 제거 형식 추가

* Fix: `PlaylistController` - `getPlaylistsWithTracksOverview()`와 `getPlaylistWithTracks()` 정렬 기준 변경 (#115)

---------

Co-authored-by: kwongwangjae <[email protected]>
Co-authored-by: kwongwangjae <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🏷 Fix 버그 수정
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants