Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

[Master] 5주차 과제 Review PR #36

Merged
merged 196 commits into from
Oct 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
196 commits
Select commit Hold shift + click to select a range
1beb54b
chore: security 관련 dependency 추가
suhyeon7497 Sep 19, 2024
bfadc5c
feat: user 정보 저장을 위한 요소 추가
suhyeon7497 Sep 19, 2024
a5fa443
feat: oauth 로그인을 위한 security config 설정
suhyeon7497 Sep 19, 2024
b7e608c
chore: 민감한 환경변수를 위한 서브 모듈 추가
suhyeon7497 Sep 20, 2024
473ad47
chore: 서브모듈 최신화
suhyeon7497 Sep 20, 2024
9fdb5b0
chore: application.properties 인식 문제 해결
suhyeon7497 Sep 20, 2024
1667df1
feat: authentication 구현
suhyeon7497 Sep 20, 2024
46ceedd
style : 컨벤션에 맞게 도메인별 패키지 사용
Sep 21, 2024
3360ca7
style : 컨벤션에 맞게 패키지명 변경
Sep 21, 2024
4ae6052
style : 생성자 lombok으로 변경
Sep 21, 2024
cdac49b
style : 생성자 lombok으로 변경
Sep 21, 2024
5e97e5e
chore : 주석 추가 ( 클래스 설명 )
Sep 21, 2024
021d8e5
Merge branch 'weekly/1' of https://github.com/kakao-tech-campus-2nd-s…
Sep 21, 2024
8e9e4ba
refactor : Pull 이후에 사용하던 더미 데이터 삭제
Sep 21, 2024
9658684
refactor : Pull 이후에 사용하던 더미 데이터 부분을 실제 값으로 대체
Sep 21, 2024
3cce303
feat : videoAlias 정보를 랜덤하게 매핑해주는 기능 구현
Sep 21, 2024
dbe277f
[refactor]: 코드리뷰 반영
dong-yxxn Sep 21, 2024
9d6f36d
style : 변수 선언 시점 변경
Sep 22, 2024
bd94b61
style : savedInfluencers 변수 삭제
Sep 22, 2024
55a41d1
[feat] PlaceTime, Menu VO를 Place 클래스에 추가
dong-yxxn Sep 22, 2024
21c15f6
refactor : 테스트를 위한 생성자 추가 및 필드 변수 설정
Sep 22, 2024
edd50b4
test : 비디오 도메인에 대한 테스트 코드 작성
Sep 22, 2024
3a74230
fix: authentication 하면 무한 리다이렉트 해결
suhyeon7497 Sep 23, 2024
52bb7a6
feat: oauth 로그인 하면 유저 정보 저장
suhyeon7497 Sep 23, 2024
9b85630
[refactor] 패키지명 수정
dong-yxxn Sep 24, 2024
8b0cd6d
[refactor] Address, Coordinate를 VO로 설정
dong-yxxn Sep 24, 2024
8f13bc9
[test] 비디오 도메인에 대한 테스트 코드 작성
Sep 22, 2024
8ed9e3f
[refactor] 9/23 회의 내용 반영
Sep 24, 2024
7a93e84
Merge remote-tracking branch 'origin/feat/#5-videoAlias' into feat/#5…
Sep 24, 2024
d366595
[chore]submodule 제거
suhyeon7497 Sep 25, 2024
5c67aaf
Merge branch 'weekly/1' of https://github.com/kakao-tech-campus-2nd-s…
suhyeon7497 Sep 25, 2024
a79ea6a
[chore] 패키지 구조 변경
suhyeon7497 Sep 25, 2024
e8e8b90
[fix] security 설정 없으면 오류 발생 해결
suhyeon7497 Sep 25, 2024
52f1845
[refactor] 피드백 내용 반영
Sep 25, 2024
212600e
[feat] 사용자 기준으로 장소 조회 기능 구현
dong-yxxn Sep 26, 2024
4c44a92
Merge remote-tracking branch 'origin/develop' into feat/#7-place
dong-yxxn Sep 26, 2024
21d3c6e
[chore] 충돌 파일 임시로 삭제 및 주석 처리
wndlthsk Sep 26, 2024
8bdfc54
[feat] 로그인 없을 때 인플루언서 반환
wndlthsk Sep 26, 2024
7b64410
[test] 인플루언서 반환 테스트 코드 작성
wndlthsk Sep 26, 2024
66846b3
[chore] jwt 관련 dependency 추가
suhyeon7497 Sep 26, 2024
914a7f8
[feat] jwt를 발급, 검증하는 util 클래스
suhyeon7497 Sep 26, 2024
389803a
[refactor] influencerId를 id로 변경
wndlthsk Sep 26, 2024
ae4d104
[refactor] Category 관련 로직을 CategoryService로 구현
dong-yxxn Sep 26, 2024
374fda3
[refactor] Place DTO 생성자 PlaceInfo로 이동
dong-yxxn Sep 26, 2024
958308b
[refactor]: PlaceInfo 팩토리 메서드로 변경함
dong-yxxn Sep 26, 2024
12a9740
[refactor] code review 피드백 반영
suhyeon7497 Sep 26, 2024
b08e420
[refactor] PlaceInfo 팩토리메서드 이름 of 및 static으로 변경
dong-yxxn Sep 26, 2024
77a4d4c
[refactor]: 코드리뷰 반영
dong-yxxn Sep 26, 2024
a935c53
[refactor] 피드백 내용 반영
Sep 26, 2024
c3dcb5f
[refactor] 피드백 내용 반영
Sep 26, 2024
79ca09c
[feat] 저장된 영상을 최신 순으로 받아오는 기능 구현
Sep 26, 2024
6c1d727
[feat] : cookie를 사용해 token 반환
suhyeon7497 Sep 26, 2024
0ef6809
Merge pull request #16 from kakao-tech-campus-2nd-step3/feat/#5-video…
sanghee0820 Sep 27, 2024
acab28b
[build] Swagger 사용을 위한 종속성 추가
Sep 27, 2024
975d611
[feat] Swagger 사용하여 Controller 메서드 설명 작성
Sep 27, 2024
556db00
Merge branch 'weekly/2' of https://github.com/kakao-tech-campus-2nd-s…
suhyeon7497 Sep 27, 2024
717e1b8
Merge pull request #17 from kakao-tech-campus-2nd-step3/feat/#2-authe…
sanghee0820 Sep 27, 2024
e852d91
[refactor]: 코드리뷰 반영
dong-yxxn Sep 21, 2024
48b7a72
[feat] PlaceTime, Menu VO를 Place 클래스에 추가
dong-yxxn Sep 22, 2024
0c159b3
[refactor] 패키지명 수정
dong-yxxn Sep 24, 2024
26bd747
[refactor] Address, Coordinate를 VO로 설정
dong-yxxn Sep 24, 2024
6500e06
[feat] 사용자 기준으로 장소 조회 기능 구현
dong-yxxn Sep 26, 2024
f7174e6
[refactor] Category 관련 로직을 CategoryService로 구현
dong-yxxn Sep 26, 2024
77a8b59
[refactor] Place DTO 생성자 PlaceInfo로 이동
dong-yxxn Sep 26, 2024
d6ea853
[refactor]: PlaceInfo 팩토리 메서드로 변경함
dong-yxxn Sep 26, 2024
ddcf770
[refactor] PlaceInfo 팩토리메서드 이름 of 및 static으로 변경
dong-yxxn Sep 26, 2024
bf487a8
[refactor]: 코드리뷰 반영
dong-yxxn Sep 26, 2024
8626aac
Merge branch 'feat/#7-place' of https://github.com/kakao-tech-campus-…
sanghee0820 Sep 27, 2024
c1fe8d6
[refactor] 매서드 이름 수정
sanghee0820 Sep 27, 2024
19ae5d4
[refactor] import문 최적화
sanghee0820 Sep 27, 2024
59df9ec
Merge pull request #18 from kakao-tech-campus-2nd-step3/feat/#7-place
sanghee0820 Sep 27, 2024
a189fe0
[refactor] 패키지 변경
sanghee0820 Sep 27, 2024
bee184a
[refactor] 패키지명 변경
sanghee0820 Sep 27, 2024
d99e3d8
[docs] Readme 수정
sanghee0820 Sep 27, 2024
6c1544e
[ignore] yaml파일을 .env환경변수로 관리
sanghee0820 Sep 27, 2024
6565ace
[refactor] 환경변수를 .env로 관리 변경
sanghee0820 Sep 27, 2024
d436972
Merge pull request #22 from kakao-tech-campus-2nd-step3/weekly/2
sanghee0820 Sep 27, 2024
03cef26
Merge pull request #23 from kakao-tech-campus-2nd-step3/develop
sanghee0820 Sep 27, 2024
cd0d87b
Merge pull request #24 from kakao-tech-campus-2nd-step3/weekly/2
sanghee0820 Sep 27, 2024
1369557
Merge pull request #25 from kakao-tech-campus-2nd-step3/develop
sanghee0820 Sep 27, 2024
22253b3
[refactor] 충돌 해결
wndlthsk Sep 27, 2024
93a0c69
[refactor] 내림차순 적용 방식 변경
Sep 28, 2024
8a7ae5d
[refactor] requestMapping 어노테이션 사용
Sep 28, 2024
ae821e6
Merge remote-tracking branch 'origin/weekly/2' into feat/#6-videoFilter
Sep 28, 2024
e0c65f3
[build] 코드 최신화 이후 swagger 종속성 재적용
Sep 28, 2024
0eeabc3
[refactor] 코드 최신화 이후 달라진 패키지 명 import 문에 적용
Sep 28, 2024
b26c1fd
[fix] 내림차순 적용 안 한 부분 발견 이후 수정
Sep 28, 2024
4731088
[feat] 내 주변 그 곳 API 기능 구현
Sep 28, 2024
46f3834
[chore] 사용하지 않는 import 문 삭제
Sep 28, 2024
7759fc9
[test] 컨트롤러 테스트 수정
wndlthsk Sep 29, 2024
19f094b
[feat] cookie 검증
suhyeon7497 Sep 29, 2024
6077588
Merge branch 'weekly/2' of https://github.com/kakao-tech-campus-2nd-s…
suhyeon7497 Sep 29, 2024
4dfae7f
[chore] 인플루언서 더미 데이터 삽입
wndlthsk Sep 29, 2024
d23a279
[refactor] 인플루언서 반환 형식 수정
wndlthsk Sep 29, 2024
48a40bf
[refactor] weekly/2 충돌 해결
wndlthsk Sep 29, 2024
d239e4d
[feat] 현재 로그인한 username 가져오기
suhyeon7497 Sep 29, 2024
8f63213
[chore] 패키지 통일 및 변경
Sep 29, 2024
7def8d6
[feat] 로그인한 유저의 userid를 가져오는 기능
suhyeon7497 Sep 30, 2024
b745ec8
[chore] 띄어쓰기 형식 맞추기
Oct 1, 2024
f493879
[chore] 오타 수정
Oct 1, 2024
5f2a329
[fix] 의도한 바와 다른 동작에 대한 수정
Oct 1, 2024
809804e
[fix] Record 클래스에 Getter 사용 삭제
Oct 1, 2024
1044b9a
[test] 새로운 메서드에 대한 테스트 구현 및 코드 최신화
Oct 1, 2024
66891cc
[chore] 환경변수 적용
Oct 1, 2024
bf1f83f
[feat] 토큰 확인 로직 구현
Oct 1, 2024
725d3db
[refactor] 메서드 명 수정
Oct 1, 2024
579dbab
[refactor] 환경 변수 설정 변경
Oct 1, 2024
702dfa6
[feat] youtube 채널 관련 엔티티 추가
sanghee0820 Oct 2, 2024
82360f5
[refactor] 테스트 코드 패키지 변경
sanghee0820 Oct 2, 2024
c92b24d
[feat] 비디오 크롤링 dto 추가
sanghee0820 Oct 2, 2024
4a34bf5
[feat] 저장된 마지막 영상까지 크롤링 기능 추가
sanghee0820 Oct 2, 2024
391d11e
[feat] 비디오 크롤링 기능 추가
sanghee0820 Oct 2, 2024
45cd688
[test] 비디오 크롤링 테스트 추가
sanghee0820 Oct 2, 2024
0ebb4b1
[fix] 마지막 페이지확인 로직 추가 및 페이지네이션 크기 50개로 증가
sanghee0820 Oct 2, 2024
eceee58
[test] 2024년 10월 2일 기준, 154개 먹을텐데 테스트 추가
sanghee0820 Oct 2, 2024
9c87234
[refactor] restTemplate 싱글톤 관리 및 정규식으로 주소 변환
sanghee0820 Oct 2, 2024
ba5040c
[feat] kakao Map 호출 관련 Properties추가
sanghee0820 Oct 2, 2024
e6caa46
[feat] map API 호출로 위치정보/가게정보 크롤링 추가
sanghee0820 Oct 2, 2024
9ce1798
[feat] 마지막 영상 정보 업데이트 로직 추가
sanghee0820 Oct 2, 2024
57c3d79
[test] 주소를 발췌함에 따른 테스트코드 변경
sanghee0820 Oct 2, 2024
9000857
[test] 카카오맵 api호출 테스트 추가
sanghee0820 Oct 2, 2024
2e1f22f
Merge pull request #21 from kakao-tech-campus-2nd-step3/feat/#6-video…
sanghee0820 Oct 2, 2024
36166f9
[feat] youtube 채널 관련 엔티티 추가
sanghee0820 Oct 2, 2024
63cfac4
[refactor] 테스트 코드 패키지 변경
sanghee0820 Oct 2, 2024
18952a6
[feat] 비디오 크롤링 dto 추가
sanghee0820 Oct 2, 2024
f544c70
[feat] 저장된 마지막 영상까지 크롤링 기능 추가
sanghee0820 Oct 2, 2024
61051ec
[feat] 비디오 크롤링 기능 추가
sanghee0820 Oct 2, 2024
506f911
[test] 비디오 크롤링 테스트 추가
sanghee0820 Oct 2, 2024
e31cc1f
[fix] 마지막 페이지확인 로직 추가 및 페이지네이션 크기 50개로 증가
sanghee0820 Oct 2, 2024
5f137d2
[test] 2024년 10월 2일 기준, 154개 먹을텐데 테스트 추가
sanghee0820 Oct 2, 2024
9c4015b
[refactor] restTemplate 싱글톤 관리 및 정규식으로 주소 변환
sanghee0820 Oct 2, 2024
3d13933
[feat] kakao Map 호출 관련 Properties추가
sanghee0820 Oct 2, 2024
2f4975e
[feat] map API 호출로 위치정보/가게정보 크롤링 추가
sanghee0820 Oct 2, 2024
ac8a9fd
[feat] 마지막 영상 정보 업데이트 로직 추가
sanghee0820 Oct 2, 2024
14b0c87
[test] 주소를 발췌함에 따른 테스트코드 변경
sanghee0820 Oct 2, 2024
ff5cc6b
[test] 카카오맵 api호출 테스트 추가
sanghee0820 Oct 2, 2024
8c08502
[.gitignore] 테스트 yaml파일 추가
sanghee0820 Oct 2, 2024
554ac45
[feat] 채널 최근 기록 업데이트 로직 추가 및 주석 추가
sanghee0820 Oct 2, 2024
b86c8c0
Merge branch 'feat/#9-summarize-youtube' of https://github.com/kakao-…
sanghee0820 Oct 2, 2024
e30de30
[feat]: 장소 조회에 카테로리, 인플루언서 필터 적용
dong-yxxn Oct 3, 2024
38e0331
[refactor] PlaceInfo에 인플루언서 정보 적용
dong-yxxn Oct 3, 2024
756d462
[fix] 충돌 해결
dong-yxxn Oct 3, 2024
71e6af4
[feat] authorzation exception handling
suhyeon7497 Oct 3, 2024
af4d9f7
[refactor] dto명 변경 및 팩토리 메소드 수정
wndlthsk Oct 3, 2024
a79d7d8
[refactor] 환경변수 파일 적용
wndlthsk Oct 3, 2024
9c9ea92
[refactor] weekly/5 충돌 해결
wndlthsk Oct 3, 2024
46b1d89
[refactor] ci/cd 개선
wndlthsk Oct 3, 2024
66394b2
[feat] 도커파일 및 테스트 파일 추가
wndlthsk Oct 3, 2024
3c4c223
Merge pull request #1 from wndlthsk/feat/#8-ci-cd
wndlthsk Oct 3, 2024
9fa2f8c
[feat] 테스트 실행 주석 처리
wndlthsk Oct 3, 2024
e13efb5
Merge pull request #2 from wndlthsk/feat/#8-ci-cd
wndlthsk Oct 3, 2024
9ad712e
[test] jwtUtil Test
suhyeon7497 Oct 3, 2024
42e1923
[refactor] API 명세 인터페이스에 작성하고 구현하기
Oct 3, 2024
5dbf213
[refactor] 패키지 명 컨벤션에 맞게 변경
Oct 3, 2024
1107cec
[refactor] 리뷰 반영
dong-yxxn Oct 3, 2024
1b2c7a0
[refactor]: 테스트 패키지 이름 수정
dong-yxxn Oct 3, 2024
049c471
[refactor] 메서드 이름 컨벤션에 맞게 변경
Oct 3, 2024
b3a6568
[refactor] findByPlaceIds -> findByPlaceIdIn으로 변경
dong-yxxn Oct 3, 2024
54d15e1
[refactor] 패키지 이름 변경
sanghee0820 Oct 3, 2024
81f9261
[refactor] dto 패키지 변경
sanghee0820 Oct 3, 2024
42852ef
[refactor & fix] Place 엔티티 수정, test 코드 오류 수정
dong-yxxn Oct 3, 2024
235a40d
[feat] place 필드 수정
sanghee0820 Oct 3, 2024
ca5df09
[feat] db yaml 추가
sanghee0820 Oct 3, 2024
cb9369f
[feat] cd 환경변수 추가
wndlthsk Oct 4, 2024
be032ab
Merge pull request #3 from wndlthsk/feat/#8-ci-cd
wndlthsk Oct 4, 2024
5559ec2
Merge pull request #4 from wndlthsk/weekly/5
wndlthsk Oct 4, 2024
3039148
[fix] fi 추가
wndlthsk Oct 4, 2024
83a3d3a
[refactor] exceptionhandling, dto추가
suhyeon7497 Oct 4, 2024
a66dc3c
[chore] 사용하지 않는 import, 지역변수 삭제
Oct 4, 2024
16d9cb6
[refactor] static import 사용
Oct 4, 2024
c085270
Merge pull request #5 from wndlthsk/develop
wndlthsk Oct 4, 2024
ec7114b
[chore] 사용하지 않는 import 문 제거
Oct 4, 2024
e3a0e29
[fix] 브랜치명 대문자 수정
wndlthsk Oct 4, 2024
4198919
[test] cicd 테스트용 컨트롤러
wndlthsk Oct 4, 2024
8488569
[feat] place 정보 dto 추가
sanghee0820 Oct 4, 2024
5a3921b
[feat] youtube 플레이리스트 타입 추가
sanghee0820 Oct 4, 2024
db2553e
Merge branch 'weekly/5' of https://github.com/kakao-tech-campus-2nd-s…
suhyeon7497 Oct 4, 2024
be39b8b
[feat] place 정보 반환 추가 및 카테고리 정보 추가
sanghee0820 Oct 4, 2024
52db3e3
[feat] 비디오 별 장소 조회로 변경
sanghee0820 Oct 4, 2024
8a89a19
[chore] Place 엔티티 필드 변경으로, 임시 주석처리
sanghee0820 Oct 4, 2024
9784d54
[test]: 단일 비디오 정보 조회변경 및 카테고리 정보 추가
sanghee0820 Oct 4, 2024
56c472e
[refactor] AccessLevel을 static import로 수정
wndlthsk Oct 4, 2024
8ede26a
Merge pull request #28 from kakao-tech-campus-2nd-step3/feat/#7-place
sanghee0820 Oct 4, 2024
7738f1d
Merge pull request #32 from kakao-tech-campus-2nd-step3/feat/#2-autho…
sanghee0820 Oct 4, 2024
f5862b1
[feat] 코드 최신화
Oct 4, 2024
5f76bdf
Merge pull request #30 from kakao-tech-campus-2nd-step3/refactor/#29-…
sanghee0820 Oct 4, 2024
979c245
[refactor] weekly/5 충돌 해결
wndlthsk Oct 4, 2024
19339a6
Merge branch 'weekly/5' of https://github.com/kakao-tech-campus-2nd-s…
sanghee0820 Oct 4, 2024
cef55b7
[refactor] builder 삭제로 테스트코드 주석 처리
sanghee0820 Oct 4, 2024
1f4b1f6
[test] 필드 변경 및 접근제어 수정으로 인한 테스트코드 주석 처리
sanghee0820 Oct 4, 2024
c71e1aa
Merge pull request #31 from wndlthsk/Master
sanghee0820 Oct 4, 2024
e81ae55
Merge pull request #27 from kakao-tech-campus-2nd-step3/feat/#20-infl…
sanghee0820 Oct 4, 2024
cd5e1dd
Merge pull request #33 from kakao-tech-campus-2nd-step3/feat/#9-summa…
sanghee0820 Oct 4, 2024
401f12f
[feat] 필요 없는 클래스 삭제
sanghee0820 Oct 4, 2024
9ced153
Merge pull request #34 from kakao-tech-campus-2nd-step3/weekly/5
sanghee0820 Oct 4, 2024
5bea7c2
Merge pull request #35 from kakao-tech-campus-2nd-step3/develop
sanghee0820 Oct 4, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 35 additions & 18 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
@@ -1,50 +1,53 @@
name: Java CI with Gradle

