Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge: 최신곡 받아오기 오류 수정 및 플레이리스트 불러오기 관련 정렬 기준 수정 Main 브랜치로 머지 (#116)
* 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]>
- Loading branch information