Skip to content

Commit

Permalink
배포를 위한 main 병합 (#48)
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]>

* Feature/#13 - 스택 조회 API에 프로젝트 정보 추가 (#43)

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

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

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

* Merge branch 'dev' of github.com:leeeeeyeon/artistack-server into feature/#13

* Merge branch 'dev' of github.com:leeeeeyeon/artistack-server into feature/#13

* [#13] feat: 해당 유저가 쌓은 프로젝트 정보 추가

* [#13] refactor: 사용하지 않는 메서드 제거

* [#13] chore: gitignore 파일 트랙킹하지 않도록 수정

* 12 회원 관련 API - 애플로그인 (#45)

* 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

* [#12] feat: apple login

- apple authorization code로 apple refresh token 발급
- apple refresh token으로 apple identity token 발급하여 유저 식별
- apple refresh token으로 회원 탈퇴

* [#12] fix: 토큰 재발급 HTTP METHOD

* [#12] test

* Feature/#40 - 좋아요 누른 사람 조회 API, 좋아요 여부 확인 코드 추가 (#47)

* [#40] feat: 좋아요 누른 사람 조회 API

* [#40] feat: 프로젝트 정보 조회 API에 좋아요 여부 추가

* fix: 프로젝트 전체 조회 API에 project의 title 추가

* fix: 스택 조회 API에 project의 id 추가

* feat: 프로젝트 전체 조회 API에 좋아요 여부 추가

* fix: local to dev

* [#40] fix: projectLikeDto -> userDto 활용

* [#40] fix: 좋아요 누른 사람 조회 API Paging 처리

* [#40] feat: ROLE이 USER인 좋아요를 누른 사용자만 조회, count

* fix: local to dev

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: DahyeonWoo <[email protected]>
  • Loading branch information
6 people authored Aug 22, 2022
1 parent 6bd5b3a commit 7d88078
Show file tree
Hide file tree
Showing 9 changed files with 95 additions and 31 deletions.
15 changes: 5 additions & 10 deletions src/main/java/com/artistack/base/constant/Code.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,6 @@
@Getter
@RequiredArgsConstructor
public enum Code {

// 충돌 방지를 위한 Code format
// X1XXX: 제이
// X2XXX: 셀리나
// X3XXX: 메이슨
// ex) 메이슨이 닉네임 중복 에러코드를 만든다면
// USER_NICKNAME_DUPLICATED(13010, HttpStatus.BAD_REQUEST, "User nickname duplicated"),

OK(0, HttpStatus.OK, "Ok"),

BAD_REQUEST(2000, HttpStatus.BAD_REQUEST, "Bad request"),
Expand All @@ -38,8 +30,11 @@ public enum Code {
PREV_PROJECT_NOT_STACKABLE(2205, HttpStatus.BAD_REQUEST, "Previous project isn't stackable"),
INVALID_SEQUENCE(2206, HttpStatus.BAD_REQUEST, "Invalid sequence"),

PROJECT_LIKE_EXIST(2207, HttpStatus.BAD_REQUEST, "Project Like already exist"),
PROJECT_LIKE_NOT_EXIST(2208, HttpStatus.BAD_REQUEST, "Project Like doesn't exist"),
USER_PROJECT_LIKE_EXIST(2207, HttpStatus.BAD_REQUEST, "User Project Like already exist"),
USER_PROJECT_LIKE_NOT_EXIST(2208, HttpStatus.BAD_REQUEST, "User Project Like doesn't exist"),
PROJECT_LIKE_EXIST(2209, HttpStatus.BAD_REQUEST, "Project Like already exist"),
PROJECT_LIKE_NOT_EXIST(2210, 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"),

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@
@Slf4j
@Api(tags = "프로젝트 관련 API ")
public class ProjectController {
// TODO: 모든 API에 header 적용

private final ProjectService projectService;

/**
Expand Down Expand Up @@ -125,6 +127,20 @@ public DataResponseDto<Object> deleteLikeProject(
return DataResponseDto.of(projectService.deleteLikeProject(projectId));
}

/**
* 프로젝트 좋아요한 사람 조회 API - 셀리나
* [Get] /projects/{projectId}/like/users
*/
@ApiOperation(value = "프로젝트 정보 조회", notes = "단일 프로젝트를 조회합니다. projectId를 입력해주세요.")
@ApiImplicitParam(name = "projectId", value = "정보를 조회할 프로젝트 id", required = true, dataType = "long", paramType = "path")
@GetMapping("/{projectId}/like/users")
public DataResponseDto<Object> getProjectLikeUsers(
Pageable pageable,
@PathVariable Long projectId
) {
return DataResponseDto.of(projectService.getProjectLikeUsersWithPaging(pageable, projectId));
}

/**
* 스택 조회 API - 제이
* [Get] /projects/{projectId}/prev
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/artistack/project/domain/Project.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public class Project extends BaseTimeEntity {
@Formula("(SELECT count(*) FROM project p where p.prev_project_id = id)")
private Integer stackCount;

@Formula("(SELECT count(*) FROM project_like pl where pl.project_id = id)")
@Formula("(SELECT count(*) FROM project_like pl INNER JOIN user u where pl.project_id = id AND u.id = pl.user_id AND u.role = 'USER')")
private Integer likeCount;

@Builder
Expand Down
27 changes: 24 additions & 3 deletions src/main/java/com/artistack/project/dto/ProjectDto.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,19 @@
package com.artistack.project.dto;

import com.artistack.base.GeneralException;
import com.artistack.base.constant.Code;
import com.artistack.instrument.domain.ProjectInstrument;
import com.artistack.instrument.dto.InstrumentDto;
import com.artistack.instrument.repository.ProjectInstrumentRepository;
import com.artistack.project.constant.Scope;
import com.artistack.project.domain.Project;
import com.artistack.project.domain.ProjectLike;
import com.artistack.project.repository.ProjectLikeRepository;
import com.artistack.user.domain.User;
import com.artistack.user.dto.UserDto;
import com.artistack.user.repository.UserRepository;
import com.artistack.user.service.UserService;
import com.artistack.util.SecurityUtil;
import com.fasterxml.jackson.annotation.JsonInclude;
import java.util.List;
import java.util.Optional;
Expand All @@ -15,13 +22,15 @@
import lombok.Builder;
import lombok.Data;
import lombok.Getter;
import static org.springframework.util.ObjectUtils.isEmpty;

@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@Getter
@Builder
@AllArgsConstructor
public class ProjectDto {

private Long id;

private String videoUrl;
Expand Down Expand Up @@ -52,26 +61,36 @@ public class ProjectDto {

private Integer stackCount;

private Boolean isLiked;

public ProjectDto() {

}

// 메이슨
public static ProjectDto profileResponse(Project project) {
public static ProjectDto profileResponse(Project project, ProjectLikeRepository projectLikeRepository, UserRepository userRepository) {

Boolean isLiked = !isEmpty(projectLikeRepository) && !projectLikeRepository.findByUserAndProject(userRepository.findById(SecurityUtil.getUserId()).orElse(null), project).isEmpty();

return ProjectDto.builder()
.id(project.getId())
.title(project.getTitle())
.videoUrl(project.getVideoUrl())
.stackCount(project.getStackCount())
.viewCount(project.getViewCount())
.likeCount(project.getLikeCount())
.isLiked(isLiked)
.build();
}

public static ProjectDto projectResponse(Project project) {
return projectResponse(project, null);
return projectResponse(project, null, null, null);
}

public static ProjectDto projectResponse(Project project, ProjectInstrumentRepository projectInstrumentRepository) {
public static ProjectDto projectResponse(Project project, ProjectInstrumentRepository projectInstrumentRepository, ProjectLikeRepository projectLikeRepository, UserRepository userRepository) {

Boolean isLiked = !isEmpty(projectLikeRepository) && !projectLikeRepository.findByUserAndProject(userRepository.findById(SecurityUtil.getUserId()).orElse(null), project).isEmpty();

return ProjectDto.builder()
.id(project.getId())
.videoUrl(project.getVideoUrl())
Expand All @@ -89,12 +108,14 @@ public static ProjectDto projectResponse(Project project, ProjectInstrumentRepos
.map(InstrumentDto::response).collect(Collectors.toList())).orElse(null))
.stackCount(project.getStackCount())
.likeCount(project.getLikeCount())
.isLiked(isLiked)
.build();

}

public static ProjectDto stackResponse(Project project) {
return ProjectDto.builder()
.id(project.getId())
.videoUrl(project.getVideoUrl())
.title(project.getTitle())
.description(project.getDescription())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,21 @@
import com.artistack.project.domain.ProjectLike;
import com.artistack.user.domain.User;
import com.artistack.project.domain.Project;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

@Repository
public interface ProjectLikeRepository extends JpaRepository<ProjectLike, Long> {

@Query(value = "SELECT pl FROM ProjectLike pl WHERE pl.project = :project AND pl.user.role = 'USER'")
Page<ProjectLike> getByProjectWithPaging(Pageable pageable, Project project);

Optional<ProjectLike> findByUserAndProject(User user, Project project);

void deleteByUserAndProject(User user, Project project);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,6 @@
@Repository
public interface ProjectRepository extends JpaRepository<Project, Long> {

Page<Project> findAll(Pageable pageable);

Optional<Project> findById(Long id);

// TODO: Optional로 수정할 것!
Expand Down
44 changes: 30 additions & 14 deletions src/main/java/com/artistack/project/service/ProjectService.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import com.artistack.user.domain.User;
import com.artistack.user.dto.UserDto;
import com.artistack.user.repository.UserRepository;
import com.artistack.user.service.UserService;
import com.artistack.util.SecurityUtil;
import java.io.IOException;
import java.util.ArrayList;
Expand All @@ -31,30 +32,22 @@
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;

import static org.springframework.util.ObjectUtils.isEmpty;

@Slf4j
@Service
@RequiredArgsConstructor
@Transactional
public class ProjectService {

private final S3UploaderService s3UploaderService;
private final UserService userService;
private final ProjectRepository projectRepository;
private final UserRepository userRepository;
private final InstrumentRepository instrumentRepository;
private final ProjectInstrumentRepository projectInstrumentRepository;
private final ProjectLikeRepository projectLikeRepository;

// 프로젝트 전체 조회
public List<ProjectDto> getAll() {
return projectRepository.findAll().stream().map(ProjectDto::projectResponse).collect(Collectors.toList());
}

// 프로젝트 정보 조회
public ProjectDto getById(Long projectId) {
return projectRepository.findById(projectId)
.map(project -> ProjectDto.projectResponse(project, projectInstrumentRepository))
.orElseThrow(() -> new GeneralException(Code.PROJECT_NOT_FOUND, "프로젝트를 찾을 수 없습니다."));
}

/**
* 메이슨) 조건에 맞는 프로젝트들을 페이징 기능과 함께 반환합니다
Expand All @@ -64,7 +57,7 @@ public ProjectDto getById(Long projectId) {
*/
public Page<ProjectDto> getByConditionWithPaging(Pageable pageable, Optional<String> artistackId, Optional<Long> lastId) {
return projectRepository.getByConditionWithPaging(pageable, artistackId.orElse(null), lastId.orElse(null), Scope.PUBLIC)
.map(ProjectDto::profileResponse);
.map(project -> ProjectDto.profileResponse(project, projectLikeRepository, userRepository));
}

/**
Expand Down Expand Up @@ -95,6 +88,13 @@ public Page<ProjectDto> getMyWithPaging(Pageable pageable) {
return getByConditionWithPaging(pageable, Optional.of(artistackId), Optional.empty());
}

// 프로젝트 정보 조회
public ProjectDto getById(Long projectId) {
return projectRepository.findById(projectId)
.map(project -> ProjectDto.projectResponse(project, projectInstrumentRepository, projectLikeRepository, userRepository))
.orElseThrow(() -> new GeneralException(Code.PROJECT_NOT_FOUND, "프로젝트를 찾을 수 없습니다."));
}

// 프로젝트 좋아요 등록
@Transactional
public String likeProject(Long projectId) {
Expand All @@ -107,7 +107,7 @@ public String likeProject(Long projectId) {
.orElseThrow(() -> new GeneralException(Code.PROJECT_NOT_FOUND, "프로젝트를 찾을 수 없습니다."));

if (projectLikeRepository.findByUserAndProject(user, project).isPresent()) {
throw new GeneralException(Code.PROJECT_LIKE_EXIST, "프로젝트 좋아요가 이미 존재합니다.");
throw new GeneralException(Code.USER_PROJECT_LIKE_EXIST, "프로젝트 좋아요가 이미 존재합니다.");
}

ProjectLike projectLike = projectLikeRepository.save(ProjectLike.of(user, project));
Expand All @@ -131,14 +131,30 @@ public String deleteLikeProject(Long projectId) {
.orElseThrow(() -> new GeneralException(Code.PROJECT_NOT_FOUND, "프로젝트를 찾을 수 없습니다."));

if (projectLikeRepository.findByUserAndProject(user, project).isEmpty()) {
throw new GeneralException(Code.PROJECT_LIKE_NOT_EXIST, "취소할 프로젝트 좋아요가 존재하지 않습니다.");
throw new GeneralException(Code.USER_PROJECT_LIKE_NOT_EXIST, "취소할 프로젝트 좋아요가 존재하지 않습니다.");
}

projectLikeRepository.deleteByUserAndProject(user, project);

return "좋아요 취소가 완료되었습니다.";
}

// 프로젝트 좋아요한 유저 조회
@Transactional
public Page<UserDto> getProjectLikeUsersWithPaging(Pageable pageable, Long projectId) {

Project project = projectRepository.findById(projectId)
.orElseThrow(() -> new GeneralException(Code.PROJECT_NOT_FOUND, "프로젝트를 찾을 수 없습니다."));

Page<ProjectLike> projectLikes = projectLikeRepository.getByProjectWithPaging(pageable, project);

if (projectLikes.getContent().isEmpty()) {
throw new GeneralException(Code.PROJECT_LIKE_NOT_EXIST, "프로젝트 좋아요가 존재하지 않습니다.");
}

return projectLikes.map(UserDto::projectLikeUsersResponse);
}

// 프로젝트 게시
@Transactional
public String insertProject(Long prevProjectId, MultipartFile video, ProjectDto projectDto) {
Expand Down
10 changes: 10 additions & 0 deletions src/main/java/com/artistack/user/dto/UserDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
import com.artistack.instrument.dto.InstrumentDto;
import com.artistack.instrument.repository.UserInstrumentRepository;
import com.artistack.oauth.constant.ProviderType;

import com.artistack.project.domain.ProjectLike;
import com.artistack.project.dto.ProjectDto;
import com.artistack.user.constant.Role;
import com.artistack.user.domain.User;
Expand Down Expand Up @@ -94,6 +96,14 @@ public static UserDto stackResponse(User user, List<InstrumentDto> instruments,
.build();
}

public static UserDto projectLikeUsersResponse(ProjectLike projectLike) {
return UserDto.builder()
.artistackId(projectLike.getUser().getArtistackId())
.nickname(projectLike.getUser().getNickname())
.profileImgUrl(projectLike.getUser().getProfileImgUrl())
.build();
}

public User toEntity(UserRepository userRepository) {
this.userRepository = userRepository;

Expand Down
4 changes: 3 additions & 1 deletion src/main/resources/application.properties
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,10 @@ logging.level.com.amazonaws.util.EC2MetadataUtils=error

spring.jpa.hibernate.ddl-auto=update

spring.profiles.included=dev
# profile
spring.profiles.include=dev

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

# swagger
Expand Down

0 comments on commit 7d88078

Please sign in to comment.