# Master, develop 브랜치에 push 혹은 pull request가 발생할 경우 동작한다.
# Master, develop, weekly/* 브랜치에 push가 발생할 경우 동작한다.
on:
push:
branches: [ "Master", "develop" ]
pull_request:
branches: [ "Master", "develop" ]
branches: [ "Master", "develop", "weekly/*" ]

permissions:
contents: read

jobs:
# Spring Boot 애플리케이션을 빌드하여 도커허브에 푸시하는 과정
build-docker-image:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
# 1. Java 17 세팅
# Java 17 세팅
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

# Gradle Wrapper 파일 실행 권한 주기
- name: Run chmod to make gradlew executable
run: chmod +x ./gradlew

# 2. Spring Boot 애플리케이션 빌드
# Spring Boot 애플리케이션 빌드
- name: Build with Gradle
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1
with:
arguments: clean bootJar

# 3. Docker 이미지 빌드
# 테스트 실행
# - name: Run tests
# run: ./gradlew test

# Docker 이미지 빌드
- name: docker image build
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/inplace .

# 4. DockerHub 로그인
# DockerHub 로그인
- name: docker login
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}

# 5. Docker Hub 이미지 푸시
# Docker Hub 이미지 푸시
- name: docker Hub push
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/inplace

Expand All @@ -55,23 +58,37 @@ jobs:
needs: build-docker-image
runs-on: self-hosted

