Skip to content

Commit

Permalink
배포를 위한 main 병합 (#42)
Browse files Browse the repository at this point in the history
* [#2] style: resource별로 디렉토리 구조 생성

* [#2] style: domain, repository 코드 추가

* [#2] feat: BaseTimeEntity 추가

* [#2] refactor: Project 도메인 수정

* refactor: User 도메인 수정

* [#6] feat: Response 형식 지정

* [#9] feat: S3 파일 업로드 관련 파일 추가 (#10)

* [#9] feat: S3 파일 업로드 관련 파일 추가

* [#9] feat: S3 - mp4 형식 파일은 video 폴더에 저장되도록 코드 변경

* [#5] feat: Instrument api

악기 domain, api 추가

* [#5] feat: User domain

User domain 개발

* [#5] feat: UserInstrument relation domain

User-Instrument 관계 테이블 생성

* [#5] feat: Access/Refresh token with Spring Security

* [#5] feat: Kakao sign in/up

카카오 계정으로 회원가입/로그인 구현

* [#5] feat: Sign up with profile image

회원가입 시 프로필 이미지 업로드 하도록 기능 추가

* [#5] test: s3 upload

* [#5] test: OAuth sign up/in

* Feature/#4 - 프로젝트 게시 API 및 AwsS3Config 문제 해결 (#14)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* Feature/#8 - 프로젝트 조회 API (#15)

* [#8] feat: 프로젝트 조회 API

* chore: Swagger 적용

* [#8] hotfix: 프로젝트 조회 API DTO 분리 및 로직 수정

* [#8] fix: 프로젝트 도메인 업데이트

* [#8] feat: 프로젝트 상세 조회 API -> 유저 정보 및 악기 조회 추가

* [#8] hotfix: 악기 조회

* [#8] hotfix: 생성일 수정일 조회 추가

* Feature/#4 - 프로젝트 게시 API 보완 및 테스트 코드 작성 (#17)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* [#5] fix: OAuth 테스트코드 안되는 오류 수정

* [#4] feat: bpm, instrument 타입 변경 / user 추가 / validation 보완

* [#4] refactor: conflict 없도록 프로젝트 게시 API 수정

* [#4] test: 정상 동작에 대한 테스트코드 추가

* Update src/main/java/com/artistack/project/dto/ProjectDto.java

Co-authored-by: Dahyeon Woo <[email protected]>

* [#4] feat: Swagger 문서화

Co-authored-by: Dahyeon Woo <[email protected]>

* Feature/#13 - 스택 조회 API (#18)

* [#4] feat: 프로젝트 게시 API

* [#13] feat: 스택 조회 API

* [#13] style: Swagger 파라미터 dataType 변경

* Feature/#12 회원 관련 API (#20)

* Feature/#4 scope ENUM 타입으로 변경 및 Swagger 문서 다듬기 (#21)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* [#5] fix: OAuth 테스트코드 안되는 오류 수정

* [#4] feat: bpm, instrument 타입 변경 / user 추가 / validation 보완

* [#4] refactor: conflict 없도록 프로젝트 게시 API 수정

* [#4] test: 정상 동작에 대한 테스트코드 추가

* Update src/main/java/com/artistack/project/dto/ProjectDto.java

Co-authored-by: Dahyeon Woo <[email protected]>

* [#4] feat: Swagger 문서화

* [#4] refactor: scope ENUM 타입으로 변경

* [#4] style: 회원가입, 로그인 Swagger 어노테이션 추가

* [#4] feat: Swagger API 정보 수정 및 Authorize 활성화

* style: Swagger 문서 설명 추가

* test: 테스트코드 scope ENUM 타입으로 변경

* style: 에러 코드 오름차순으로 정렬

Co-authored-by: Dahyeon Woo <[email protected]>

* Feature/#16 - 좋아요 API (#23)

* [#16] feat: 좋아요 & 좋아요 취소 API

* [#16] feat: 좋아요수 조회 추가

* [#16] fix: 개수 조회를 위한 project domain 수정

* [#16] fix: validaition 수정

* [#16] fix: 반환값 명시적으로 변경

* style: 이름 변경 및 중복 코드 제거

* [#16] feat: 프로필 조회시 좋아요수 함께 반환

* [#8] refactor: 반환 타입을 List에서 Dto로 변경 (#24)

* main -> dev (#29)

* 배포를 위한 dev->main 병합 (#25)

* [#2] style: resource별로 디렉토리 구조 생성

* [#2] style: domain, repository 코드 추가

* [#2] feat: BaseTimeEntity 추가

* [#2] refactor: Project 도메인 수정

* refactor: User 도메인 수정

* [#6] feat: Response 형식 지정

* [#9] feat: S3 파일 업로드 관련 파일 추가 (#10)

* [#9] feat: S3 파일 업로드 관련 파일 추가

* [#9] feat: S3 - mp4 형식 파일은 video 폴더에 저장되도록 코드 변경

* [#5] feat: Instrument api

악기 domain, api 추가

* [#5] feat: User domain

User domain 개발

* [#5] feat: UserInstrument relation domain

User-Instrument 관계 테이블 생성

* [#5] feat: Access/Refresh token with Spring Security

* [#5] feat: Kakao sign in/up

카카오 계정으로 회원가입/로그인 구현

* [#5] feat: Sign up with profile image

회원가입 시 프로필 이미지 업로드 하도록 기능 추가

* [#5] test: s3 upload

* [#5] test: OAuth sign up/in

* Feature/#4 - 프로젝트 게시 API 및 AwsS3Config 문제 해결 (#14)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* Feature/#8 - 프로젝트 조회 API (#15)

* [#8] feat: 프로젝트 조회 API

* chore: Swagger 적용

* [#8] hotfix: 프로젝트 조회 API DTO 분리 및 로직 수정

* [#8] fix: 프로젝트 도메인 업데이트

* [#8] feat: 프로젝트 상세 조회 API -> 유저 정보 및 악기 조회 추가

* [#8] hotfix: 악기 조회

* [#8] hotfix: 생성일 수정일 조회 추가

* Feature/#4 - 프로젝트 게시 API 보완 및 테스트 코드 작성 (#17)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* [#5] fix: OAuth 테스트코드 안되는 오류 수정

* [#4] feat: bpm, instrument 타입 변경 / user 추가 / validation 보완

* [#4] refactor: conflict 없도록 프로젝트 게시 API 수정

* [#4] test: 정상 동작에 대한 테스트코드 추가

* Update src/main/java/com/artistack/project/dto/ProjectDto.java

Co-authored-by: Dahyeon Woo <[email protected]>

* [#4] feat: Swagger 문서화

Co-authored-by: Dahyeon Woo <[email protected]>

* Feature/#13 - 스택 조회 API (#18)

* [#4] feat: 프로젝트 게시 API

* [#13] feat: 스택 조회 API

* [#13] style: Swagger 파라미터 dataType 변경

* Feature/#12 회원 관련 API (#20)

* Feature/#4 scope ENUM 타입으로 변경 및 Swagger 문서 다듬기 (#21)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* [#5] fix: OAuth 테스트코드 안되는 오류 수정

* [#4] feat: bpm, instrument 타입 변경 / user 추가 / validation 보완

* [#4] refactor: conflict 없도록 프로젝트 게시 API 수정

* [#4] test: 정상 동작에 대한 테스트코드 추가

* Update src/main/java/com/artistack/project/dto/ProjectDto.java

Co-authored-by: Dahyeon Woo <[email protected]>

* [#4] feat: Swagger 문서화

* [#4] refactor: scope ENUM 타입으로 변경

* [#4] style: 회원가입, 로그인 Swagger 어노테이션 추가

* [#4] feat: Swagger API 정보 수정 및 Authorize 활성화

* style: Swagger 문서 설명 추가

* test: 테스트코드 scope ENUM 타입으로 변경

* style: 에러 코드 오름차순으로 정렬

Co-authored-by: Dahyeon Woo <[email protected]>

* Feature/#16 - 좋아요 API (#23)

* [#16] feat: 좋아요 & 좋아요 취소 API

* [#16] feat: 좋아요수 조회 추가

* [#16] fix: 개수 조회를 위한 project domain 수정

* [#16] fix: validaition 수정

* [#16] fix: 반환값 명시적으로 변경

* style: 이름 변경 및 중복 코드 제거

* [#16] feat: 프로필 조회시 좋아요수 함께 반환

* [#8] refactor: 반환 타입을 List에서 Dto로 변경 (#24)

Co-authored-by: leeeeeyeon <[email protected]>
Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Mason Kim <[email protected]>

* refactor: Instrument 순서 변경 및 img url 추가 (#26)

* refactor: Instrument initialize() 함수 주석 처리 (#27)

* [#2] style: resource별로 디렉토리 구조 생성

* [#2] style: domain, repository 코드 추가

* [#2] feat: BaseTimeEntity 추가

* [#2] refactor: Project 도메인 수정

* refactor: User 도메인 수정

* [#6] feat: Response 형식 지정

* [#9] feat: S3 파일 업로드 관련 파일 추가 (#10)

* [#9] feat: S3 파일 업로드 관련 파일 추가

* [#9] feat: S3 - mp4 형식 파일은 video 폴더에 저장되도록 코드 변경

* [#5] feat: Instrument api

악기 domain, api 추가

* [#5] feat: User domain

User domain 개발

* [#5] feat: UserInstrument relation domain

User-Instrument 관계 테이블 생성

* [#5] feat: Access/Refresh token with Spring Security

* [#5] feat: Kakao sign in/up

카카오 계정으로 회원가입/로그인 구현

* [#5] feat: Sign up with profile image

회원가입 시 프로필 이미지 업로드 하도록 기능 추가

* [#5] test: s3 upload

* [#5] test: OAuth sign up/in

* Feature/#4 - 프로젝트 게시 API 및 AwsS3Config 문제 해결 (#14)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* Feature/#8 - 프로젝트 조회 API (#15)

* [#8] feat: 프로젝트 조회 API

* chore: Swagger 적용

* [#8] hotfix: 프로젝트 조회 API DTO 분리 및 로직 수정

* [#8] fix: 프로젝트 도메인 업데이트

* [#8] feat: 프로젝트 상세 조회 API -> 유저 정보 및 악기 조회 추가

* [#8] hotfix: 악기 조회

* [#8] hotfix: 생성일 수정일 조회 추가

* Feature/#4 - 프로젝트 게시 API 보완 및 테스트 코드 작성 (#17)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* [#5] fix: OAuth 테스트코드 안되는 오류 수정

* [#4] feat: bpm, instrument 타입 변경 / user 추가 / validation 보완

* [#4] refactor: conflict 없도록 프로젝트 게시 API 수정

* [#4] test: 정상 동작에 대한 테스트코드 추가

* Update src/main/java/com/artistack/project/dto/ProjectDto.java

Co-authored-by: Dahyeon Woo <[email protected]>

* [#4] feat: Swagger 문서화

Co-authored-by: Dahyeon Woo <[email protected]>

* Feature/#13 - 스택 조회 API (#18)

* [#4] feat: 프로젝트 게시 API

* [#13] feat: 스택 조회 API

* [#13] style: Swagger 파라미터 dataType 변경

* Feature/#12 회원 관련 API (#20)

* Feature/#4 scope ENUM 타입으로 변경 및 Swagger 문서 다듬기 (#21)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* [#5] fix: OAuth 테스트코드 안되는 오류 수정

* [#4] feat: bpm, instrument 타입 변경 / user 추가 / validation 보완

* [#4] refactor: conflict 없도록 프로젝트 게시 API 수정

* [#4] test: 정상 동작에 대한 테스트코드 추가

* Update src/main/java/com/artistack/project/dto/ProjectDto.java

Co-authored-by: Dahyeon Woo <[email protected]>

* [#4] feat: Swagger 문서화

* [#4] refactor: scope ENUM 타입으로 변경

* [#4] style: 회원가입, 로그인 Swagger 어노테이션 추가

* [#4] feat: Swagger API 정보 수정 및 Authorize 활성화

* style: Swagger 문서 설명 추가

* test: 테스트코드 scope ENUM 타입으로 변경

* style: 에러 코드 오름차순으로 정렬

Co-authored-by: Dahyeon Woo <[email protected]>

* Feature/#16 - 좋아요 API (#23)

* [#16] feat: 좋아요 & 좋아요 취소 API

* [#16] feat: 좋아요수 조회 추가

* [#16] fix: 개수 조회를 위한 project domain 수정

* [#16] fix: validaition 수정

* [#16] fix: 반환값 명시적으로 변경

* style: 이름 변경 및 중복 코드 제거

* [#16] feat: 프로필 조회시 좋아요수 함께 반환

* [#8] refactor: 반환 타입을 List에서 Dto로 변경 (#24)

* refactor: Instrument 순서 변경 및 img url 추가

* refactor: Instrument initialize() 함수 주석 처리

Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Dahyeon Woo <[email protected]>
Co-authored-by: defwdahyun0 <[email protected]>

* 배포를 위한 dev->main 병합 (#28)

* [#2] style: resource별로 디렉토리 구조 생성

* [#2] style: domain, repository 코드 추가

* [#2] feat: BaseTimeEntity 추가

* [#2] refactor: Project 도메인 수정

* refactor: User 도메인 수정

* [#6] feat: Response 형식 지정

* [#9] feat: S3 파일 업로드 관련 파일 추가 (#10)

* [#9] feat: S3 파일 업로드 관련 파일 추가

* [#9] feat: S3 - mp4 형식 파일은 video 폴더에 저장되도록 코드 변경

* [#5] feat: Instrument api

악기 domain, api 추가

* [#5] feat: User domain

User domain 개발

* [#5] feat: UserInstrument relation domain

User-Instrument 관계 테이블 생성

* [#5] feat: Access/Refresh token with Spring Security

* [#5] feat: Kakao sign in/up

카카오 계정으로 회원가입/로그인 구현

* [#5] feat: Sign up with profile image

회원가입 시 프로필 이미지 업로드 하도록 기능 추가

* [#5] test: s3 upload

* [#5] test: OAuth sign up/in

* Feature/#4 - 프로젝트 게시 API 및 AwsS3Config 문제 해결 (#14)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* Feature/#8 - 프로젝트 조회 API (#15)

* [#8] feat: 프로젝트 조회 API

* chore: Swagger 적용

* [#8] hotfix: 프로젝트 조회 API DTO 분리 및 로직 수정

* [#8] fix: 프로젝트 도메인 업데이트

* [#8] feat: 프로젝트 상세 조회 API -> 유저 정보 및 악기 조회 추가

* [#8] hotfix: 악기 조회

* [#8] hotfix: 생성일 수정일 조회 추가

* Feature/#4 - 프로젝트 게시 API 보완 및 테스트 코드 작성 (#17)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* [#5] fix: OAuth 테스트코드 안되는 오류 수정

* [#4] feat: bpm, instrument 타입 변경 / user 추가 / validation 보완

* [#4] refactor: conflict 없도록 프로젝트 게시 API 수정

* [#4] test: 정상 동작에 대한 테스트코드 추가

* Update src/main/java/com/artistack/project/dto/ProjectDto.java

Co-authored-by: Dahyeon Woo <[email protected]>

* [#4] feat: Swagger 문서화

Co-authored-by: Dahyeon Woo <[email protected]>

* Feature/#13 - 스택 조회 API (#18)

* [#4] feat: 프로젝트 게시 API

* [#13] feat: 스택 조회 API

* [#13] style: Swagger 파라미터 dataType 변경

* Feature/#12 회원 관련 API (#20)

* Feature/#4 scope ENUM 타입으로 변경 및 Swagger 문서 다듬기 (#21)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* [#5] fix: OAuth 테스트코드 안되는 오류 수정

* [#4] feat: bpm, instrument 타입 변경 / user 추가 / validation 보완

* [#4] refactor: conflict 없도록 프로젝트 게시 API 수정

* [#4] test: 정상 동작에 대한 테스트코드 추가

* Update src/main/java/com/artistack/project/dto/ProjectDto.java

Co-authored-by: Dahyeon Woo <[email protected]>

* [#4] feat: Swagger 문서화

* [#4] refactor: scope ENUM 타입으로 변경

* [#4] style: 회원가입, 로그인 Swagger 어노테이션 추가

* [#4] feat: Swagger API 정보 수정 및 Authorize 활성화

* style: Swagger 문서 설명 추가

* test: 테스트코드 scope ENUM 타입으로 변경

* style: 에러 코드 오름차순으로 정렬

Co-authored-by: Dahyeon Woo <[email protected]>

* Feature/#16 - 좋아요 API (#23)

* [#16] feat: 좋아요 & 좋아요 취소 API

* [#16] feat: 좋아요수 조회 추가

* [#16] fix: 개수 조회를 위한 project domain 수정

* [#16] fix: validaition 수정

* [#16] fix: 반환값 명시적으로 변경

* style: 이름 변경 및 중복 코드 제거

* [#16] feat: 프로필 조회시 좋아요수 함께 반환

* [#8] refactor: 반환 타입을 List에서 Dto로 변경 (#24)

Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Dahyeon Woo <[email protected]>
Co-authored-by: defwdahyun0 <[email protected]>

Co-authored-by: Dahyeon Woo <[email protected]>
Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: defwdahyun0 <[email protected]>

* Instrument initialize() 주석 해제

* refactor: Instrument initialize() 0번째 원소 추가 (#32)

* refactor: Instrument 순서 변경 및 img url 추가

* refactor: Instrument initialize() 함수 주석 처리

* refactor: Instrument initialize() 주석 해제

* 배포를 위한 dev->main 병합 (#31)

* [#2] style: resource별로 디렉토리 구조 생성

* [#2] style: domain, repository 코드 추가

* [#2] feat: BaseTimeEntity 추가

* [#2] refactor: Project 도메인 수정

* refactor: User 도메인 수정

* [#6] feat: Response 형식 지정

* [#9] feat: S3 파일 업로드 관련 파일 추가 (#10)

* [#9] feat: S3 파일 업로드 관련 파일 추가

* [#9] feat: S3 - mp4 형식 파일은 video 폴더에 저장되도록 코드 변경

* [#5] feat: Instrument api

악기 domain, api 추가

* [#5] feat: User domain

User domain 개발

* [#5] feat: UserInstrument relation domain

User-Instrument 관계 테이블 생성

* [#5] feat: Access/Refresh token with Spring Security

* [#5] feat: Kakao sign in/up

카카오 계정으로 회원가입/로그인 구현

* [#5] feat: Sign up with profile image

회원가입 시 프로필 이미지 업로드 하도록 기능 추가

* [#5] test: s3 upload

* [#5] test: OAuth sign up/in

* Feature/#4 - 프로젝트 게시 API 및 AwsS3Config 문제 해결 (#14)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* Feature/#8 - 프로젝트 조회 API (#15)

* [#8] feat: 프로젝트 조회 API

* chore: Swagger 적용

* [#8] hotfix: 프로젝트 조회 API DTO 분리 및 로직 수정

* [#8] fix: 프로젝트 도메인 업데이트

* [#8] feat: 프로젝트 상세 조회 API -> 유저 정보 및 악기 조회 추가

* [#8] hotfix: 악기 조회

* [#8] hotfix: 생성일 수정일 조회 추가

* Feature/#4 - 프로젝트 게시 API 보완 및 테스트 코드 작성 (#17)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* [#5] fix: OAuth 테스트코드 안되는 오류 수정

* [#4] feat: bpm, instrument 타입 변경 / user 추가 / validation 보완

* [#4] refactor: conflict 없도록 프로젝트 게시 API 수정

* [#4] test: 정상 동작에 대한 테스트코드 추가

* Update src/main/java/com/artistack/project/dto/ProjectDto.java

Co-authored-by: Dahyeon Woo <[email protected]>

* [#4] feat: Swagger 문서화

Co-authored-by: Dahyeon Woo <[email protected]>

* Feature/#13 - 스택 조회 API (#18)

* [#4] feat: 프로젝트 게시 API

* [#13] feat: 스택 조회 API

* [#13] style: Swagger 파라미터 dataType 변경

* Feature/#12 회원 관련 API (#20)

* Feature/#4 scope ENUM 타입으로 변경 및 Swagger 문서 다듬기 (#21)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* [#5] fix: OAuth 테스트코드 안되는 오류 수정

* [#4] feat: bpm, instrument 타입 변경 / user 추가 / validation 보완

* [#4] refactor: conflict 없도록 프로젝트 게시 API 수정

* [#4] test: 정상 동작에 대한 테스트코드 추가

* Update src/main/java/com/artistack/project/dto/ProjectDto.java

Co-authored-by: Dahyeon Woo <[email protected]>

* [#4] feat: Swagger 문서화

* [#4] refactor: scope ENUM 타입으로 변경

* [#4] style: 회원가입, 로그인 Swagger 어노테이션 추가

* [#4] feat: Swagger API 정보 수정 및 Authorize 활성화

* style: Swagger 문서 설명 추가

* test: 테스트코드 scope ENUM 타입으로 변경

* style: 에러 코드 오름차순으로 정렬

Co-authored-by: Dahyeon Woo <[email protected]>

* Feature/#16 - 좋아요 API (#23)

* [#16] feat: 좋아요 & 좋아요 취소 API

* [#16] feat: 좋아요수 조회 추가

* [#16] fix: 개수 조회를 위한 project domain 수정

* [#16] fix: validaition 수정

* [#16] fix: 반환값 명시적으로 변경

* style: 이름 변경 및 중복 코드 제거

* [#16] feat: 프로필 조회시 좋아요수 함께 반환

* [#8] refactor: 반환 타입을 List에서 Dto로 변경 (#24)

* main -> dev (#29)

* 배포를 위한 dev->main 병합 (#25)

* [#2] style: resource별로 디렉토리 구조 생성

* [#2] style: domain, repository 코드 추가

* [#2] feat: BaseTimeEntity 추가

* [#2] refactor: Project 도메인 수정

* refactor: User 도메인 수정

* [#6] feat: Response 형식 지정

* [#9] feat: S3 파일 업로드 관련 파일 추가 (#10)

* [#9] feat: S3 파일 업로드 관련 파일 추가

* [#9] feat: S3 - mp4 형식 파일은 video 폴더에 저장되도록 코드 변경

* [#5] feat: Instrument api

악기 domain, api 추가

* [#5] feat: User domain

User domain 개발

* [#5] feat: UserInstrument relation domain

User-Instrument 관계 테이블 생성

* [#5] feat: Access/Refresh token with Spring Security

* [#5] feat: Kakao sign in/up

카카오 계정으로 회원가입/로그인 구현

* [#5] feat: Sign up with profile image

회원가입 시 프로필 이미지 업로드 하도록 기능 추가

* [#5] test: s3 upload

* [#5] test: OAuth sign up/in

* Feature/#4 - 프로젝트 게시 API 및 AwsS3Config 문제 해결 (#14)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* Feature/#8 - 프로젝트 조회 API (#15)

* [#8] feat: 프로젝트 조회 API

* chore: Swagger 적용

* [#8] hotfix: 프로젝트 조회 API DTO 분리 및 로직 수정

* [#8] fix: 프로젝트 도메인 업데이트

* [#8] feat: 프로젝트 상세 조회 API -> 유저 정보 및 악기 조회 추가

* [#8] hotfix: 악기 조회

* [#8] hotfix: 생성일 수정일 조회 추가

* Feature/#4 - 프로젝트 게시 API 보완 및 테스트 코드 작성 (#17)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* [#5] fix: OAuth 테스트코드 안되는 오류 수정

* [#4] feat: bpm, instrument 타입 변경 / user 추가 / validation 보완

* [#4] refactor: conflict 없도록 프로젝트 게시 API 수정

* [#4] test: 정상 동작에 대한 테스트코드 추가

* Update src/main/java/com/artistack/project/dto/ProjectDto.java

Co-authored-by: Dahyeon Woo <[email protected]>

* [#4] feat: Swagger 문서화

Co-authored-by: Dahyeon Woo <[email protected]>

* Feature/#13 - 스택 조회 API (#18)

* [#4] feat: 프로젝트 게시 API

* [#13] feat: 스택 조회 API

* [#13] style: Swagger 파라미터 dataType 변경

* Feature/#12 회원 관련 API (#20)

* Feature/#4 scope ENUM 타입으로 변경 및 Swagger 문서 다듬기 (#21)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* [#5] fix: OAuth 테스트코드 안되는 오류 수정

* [#4] feat: bpm, instrument 타입 변경 / user 추가 / validation 보완

* [#4] refactor: conflict 없도록 프로젝트 게시 API 수정

* [#4] test: 정상 동작에 대한 테스트코드 추가

* Update src/main/java/com/artistack/project/dto/ProjectDto.java

Co-authored-by: Dahyeon Woo <[email protected]>

* [#4] feat: Swagger 문서화

* [#4] refactor: scope ENUM 타입으로 변경

* [#4] style: 회원가입, 로그인 Swagger 어노테이션 추가

* [#4] feat: Swagger API 정보 수정 및 Authorize 활성화

* style: Swagger 문서 설명 추가

* test: 테스트코드 scope ENUM 타입으로 변경

* style: 에러 코드 오름차순으로 정렬

Co-authored-by: Dahyeon Woo <[email protected]>

* Feature/#16 - 좋아요 API (#23)

* [#16] feat: 좋아요 & 좋아요 취소 API

* [#16] feat: 좋아요수 조회 추가

* [#16] fix: 개수 조회를 위한 project domain 수정

* [#16] fix: validaition 수정

* [#16] fix: 반환값 명시적으로 변경

* style: 이름 변경 및 중복 코드 제거

* [#16] feat: 프로필 조회시 좋아요수 함께 반환

* [#8] refactor: 반환 타입을 List에서 Dto로 변경 (#24)

Co-authored-by: leeeeeyeon <[email protected]>
Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Mason Kim <[email protected]>

* refactor: Instrument 순서 변경 및 img url 추가 (#26)

* refactor: Instrument initialize() 함수 주석 처리 (#27)

* [#2] style: resource별로 디렉토리 구조 생성

* [#2] style: domain, repository 코드 추가

* [#2] feat: BaseTimeEntity 추가

* [#2] refactor: Project 도메인 수정

* refactor: User 도메인 수정

* [#6] feat: Response 형식 지정

* [#9] feat: S3 파일 업로드 관련 파일 추가 (#10)

* [#9] feat: S3 파일 업로드 관련 파일 추가

* [#9] feat: S3 - mp4 형식 파일은 video 폴더에 저장되도록 코드 변경

* [#5] feat: Instrument api

악기 domain, api 추가

* [#5] feat: User domain

User domain 개발

* [#5] feat: UserInstrument relation domain

User-Instrument 관계 테이블 생성

* [#5] feat: Access/Refresh token with Spring Security

* [#5] feat: Kakao sign in/up

카카오 계정으로 회원가입/로그인 구현

* [#5] feat: Sign up with profile image

회원가입 시 프로필 이미지 업로드 하도록 기능 추가

* [#5] test: s3 upload

* [#5] test: OAuth sign up/in

* Feature/#4 - 프로젝트 게시 API 및 AwsS3Config 문제 해결 (#14)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* Feature/#8 - 프로젝트 조회 API (#15)

* [#8] feat: 프로젝트 조회 API

* chore: Swagger 적용

* [#8] hotfix: 프로젝트 조회 API DTO 분리 및 로직 수정

* [#8] fix: 프로젝트 도메인 업데이트

* [#8] feat: 프로젝트 상세 조회 API -> 유저 정보 및 악기 조회 추가

* [#8] hotfix: 악기 조회

* [#8] hotfix: 생성일 수정일 조회 추가

* Feature/#4 - 프로젝트 게시 API 보완 및 테스트 코드 작성 (#17)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* [#5] fix: OAuth 테스트코드 안되는 오류 수정

* [#4] feat: bpm, instrument 타입 변경 / user 추가 / validation 보완

* [#4] refactor: conflict 없도록 프로젝트 게시 API 수정

* [#4] test: 정상 동작에 대한 테스트코드 추가

* Update src/main/java/com/artistack/project/dto/ProjectDto.java

Co-authored-by: Dahyeon Woo <[email protected]>

* [#4] feat: Swagger 문서화

Co-authored-by: Dahyeon Woo <[email protected]>

* Feature/#13 - 스택 조회 API (#18)

* [#4] feat: 프로젝트 게시 API

* [#13] feat: 스택 조회 API

* [#13] style: Swagger 파라미터 dataType 변경

* Feature/#12 회원 관련 API (#20)

* Feature/#4 scope ENUM 타입으로 변경 및 Swagger 문서 다듬기 (#21)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* [#5] fix: OAuth 테스트코드 안되는 오류 수정

* [#4] feat: bpm, instrument 타입 변경 / user 추가 / validation 보완

* [#4] refactor: conflict 없도록 프로젝트 게시 API 수정

* [#4] test: 정상 동작에 대한 테스트코드 추가

* Update src/main/java/com/artistack/project/dto/ProjectDto.java

Co-authored-by: Dahyeon Woo <[email protected]>

* [#4] feat: Swagger 문서화

* [#4] refactor: scope ENUM 타입으로 변경

* [#4] style: 회원가입, 로그인 Swagger 어노테이션 추가

* [#4] feat: Swagger API 정보 수정 및 Authorize 활성화

* style: Swagger 문서 설명 추가

* test: 테스트코드 scope ENUM 타입으로 변경

* style: 에러 코드 오름차순으로 정렬

Co-authored-by: Dahyeon Woo <[email protected]>

* Feature/#16 - 좋아요 API (#23)

* [#16] feat: 좋아요 & 좋아요 취소 API

* [#16] feat: 좋아요수 조회 추가

* [#16] fix: 개수 조회를 위한 project domain 수정

* [#16] fix: validaition 수정

* [#16] fix: 반환값 명시적으로 변경

* style: 이름 변경 및 중복 코드 제거

* [#16] feat: 프로필 조회시 좋아요수 함께 반환

* [#8] refactor: 반환 타입을 List에서 Dto로 변경 (#24)

* refactor: Instrument 순서 변경 및 img url 추가

* refactor: Instrument initialize() 함수 주석 처리

Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Dahyeon Woo <[email protected]>
Co-authored-by: defwdahyun0 <[email protected]>

* 배포를 위한 dev->main 병합 (#28)

* [#2] style: resource별로 디렉토리 구조 생성

* [#2] style: domain, repository 코드 추가

* [#2] feat: BaseTimeEntity 추가

* [#2] refactor: Project 도메인 수정

* refactor: User 도메인 수정

* [#6] feat: Response 형식 지정

* [#9] feat: S3 파일 업로드 관련 파일 추가 (#10)

* [#9] feat: S3 파일 업로드 관련 파일 추가

* [#9] feat: S3 - mp4 형식 파일은 video 폴더에 저장되도록 코드 변경

* [#5] feat: Instrument api

악기 domain, api 추가

* [#5] feat: User domain

User domain 개발

* [#5] feat: UserInstrument relation domain

User-Instrument 관계 테이블 생성

* [#5] feat: Access/Refresh token with Spring Security

* [#5] feat: Kakao sign in/up

카카오 계정으로 회원가입/로그인 구현

* [#5] feat: Sign up with profile image

회원가입 시 프로필 이미지 업로드 하도록 기능 추가

* [#5] test: s3 upload

* [#5] test: OAuth sign up/in

* Feature/#4 - 프로젝트 게시 API 및 AwsS3Config 문제 해결 (#14)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* Feature/#8 - 프로젝트 조회 API (#15)

* [#8] feat: 프로젝트 조회 API

* chore: Swagger 적용

* [#8] hotfix: 프로젝트 조회 API DTO 분리 및 로직 수정

* [#8] fix: 프로젝트 도메인 업데이트

* [#8] feat: 프로젝트 상세 조회 API -> 유저 정보 및 악기 조회 추가

* [#8] hotfix: 악기 조회

* [#8] hotfix: 생성일 수정일 조회 추가

* Feature/#4 - 프로젝트 게시 API 보완 및 테스트 코드 작성 (#17)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* [#5] fix: OAuth 테스트코드 안되는 오류 수정

* [#4] feat: bpm, instrument 타입 변경 / user 추가 / validation 보완

* [#4] refactor: conflict 없도록 프로젝트 게시 API 수정

* [#4] test: 정상 동작에 대한 테스트코드 추가

* Update src/main/java/com/artistack/project/dto/ProjectDto.java

Co-authored-by: Dahyeon Woo <[email protected]>

* [#4] feat: Swagger 문서화

Co-authored-by: Dahyeon Woo <[email protected]>

* Feature/#13 - 스택 조회 API (#18)

* [#4] feat: 프로젝트 게시 API

* [#13] feat: 스택 조회 API

* [#13] style: Swagger 파라미터 dataType 변경

* Feature/#12 회원 관련 API (#20)

* Feature/#4 scope ENUM 타입으로 변경 및 Swagger 문서 다듬기 (#21)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* [#5] fix: OAuth 테스트코드 안되는 오류 수정

* [#4] feat: bpm, instrument 타입 변경 / user 추가 / validation 보완

* [#4] refactor: conflict 없도록 프로젝트 게시 API 수정

* [#4] test: 정상 동작에 대한 테스트코드 추가

* Update src/main/java/com/artistack/project/dto/ProjectDto.java

Co-authored-by: Dahyeon Woo <[email protected]>

* [#4] feat: Swagger 문서화

* [#4] refactor: scope ENUM 타입으로 변경

* [#4] style: 회원가입, 로그인 Swagger 어노테이션 추가

* [#4] feat: Swagger API 정보 수정 및 Authorize 활성화

* style: Swagger 문서 설명 추가

* test: 테스트코드 scope ENUM 타입으로 변경

* style: 에러 코드 오름차순으로 정렬

Co-authored-by: Dahyeon Woo <[email protected]>

* Feature/#16 - 좋아요 API (#23)

* [#16] feat: 좋아요 & 좋아요 취소 API

* [#16] feat: 좋아요수 조회 추가

* [#16] fix: 개수 조회를 위한 project domain 수정

* [#16] fix: validaition 수정

* [#16] fix: 반환값 명시적으로 변경

* style: 이름 변경 및 중복 코드 제거

* [#16] feat: 프로필 조회시 좋아요수 함께 반환

* [#8] refactor: 반환 타입을 List에서 Dto로 변경 (#24)

Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Dahyeon Woo <[email protected]>
Co-authored-by: defwdahyun0 <[email protected]>

Co-authored-by: Dahyeon Woo <[email protected]>
Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: defwdahyun0 <[email protected]>

* Instrument initialize() 주석 해제

Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Dahyeon Woo <[email protected]>
Co-authored-by: defwdahyun0 <[email protected]>

* refactor: Instrument initialize() 함수 0번째 원소 추가

Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Dahyeon Woo <[email protected]>
Co-authored-by: defwdahyun0 <[email protected]>

* Hotfix/#8 - request 및 response 형식 수정 (#34)

* [#8] refactor: 프로젝트 정보 조회 URI 변경

* [#8] refactor: user->userDto 조회로 변경

* Feature/#12 - 프로젝트 삭제, 프로젝트 리스트 조회 (#37)

* security: access token 미검사 

개발을 위한 모든 uri access token 미검사

* refactor: Response code

* [#5] fix: SignUp method

실수로 회원가입을 Get Method로 받음. Post로 수정함

* [#12] feat - 회원 조회, 수정, 탈퇴 API 추가

* [#12] test: /users

* fix: minor

url 일부 수정

* Merge remote-tracking branch 'umc-artistack/dev' into feature/#12

* [#12] refactor: user 제약조건

* [#12] feat: 다른 유저 조회

artistack id로 다른 유저 조회

* [#12] feat: jwt 재발급

jwt 만료 시 재발급하는 api

* [#12] refactor: if to switch

* [#12] feat: 나의/타유저의 프로젝트들 조회

pagable 사용하여 페이징 구현

* [#12] test

* [#12] test

* [#12] docs: project controller comment

* [#12] fix: 로그인 실패 응답 변경

UserDto 형식으로 변경

* [#12] fix: 프로젝트 조회 시 범위 조정

PUBLIC 상태의 프로젝트만 조회 가능

* [#12] feat: 프로젝트 삭제 API

* [#12] fix: 프로젝트 리스트 조회 api

* Feature/#4 - 프로젝트 등록 API 수정 및 테스트코드 작성 (#41)

* [#4] feat: 프로젝트 게시 API

* [#4] fix: AwsS3Config 설정 파일에서 값을 못 가져오는 문제 해결

* [#5] fix: OAuth 테스트코드 안되는 오류 수정

* [#4] feat: bpm, instrument 타입 변경 / user 추가 / validation 보완

* [#4] refactor: conflict 없도록 프로젝트 게시 API 수정

* [#4] test: 정상 동작에 대한 테스트코드 추가

* Update src/main/java/com/artistack/project/dto/ProjectDto.java

Co-authored-by: Dahyeon Woo <[email protected]>

* [#4] feat: Swagger 문서화

* [#4] refactor: scope ENUM 타입으로 변경

* [#4] style: 회원가입, 로그인 Swagger 어노테이션 추가

* [#4] feat: Swagger API 정보 수정 및 Authorize 활성화

* style: Swagger 문서 설명 추가

* test: 테스트코드 scope ENUM 타입으로 변경

* style: 에러 코드 오름차순으로 정렬

* chore: .gitignore에 application.properties 추가

* refactor: 악기 요청 값을 List<InstrumentDto>에서 List<Long>으로 변경

* refactor: validation 후 S3에 업로드하도록 로직 변경

* [#4] feat: 프로젝트 등록 시 하나의 악기만 선택 가능하도록 validation 추가

* refactor: 프로젝트 등록 시 동영상 업로드 로직 변경

* [#4] test: 프로젝트 등록 API Controller 테스트 코드 작성

* [#4] test: 프로젝트 등록 API Controller 테스트 코드에 악기 수를 count하는 코드 추가

* [#4] chore: application.properties 변경

Co-authored-by: Dahyeon Woo <[email protected]>

Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Mason Kim <[email protected]>
Co-authored-by: Dahyeon Woo <[email protected]>
Co-authored-by: defwdahyun0 <[email protected]>
  • Loading branch information
5 people authored Aug 15, 2022
1 parent b22876a commit a764a92
Show file tree
Hide file tree
Showing 7 changed files with 138 additions and 48 deletions.
1 change: 1 addition & 0 deletions src/main/java/com/artistack/base/constant/Code.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ public enum Code {
PROJECT_LIKE_NOT_EXIST(2208, HttpStatus.BAD_REQUEST, "Project Like doesn't exist"),

INVALID_INSTRUMENT(2301, HttpStatus.BAD_REQUEST, "Invalid instrument"),
MULTI_INSTRUMENT_ERROR(2302, HttpStatus.BAD_REQUEST, "Cannot use multi instrument"),

INTERNAL_ERROR(4000, HttpStatus.INTERNAL_SERVER_ERROR, "Internal error"),
DATA_ACCESS_ERROR(4001, HttpStatus.INTERNAL_SERVER_ERROR, "Data access error"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ public DataResponseDto<Object> uploadProject(
if (video.isEmpty()) {
throw new GeneralException(Code.EMPTY_VIDEO, "비디오 파일이 비어있습니다.");
}
// validation: 프로젝트 제목이 최대 글자 수를 넘겼을 경우 validation
// validation: 프로젝트 제목이 최대 글자 수를 넘겼을 경우
if (projectDto.getTitle().length() > 18) {
throw new GeneralException(Code.TITLE_TOO_LONG, "연주 제목이 최대 글자(18자)를 초과했습니다.");
}
Expand All @@ -182,6 +182,18 @@ public DataResponseDto<Object> uploadProject(
throw new GeneralException(Code.DESCRIPTION_TOO_LONG, "연주에 대한 설명이 최대 글자(48자)를 초과했습니다.");
}

// validation: 올바르지 않은 악기 id를 사용했을 경우
for (Long instrumentId : projectDto.getInstrumentIds()) {
if (instrumentId < 1 || instrumentId > 6) {
throw new GeneralException(Code.INVALID_INSTRUMENT, "올바른 악기를 선택해주세요.");
}
}

// validation: 2개 이상의 악기 id를 사용했을 경우
if (projectDto.getInstrumentIds().size() > 1) {
throw new GeneralException(Code.MULTI_INSTRUMENT_ERROR, "하나의 악기만 선택할 수 있습니다.");
}

try {

String videoUrl = projectService.insertProject(prevProjectId, video, projectDto);
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/com/artistack/project/dto/ProjectDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ public class ProjectDto {

private List<InstrumentDto> instruments;

private List<Long> instrumentIds;

private Integer likeCount;

private Integer stackCount;
Expand Down Expand Up @@ -92,13 +94,13 @@ public static ProjectDto projectResponse(Project project, ProjectInstrumentRepos
}

public static ProjectDto insertProject(String title, String description, String bpm, String codeFlow,
List<InstrumentDto> instruments, Scope scope, Boolean isStackable) {
List<Long> instrumentIds, Scope scope, Boolean isStackable) {
return ProjectDto.builder()
.title(title)
.description(description)
.bpm(bpm)
.codeFlow(codeFlow)
.instruments(instruments)
.instrumentIds(instrumentIds)
.scope(scope)
.isStackable(isStackable)
.build();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.artistack.project.domain.Project;
import java.util.List;
import java.util.Optional;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
Expand All @@ -23,7 +24,7 @@ public interface ProjectRepository extends JpaRepository<Project, Long> {

List<Project> findAllByPrevProjectId(Long id);

Optional<Project> findProjectByPrevProjectId(Long id);
Project findTopByOrderByIdDesc();

// 메이슨
@Query(value = "SELECT p FROM Project p WHERE (:artistackId IS NULL OR p.user.artistackId = :artistackId) AND (:lastId IS NULL OR p.id < :lastId) AND p.scope = :scope")
Expand Down
46 changes: 22 additions & 24 deletions src/main/java/com/artistack/project/service/ProjectService.java
Original file line number Diff line number Diff line change
Expand Up @@ -157,35 +157,33 @@ public String insertProject(Long prevProjectId, MultipartFile video, ProjectDto
}
}

try {
// 동영상을 S3에 저장한 후 URL을 가져옴
String videoUrl = s3UploaderService.uploadFile(video);
// String videoUrl = "테스트";

List<InstrumentDto> instruments = projectDto.getInstruments();

User user = userRepository.findById(SecurityUtil.getUserId())
.orElseThrow(() -> new GeneralException(Code.USER_NOT_FOUND, "유저를 찾을 수 없습니다."));
List<Long> instrumentIds = projectDto.getInstrumentIds();

Project project = projectRepository.save(projectDto.toEntity(videoUrl, prevProjectId, user));
User user = userRepository.findById(SecurityUtil.getUserId())
.orElseThrow(() -> new GeneralException(Code.USER_NOT_FOUND, "유저를 찾을 수 없습니다."));

for (InstrumentDto instrumentDto : instruments) {
Instrument instrument = instrumentRepository.findById(instrumentDto.getId())
.orElseThrow(() -> new GeneralException(Code.INVALID_INSTRUMENT, "올바른 악기를 선택해주세요."));
projectInstrumentRepository.save(instrumentDto.toEntity(project, instrument));
}
// 동영상을 S3에 저장한 후 URL을 가져옴
String videoUrl = null;
try {
videoUrl = s3UploaderService.uploadFile(video);
} catch (IOException e) {
throw new RuntimeException(e);
}
// String videoUrl = "테스트";

return project.getVideoUrl();
Project project = projectRepository.save(projectDto.toEntity(videoUrl, prevProjectId, user));

} catch (Exception e) {
e.printStackTrace();
try {
throw e;
} catch (IOException ex) {
throw new RuntimeException(ex);
}
// throw e;
for (Long instrumentId : instrumentIds) {
Instrument instrument = instrumentRepository.findById(instrumentId)
.orElseThrow(() -> new GeneralException(Code.INVALID_INSTRUMENT,
"Controller validation failed - API 담당자에게 말해주세요!"));
projectInstrumentRepository.save(
new InstrumentDto(instrument.getId(), instrument.getName(), instrument.getImgUrl())
.toEntity(project, instrument)
);
}

return project.getVideoUrl();
}

// 스택 조회 - 다음 스택인지, 이전 스택인지 선택
Expand Down
6 changes: 5 additions & 1 deletion src/main/resources/application.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# profile
spring.profiles.include=dev

# MySQL
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL8Dialect

# port
Expand All @@ -19,5 +20,8 @@ spring.servlet.multipart.max-request-size=1GB
cloud.aws.stack.auto=false
logging.level.com.amazonaws.util.EC2MetadataUtils=error

# test
server.servlet.encoding.force-response=true

# swagger
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
110 changes: 91 additions & 19 deletions src/test/java/com/artistack/controller/ProjectControllerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,19 @@
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;

import com.artistack.base.GeneralException;
import com.artistack.base.constant.Code;
import com.artistack.instrument.dto.InstrumentDto;
import com.artistack.jwt.dto.JwtDto;

import com.artistack.instrument.domain.Instrument;
import com.artistack.instrument.domain.ProjectInstrument;
import com.artistack.instrument.repository.InstrumentRepository;
import com.artistack.instrument.repository.ProjectInstrumentRepository;
import com.artistack.project.constant.Scope;
import com.artistack.jwt.dto.JwtDto;
import com.artistack.project.domain.Project;

import com.artistack.instrument.dto.InstrumentDto;

import com.artistack.project.dto.ProjectDto;
import com.artistack.project.repository.ProjectRepository;
import com.fasterxml.jackson.databind.ObjectMapper;
Expand All @@ -36,10 +45,17 @@ class ProjectControllerTest extends BaseControllerTest {

@Autowired
private ProjectRepository projectRepository;

@Autowired
private ProjectInstrumentRepository projectInstrumentRepository;

@Autowired
private InstrumentRepository instrumentRepository;

OAuthControllerTest oAuthControllerTest = new OAuthControllerTest();
HashMap<String, Object> registerBody;
String accessToken;
List<Long> instrumentIds = List.of(1L, 3L);
List<Long> instrumentIds = List.of(1L);

@BeforeEach
void setUp() {
Expand Down Expand Up @@ -76,41 +92,97 @@ void cleanUp() {
@Test
@DisplayName("등록 - 최초")
void uploadInitialTest() throws Exception {
// 프로젝트 등록 전 프로젝트 수를 count
long beforeUpload = projectRepository.count();

// 프로젝트 등록
uploadProject(accessToken, 0, Scope.PUBLIC, true, Code.OK.getCode());

// 프로젝트 등록 후 프로젝트 수를 count
long afterUpload = projectRepository.count();
then(afterUpload).isEqualTo(beforeUpload + 1);

long projectId = projectRepository.findTopByOrderByIdDesc().getId();

// 검증 단계에서 사용할 Entity
Project projectEntity = projectRepository.findById(projectId).orElse(null);

// 요청값으로부터 만들어지는 악기 리스트
List<Instrument> getInstrumentsFromEntity = new ArrayList<>();
for (Long instrumentId : instrumentIds) {
Instrument instrumentEntity = instrumentRepository.findById(instrumentId)
.orElseThrow(() -> new GeneralException(Code.INVALID_INSTRUMENT, "올바른 악기를 선택해주세요."));

ProjectInstrument projectInstrumentEntity = new ProjectInstrument(projectEntity, instrumentEntity);

getInstrumentsFromEntity.add(projectInstrumentEntity.getInstrument());

}
then(getInstrumentsFromEntity.size()).isEqualTo(1);

// Repository에 저장된 악기 리스트
List<Instrument> getInstrumentsFromRepository = new ArrayList<>();
for (ProjectInstrument projectInstrument : projectInstrumentRepository.findByProjectId(projectId)) {
getInstrumentsFromRepository.add(projectInstrument.getInstrument());
}

// 요청 값과 저장 값이 같은지 검증
then(projectEntity).isNotNull();
then(projectEntity.getPrevProjectId()).isEqualTo(0L);
then(projectEntity.getTitle()).isEqualTo("프로젝트 제목입니다");
then(projectEntity.getDescription()).isEqualTo("프로젝트 설명입니다");
then(projectEntity.getCodeFlow()).isEqualTo("A B C D");
then(projectEntity.getBpm()).isEqualTo("123");
then(getInstrumentsFromEntity).isEqualTo(getInstrumentsFromRepository);
then(projectEntity.getScope()).isEqualTo(Scope.PUBLIC);
then(projectEntity.getIsStackable()).isEqualTo(true);
}

@Test
@DisplayName("등록 - 다른 프로젝트 위에")
void uploadTest() throws Exception {
uploadInitialTest();
Integer projectCnt = Long.valueOf(projectRepository.count()).intValue();
uploadProject(accessToken, projectCnt, Scope.PUBLIC, true, Code.OK.getCode());
@DisplayName("등록 - 스택 쌓기")
void uploadStackTest() throws Exception {
// 스택을 쌓을 이전 프로젝트를 먼저 등록
uploadProject(accessToken, 0, Scope.PUBLIC, true, Code.OK.getCode());

// 스택을 쌓기 전 프로젝트 수
long beforeStackCnt = projectRepository.count();

// 이전 프로젝트
Long prevProjectId = projectRepository.findTopByOrderByIdDesc().getId();
// 스택을 쌓을 새로운 유저
JwtDto jwt = oAuthControllerTest.signUp(oAuthControllerTest.testUserRegisterBody, Code.OK.getCode());

// 이전 프로젝트 위에 스택을 쌓음
uploadProject(jwt.getAccessToken(), prevProjectId.intValue(), Scope.PUBLIC, true, Code.OK.getCode());

// 스택을 쌓은 후 프로젝트 수
long afterStackCnt = projectRepository.count();
then(afterStackCnt).isEqualTo(beforeStackCnt + 1);

// 검증 단계에서 사용할 Entity
Project project = projectRepository.findTopByOrderByIdDesc();

// 검증
then(project.getPrevProjectId()).isEqualTo(prevProjectId);
}

String uploadProject(String accessToken, Integer prev, Scope scope, Boolean isStackable, int code)
throws Exception {
// 프로젝트 업로드
String uploadProject(String accessToken, Integer prev, Scope scope, Boolean isStackable, int code) throws Exception {
ObjectMapper mapper = new ObjectMapper();
MockMultipartFile video = new MockMultipartFile("video", "test.mp4", "video/mpeg",
new FileInputStream(System.getProperty("user.dir") + "/src/main/resources/test.mp4"));

List<Long> instrumentIds = List.of(1L, 3L);

List<InstrumentDto> instruments = new ArrayList<>();

for (Long id : instrumentIds) {
instruments.add(new InstrumentDto(id, null, null));
}

ProjectDto projectDto = ProjectDto.insertProject(
"프로젝트 제목입니다",
"프로젝트 설명입니다",
"123",
"A B C D",
instruments,
instrumentIds,
scope,
isStackable
);


String projectDtoJson = mapper.writeValueAsString(projectDto);
MockMultipartFile dto = new MockMultipartFile("dto", "dto", "application/json", projectDtoJson.getBytes(
StandardCharsets.UTF_8));
Expand Down

0 comments on commit a764a92

Please sign in to comment.