# weekly/* 브랜치에서는 실행되지 않도록 조건 추가
if: startsWith(github.ref, 'refs/heads/Master') || startsWith(github.ref, 'refs/heads/develop')

steps:
# 1. 최신 이미지를 pull
# 최신 이미지를 pull
- name: docker pull
run: sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/inplace

# 2. 기존의 컨테이너를 중지
# 기존의 컨테이너를 중지
- name: docker stop container
run: sudo docker stop $(sudo docker ps -q) 2>/dev/null || true

# 3. 브랜치에 따라 다른 환경 변수를 설정하여 컨테이너 실행
# .env 파일 생성
- name: Create .env file
run: |
echo "KAKAO_CLIENT_ID=${{ secrets.KAKAO_CLIENT_ID }}" >> .env
echo "KAKAO_CLIENT_SECRET=${{ secrets.KAKAO_CLIENT_SECRET }}" >> .env
echo "KAKAO_REDIRECT_URI=${{ secrets.KAKAO_REDIRECT_URI }}" >> .env
echo "JWT_SECRET=${{ secrets.JWT_SECRET }}" >> .env
echo "JWT_ACCESS_TOKEN_EXPIRED_TIME=${{ secrets.JWT_ACCESS_TOKEN_EXPIRED_TIME }}" >> .env
echo "JWT_REFRESH_TOKEN_EXPIRED_TIME=${{ secrets.JWT_REFRESH_TOKEN_EXPIRED_TIME }}" >> .env

# 브랜치에 따라 다른 환경 변수를 설정하여 컨테이너 실행
- name: docker run new container
run: |
if [ "${{ github.ref }}" == "refs/heads/master" ]; then
sudo docker run --name inplace --rm -d -p 8080:8080 ${{ secrets.DOCKERHUB_USERNAME }}/inplace
if [ "${{ github.ref }}" == "refs/heads/Master" ]; then
sudo docker run --name inplace --rm -d -p 8080:8080 --env-file .env ${{ secrets.DOCKERHUB_USERNAME }}/inplace
elif [ "${{ github.ref }}" == "refs/heads/develop" ]; then
sudo docker run --name inplace-dev --rm -d -p 8081:8080 ${{ secrets.DOCKERHUB_USERNAME }}/inplace

# 4. 미사용 이미지를 정리
sudo docker run --name inplace-dev --rm -d -p 8081:8080 --env-file .env ${{ secrets.DOCKERHUB_USERNAME }}/inplace
fi

# 미사용 이미지를 정리
- name: delete old docker image
run: sudo docker system prune -f
9 changes: 7 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,11 @@ gradle-app.setting
### Gradle Patch ###
# Java heap dump
*.hprof
*.yaml

# End of https://www.toptal.com/developers/gitignore/api/macos,java,intellij,gradle
.env
/src/test/resources/application-test.yaml

# CommandLineRunner for loading dummy data
src/main/java/team7/inplace/place/config/DataLoader.java

# End of https://www.toptal.com/developers/gitignore/api/macos,java,intellij,gradle
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "src/main/resources/InplaceSecurity"]
path = src/main/resources/InplaceSecurity
url = https://github.com/suhyeon7497/InplaceSecurity.git
17 changes: 17 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Dockerfile

# jdk17 Image Start
#FROM --platform=linux/amd64 ubuntu:latest
FROM openjdk:17

# 인자 설정 - Jar_File
ARG JAR_FILE=build/libs/*.jar

# jar 파일 복제
COPY ${JAR_FILE} app.jar

# 인자 설정 부분과 jar 파일 복제 부분 합쳐서 진행해도 무방
#COPY build/libs/*.jar app.jar

# 실행 명령어
ENTRYPOINT ["java", "-jar", "app.jar"]
9 changes: 2 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
# Team7_BE

## Project Version
- Spring Boots 3.3.3
- Java 17 LTS

---
## 리뷰 요청
### PlaceControllerTest
- Mock을 사용하여 테스트를 진행했는데, 적절히 사용했는지 잘 모르겠습니다.
- PlaceService를 mock, PlaceController를 InjectedMocks로 지정했는데 블로그 찾아보니 사람마다 조금씩 달라 적절한지 궁금합니다.
- Spring Boots 3.3.3
- Java 17 LTS
47 changes: 26 additions & 21 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,41 +1,46 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.3.3'
id 'io.spring.dependency-management' version '1.1.6'
id 'java'
id 'org.springframework.boot' version '3.3.3'
id 'io.spring.dependency-management' version '1.1.6'
}

group = 'inplace'
version = '0.0.1-SNAPSHOT'

java {
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
toolchain {
languageVersion = JavaLanguageVersion.of(17)
}
}

configurations {
compileOnly {
extendsFrom annotationProcessor
}
compileOnly {
extendsFrom annotationProcessor
}
}

repositories {
mavenCentral()
mavenCentral()
}

dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'


testImplementation 'org.springframework.boot:spring-boot-starter-test'
runtimeOnly 'com.mysql:mysql-connector-j'
runtimeOnly 'com.h2database:h2'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'io.jsonwebtoken:jjwt-api:0.12.3'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.12.3'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.12.3'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.0.3'

testImplementation 'org.springframework.boot:spring-boot-starter-test'
runtimeOnly 'com.mysql:mysql-connector-j'
runtimeOnly 'com.h2database:h2'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

tasks.named('test') {
useJUnitPlatform()
useJUnitPlatform()
}
8 changes: 5 additions & 3 deletions src/main/java/team7/inplace/InplaceApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,14 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;

@SpringBootApplication
@ConfigurationPropertiesScan
public class InplaceApplication {

public static void main(String[] args) {
SpringApplication.run(InplaceApplication.class, args);
}
public static void main(String[] args) {
SpringApplication.run(InplaceApplication.class, args);
}

}
13 changes: 13 additions & 0 deletions src/main/java/team7/inplace/cicd/TestController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package team7.inplace.cicd;

import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
@GetMapping("/cicd")
public ResponseEntity test() {
return ResponseEntity.ok("ci/cd 테스트2");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package team7.inplace.crawling.application;

import java.util.Objects;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import team7.inplace.crawling.client.KakaoMapClient;
import team7.inplace.crawling.client.YoutubeClient;
import team7.inplace.crawling.persistence.YoutubeChannelRepository;

@Slf4j
@Service
@RequiredArgsConstructor
public class YoutubeCrawlingService {
private final YoutubeChannelRepository youtubeChannelRepository;
private final YoutubeClient youtubeClient;
private final KakaoMapClient kakaoMapClient;

/*
1. 유튜브 채널 정보를 모두 가져온다.
2. 마지막 비디오와, 유튜브 UUID를 이용하여 비디오 정보를 가져온다.
3. 마지막 비디오 UUID를 업데이트 한다.
4. 카카오 API를 호출해 장소 정보를 가져온다
*/
public void crawlAllVideos() {
var youtubeChannels = youtubeChannelRepository.findAll();
for (var channel : youtubeChannels) {
var rawVideoInfos = youtubeClient.getVideos(channel.getPlayListUUID(), channel.getLastVideoUUID());
channel.updateLastVideoUUID(rawVideoInfos.get(0).videoId());

var videos = rawVideoInfos.stream()
.map(rawVideoInfo -> kakaoMapClient.search(rawVideoInfo, channel.getChannelType().getCode()))
.filter(Objects::nonNull)
.toList();
}
}
}

58 changes: 58 additions & 0 deletions src/main/java/team7/inplace/crawling/client/KakaoMapClient.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
package team7.inplace.crawling.client;

import com.fasterxml.jackson.databind.JsonNode;
import java.util.Objects;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate;
import team7.inplace.crawling.client.dto.RawPlace;
import team7.inplace.crawling.client.dto.RawVideoInfo;
import team7.inplace.global.kakao.config.KakaoApiProperties;

@Slf4j
@Component
@RequiredArgsConstructor
public class KakaoMapClient {
private static final String KAKAO_MAP_LOCATE_SEARCH_URL = "https://dapi.kakao.com/v2/local/search/keyword.json";
private static final String KAKAO_MAP_LOCATE_SEARCH_PARAMS = "?query=%s&sort=accuracy&page=1&size=15";
private static final String KAKAO_MAP_PLACE_SEARCH_URL = "https://place.map.kakao.com/main/v/";
private final KakaoApiProperties kakaoApiProperties;
private final RestTemplate restTemplate;

public RawPlace.Info search(RawVideoInfo videoInfo, String category) {
var address = videoInfo.address();
var locationInfo = getLocateInfo(address, category);
var placeId = locationInfo.has("documents") ?
locationInfo.get("documents").get(0).get("id").asText() : null;
if (Objects.isNull(placeId)) {
return null;
}

var placeInfo = getPlaceInfo(placeId);
return RawPlace.Info.from(locationInfo, placeInfo);
}

private JsonNode getLocateInfo(String address, String category) {
var url = KAKAO_MAP_LOCATE_SEARCH_URL + KAKAO_MAP_LOCATE_SEARCH_PARAMS.formatted(address);
url = url + (Objects.isNull(category) ? "" : "&category_group_code=" + category);

HttpHeaders headers = new HttpHeaders();
headers.set("Authorization", kakaoApiProperties.getAuthorization());
HttpEntity<String> entity = new HttpEntity<>(headers);

ResponseEntity<JsonNode> response = restTemplate.exchange(url, HttpMethod.GET, entity, JsonNode.class);
return response.getBody();
}

private JsonNode getPlaceInfo(String placeId) {
var url = KAKAO_MAP_PLACE_SEARCH_URL + placeId;

ResponseEntity<JsonNode> response = restTemplate.getForEntity(url, JsonNode.class);
return response.getBody();
}
}
Loading
Loading