Skip to content
Merged

CICD #42

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
122 commits
Select commit Hold shift + click to select a range
de2a813
test
rudeore-098 Jan 9, 2025
84ca901
Merge pull request #2 from rudeore-098/main
rudeore-098 Jan 9, 2025
ccfc9c4
Update issue templates
leesumin0526 Jan 9, 2025
b87db66
Create PULL_REQUEST_TEMPLATE
leesumin0526 Jan 9, 2025
ee60770
Rename PULL_REQUEST_TEMPLATE to PULL_REQUEST_TEMPLATE.md
leesumin0526 Jan 9, 2025
47d1c26
[feat/#4] 디렉토리 구조 설정
rudeore-098 Jan 10, 2025
c20cc3c
[feat/#4] 응답 코드 구현
rudeore-098 Jan 10, 2025
b50ca6b
[Feat/#4] api 공통 응답
rudeore-098 Jan 10, 2025
d4f57d5
[FEAT/#5] Domain 작성중
leesumin0526 Jan 10, 2025
49fe186
[FEAT/#5] Domain 수정 & s3 의존성 주입
leesumin0526 Jan 10, 2025
ddd2718
Merge branch 'main' into feat/#5-domain-작성
leesumin0526 Jan 10, 2025
cdf2142
Merge remote-tracking branch 'upstream/dev' into feat/#5-domain-작성
leesumin0526 Jan 10, 2025
847d2ce
[Feat] Swagger 세팅
jjaeroong Jan 10, 2025
b59949e
Update README.md
rudeore-098 Jan 10, 2025
cf2aaee
Update README.md
rudeore-098 Jan 10, 2025
c6bca4f
[FEAT/#5] S3 설정 완료
leesumin0526 Jan 10, 2025
fea39b4
[Feat] Swagger 세팅
jjaeroong Jan 10, 2025
f957b50
Merge branch 'dev' into feat/#5-domain-작성
leesumin0526 Jan 10, 2025
6703cca
Merge pull request #8 from leesumin0526/feat/#5-domain-작성
leesumin0526 Jan 10, 2025
d805aae
[FIX] AmazonConfig import 에러 해결
leesumin0526 Jan 10, 2025
6370837
[feat/#9] security 의존성 추가
rudeore-098 Jan 12, 2025
2c4684d
[feat/#1o] config 등록
rudeore-098 Jan 15, 2025
44ec08d
[feat/#10] config 등록
rudeore-098 Jan 15, 2025
8e3b649
[feat/#10] oauth2의존성 추가
rudeore-098 Jan 15, 2025
b8a65e0
[feat/#10] 회원가입 DTO 추가
rudeore-098 Jan 17, 2025
54f82a9
[feat/#10] 로그인 회원가입 로그인구현
rudeore-098 Jan 17, 2025
0125526
[feat/#9] jwt 의존성 추가
rudeore-098 Jan 17, 2025
96d2646
[MOD] domain 수정 (#11)
leesumin0526 Jan 18, 2025
4066c2c
[FIX] 팟 모집 기한 필드 PotRecruitmentDetails로 이동 & User 필드 수정
leesumin0526 Jan 18, 2025
e0ad439
[FIX] SecurityConfig 의존성 주입
leesumin0526 Jan 18, 2025
fec99f9
[feat/#9] jwt 토큰 발급 ( 회원가입 미완성 )
rudeore-098 Jan 18, 2025
1ea34e8
[feat/#9] 충돌 병합
rudeore-098 Jan 18, 2025
c9593bb
[feat/#9] jwt token 구현
rudeore-098 Jan 18, 2025
bed7ea9
[Feat] 카카오 로그인 및 JWT 토큰
rudeore-098 Jan 18, 2025
b3a3fae
[Feat] 팟 삭제/수정 API
jjaeroong Jan 18, 2025
07471a3
[ADD] SecurityConfig JwtAuthenticationFilter 연결
rudeore-098 Jan 18, 2025
149a714
Merge branch 'dev' of https://github.com/STACKPOT/STACKPOT-BE into fe…
rudeore-098 Jan 18, 2025
a1a3f19
[ADD] domain user 추가
rudeore-098 Jan 18, 2025
d518230
[ADD] config 수정
rudeore-098 Jan 18, 2025
63281da
Feat/#9 login
rudeore-098 Jan 18, 2025
4419e4e
Merge branch 'dev' of https://github.com/STACKPOT/STACKPOT-BE into fe…
jjaeroong Jan 18, 2025
5b1f3e1
[ADD] access token 구현
rudeore-098 Jan 20, 2025
d0d3614
[ADD] access token
rudeore-098 Jan 20, 2025
2fd8889
[FEAT]: � crud
jjaeroong Jan 20, 2025
4e8352d
[FEAT]: � crud
jjaeroong Jan 20, 2025
f076276
[Feat] Pot Cud API
jjaeroong Jan 20, 2025
1dc900e
[Feat] POT 생성/삭제/수정 API 구현
jjaeroong Jan 20, 2025
3d80321
[ADD] token secret key지정
rudeore-098 Jan 21, 2025
57b28c2
Feat/#9 login
rudeore-098 Jan 21, 2025
9ec5df6
Merge branch 'dev' of https://github.com/STACKPOT/STACKPOT-BE
rudeore-098 Jan 21, 2025
452368d
dev 변경사항 병합
rudeore-098 Jan 21, 2025
8b3d105
[MOD] 헤더 토큰 수정
jjaeroong Jan 21, 2025
16bf6c3
[MOD] 헤더 토큰 수정
jjaeroong Jan 21, 2025
a306b55
[FEAT/#17] 회원가입 서비스 구현
rudeore-098 Jan 21, 2025
0f68275
[FEAT/#17] dev 병합
rudeore-098 Jan 21, 2025
0dead00
[FEAT/#17] 회원가입 구현
rudeore-098 Jan 21, 2025
ccb8e04
[FEAT#17] signup 회원가입 구현
rudeore-098 Jan 21, 2025
3dd3816
변경사항
rudeore-098 Jan 21, 2025
95959e0
변경사항
rudeore-098 Jan 21, 2025
16aad72
[MOD] 팟 지원하기 API 수정
jjaeroong Jan 21, 2025
c57f1d5
Merge branch 'dev' of https://github.com/STACKPOT/STACKPOT-BE into fe…
jjaeroong Jan 21, 2025
aec13f0
[FEAT/#20] Converter 생성
rudeore-098 Jan 21, 2025
489e9e6
[FEAT/#20] feed view 구현 완료
rudeore-098 Jan 22, 2025
315dcd8
[FEAT/#20] feed view 구현 완료
rudeore-098 Jan 22, 2025
6a6adca
Feat/#20 feed view 구현
rudeore-098 Jan 22, 2025
c4963a3
[FEAT/#21] feed 작성 api 구현 완료
rudeore-098 Jan 22, 2025
4849ff4
[FEAT/#21] feed 작성 api 구현 완료
rudeore-098 Jan 22, 2025
882bb52
[FEAT/#22] service 정의
rudeore-098 Jan 22, 2025
1d98598
[FEAT/#22] feed 좋아요 추가 api 완료
rudeore-098 Jan 22, 2025
e53de23
[FEAT/#22] feed 좋아요 추가 api 완료
rudeore-098 Jan 22, 2025
e50c7fe
[MOD/#22] feed domain 수정
rudeore-098 Jan 23, 2025
4f86a18
[FEAT/#22] feed save 메세지 추가
rudeore-098 Jan 23, 2025
1e4df7c
[FEAT/#22] feed like save
rudeore-098 Jan 23, 2025
ac45fca
[FEAT/#24] feed detail 뷰, 수정 추가
rudeore-098 Jan 23, 2025
f59c7e2
FEAT feed api 구현
rudeore-098 Jan 23, 2025
2f591d0
[ADD] application.yml 리다이렉트 수정
rudeore-098 Jan 24, 2025
9695760
Feat/#12 전체 팟 파트 구현 (#26)
leesumin0526 Jan 24, 2025
4b3ff3f
[ADD] feed api 응답 코드 수정
rudeore-098 Jan 24, 2025
af0ec3b
[ADD] feed api 응답 코드 수정
rudeore-098 Jan 24, 2025
20c96f0
[FEAT]: 팟 지원하기 및 팟 시작하기
jjaeroong Jan 24, 2025
05354ee
Merge branch 'dev' of https://github.com/STACKPOT/STACKPOT-BE into fe…
jjaeroong Jan 24, 2025
d803639
[Refactor] 카카로 로그인 로직 변경
rudeore-098 Jan 24, 2025
4026cbb
[MOD]: Role 형식 수정
jjaeroong Jan 24, 2025
b729661
[MOD]: Role 형식 수정
jjaeroong Jan 24, 2025
448a54f
[Refactor] 토큰 발급
rudeore-098 Jan 24, 2025
95fc455
[MERGE] dev
rudeore-098 Jan 24, 2025
b089a87
[Refactor] kakao login 수정
rudeore-098 Jan 24, 2025
20b8a16
[FEAT]: 팟 지원자 목록 가져오기
jjaeroong Jan 24, 2025
351d5c7
Merge branch 'dev' of https://github.com/STACKPOT/STACKPOT-BE into fe…
jjaeroong Jan 24, 2025
014d27d
[FEAT]: 팟 지원자 목록 가져오기
jjaeroong Jan 24, 2025
471b6c7
Feat/merge용 (#33)
leesumin0526 Jan 25, 2025
ecac215
[Mod] api 수정 (#34)
leesumin0526 Jan 25, 2025
71d2a3f
[MOD] 닉네임 변환
leesumin0526 Jan 25, 2025
c674dd6
[FEAT] : 나의 끓인 팟 목록 조회하기
jjaeroong Jan 25, 2025
593d667
[FEAT]: 나의 끓인 팟 가져오기
jjaeroong Jan 25, 2025
5e29f8a
[FEAT] : 나의 끓인 팟 목록 조회하기
jjaeroong Jan 25, 2025
bb1d1a6
[FEAT] task 컨트롤러 추가
rudeore-098 Jan 26, 2025
a392856
[MERGE] dev
rudeore-098 Jan 26, 2025
1faffa1
[FEAT] my pot task 생성 구현
rudeore-098 Jan 26, 2025
8811ca5
[FEAT]: 팟/피드 검색하기
jjaeroong Jan 26, 2025
18c5ce6
Merge branch 'dev' of https://github.com/STACKPOT/STACKPOT-BE into fe…
jjaeroong Jan 26, 2025
d8baf5a
✨[FEAT]: 팟/피드 검색하기
jjaeroong Jan 26, 2025
551956e
[FEAT] my pot task 수정 / 삭제 / 자세히 보기 구현
rudeore-098 Jan 26, 2025
bd6ea47
[FEAT] 닉네임 생성 api 구현 (질문 수정 필요)
rudeore-098 Jan 26, 2025
2675bd6
Merge branch 'dev' of https://github.com/STACKPOT/STACKPOT-BE
rudeore-098 Jan 26, 2025
a54eeb9
[MOD]: gradle modified and cursor error fix
jjaeroong Jan 26, 2025
f148a88
Merge pull request #38 from jjaeroong/feat/Pot-Feed-Search
jjaeroong Jan 26, 2025
b4c8423
[MERGE] dev
rudeore-098 Jan 26, 2025
bed38a2
[Feat] 에러 처리 (#39)
leesumin0526 Jan 26, 2025
3deb9e9
[MERGE] dev
rudeore-098 Jan 26, 2025
41f4ee8
[MOD] yml 수정
leesumin0526 Jan 26, 2025
7a91c61
[MERGE] dev
rudeore-098 Jan 26, 2025
d74dc66
Merge branch 'dev' of https://github.com/STACKPOT/STACKPOT-BE
rudeore-098 Jan 26, 2025
1f037e6
[FEAT] 나의 팟 api 구현
rudeore-098 Jan 26, 2025
dd30a65
[MOD] API명 수정
leesumin0526 Jan 26, 2025
d46b73b
Create gradle.yml
jjaeroong Jan 27, 2025
f65ee91
[FEAT]: 도커 파일 생성
jjaeroong Jan 27, 2025
abc53cf
[FEAT]: 도커 파일 생성
jjaeroong Jan 27, 2025
f65df49
[FEAT] task response dto 수정
rudeore-098 Jan 27, 2025
4265e2e
[FEAT] 로그인 리다이렉트 추가
rudeore-098 Jan 27, 2025
5200478
[MERG] dev
rudeore-098 Jan 27, 2025
58d71e7
[FEAT] task 기능 구현, 로그인 리다이렉트 설정
rudeore-098 Jan 27, 2025
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
22 changes: 22 additions & 0 deletions .github/ISSUE_TEMPLATE/bug-report-template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
---
name: Bug Report Template
about: 버그 리포트 이슈 템플릿
title: "[BUG/#이슈번호] 이슈 내용"
labels: ''
assignees: ''

---

## 어떤 버그인가요?

> 어떤 버그인지 간결하게 설명해주세요

## 어떤 상황에서 발생한 버그인가요?

> (가능하면) Given-When-Then 형식으로 서술해주세요

## 예상 결과

> 예상했던 정상적인 결과가 어떤 것이었는지 설명해주세요

## 참고할만한 자료(선택)
20 changes: 20 additions & 0 deletions .github/ISSUE_TEMPLATE/feature-template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
name: Feature Template
about: 기능 추가 이슈 템플릿
title: "[타입/#이슈번호] 이슈 내용"
labels: ''
assignees: ''

---

## 어떤 기능인가요?

> 추가하려는 기능에 대해 간결하게 설명해주세요

## 작업 상세 내용

- [ ] TODO
- [ ] TODO
- [ ] TODO

## 참고할만한 자료(선택)
14 changes: 14 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
### PR 타입(하나 이상의 PR 타입을 선택해주세요)
-[] 기능 추가
-[] 기능 삭제
-[] 버그 수정
-[] 의존성, 환경 변수, 빌드 관련 코드 업데이트

### 반영 브랜치
ex) feat/login -> dev

### 작업 내용
ex) 로그인 시, 구글 소셜 로그인 기능을 추가했습니다.

### 테스트 결과
ex) 베이스 브랜치에 포함되기 위한 코드는 모두 정상적으로 동작해야 합니다. 결과물에 대한 스크린샷, GIF, 혹은 라이브
67 changes: 67 additions & 0 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: Java CI with Gradle

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]

jobs:
build-docker-image:
runs-on: ubuntu-latest
permissions:
contents: read

steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@417ae3ccd767c252f5661f1ace9f835f9654f2b5 # v3.1.0

- name: Grant execute permission for gradlew
run: chmod +x gradlew

# Spring Boot 어플리케이션 Build
- name: Build with Gradle Wrapper
run: ./gradlew build

# Docker 이미지 Build
- name: docker image build
run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/spring-cicd-test .

# DockerHub Login (push 하기 위해)
- name: docker login
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_PASSWORD }}

# Docker hub 로 push
- name: Docker Hub push
run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/spring-cicd-test

# 위 과정에서 푸시한 이미지를 ec2에서 풀받아서 실행
run-docker-image-on-ec2:
needs: build-docker-image
runs-on: self-hosted

steps:
- name: docker pull
run : sudo docker pull ${{ secrets.DOCKERHUB_USERNAME }}/spring-cicd-test

- name: docker stop container
run: |
if [ $(sudo docker ps -a -q -f name=spring-cicd-test) ]; then
sudo docker stop spring-cicd-test
fi

- name: docker run new container
run: sudo docker run --rm -it -d -p 80:8080 --name spring-cicd-test ${{ secrets.DOCKERHUB_USERNAME }}/spring-cicd-test

- name: delete old docker image
run: sudo docker system prune -f
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,7 @@ out/

### VS Code ###
.vscode/

.env
application-secrets.yml.DS_Store
.DS_Store
11 changes: 11 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#FR open jdk 11 버전의 환경을 구성
FROM eclipse-temurin:17

# build가 되는 시점에 JAR_FILE이라는 변수 명에 build/libs/*.jar 선언
# build/libs - gradle로 빌드했을 "때 jar 파일이 생성되는 경로
ARG JAR_FILE=build/libs/*.jar

# JAR_FILE을 app.jar로 복사
COPY ${JAR_FILE} app.jar

ENTRYPOINT ["java", "-jar", "/app.jar"]
112 changes: 111 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,112 @@
# STACKPOT-BE
STACKPOT-BE

## Commit Convention
- **[FEAT]** : 새로운 기능 구현
- **[MOD]** : 코드 수정 및 내부 파일 수정
- **[ADD]** : 부수적인 코드 추가 및 라이브러리 추가, 새로운 파일 생성
- **[CHORE]** : 버전 코드 수정, 패키지 구조 변경, 타입 및 변수명 변경 등의 작은 작업
- **[DEL]** : 쓸모없는 코드나 파일 삭제
- **[UI]** : UI 작업
- **[FIX]** : 버그 및 오류 해결
- **[HOTFIX]** : issue나 QA에서 문의된 급한 버그 및 오류 해결
- **[MERGE]** : 다른 브랜치와의 MERGE
- **[MOVE]** : 프로젝트 내 파일이나 코드의 이동
- **[RENAME]** : 파일 이름 변경
- **[REFACTOR]** : 전면 수정
- **[DOCS]** : README나 WIKI 등의 문서 개정

- ---

**📌 형식**:

- `[커밋 타입/#이슈번호] 커밋 내용`

**📌 예시**

- `[feat/#32] User 도메인 구현`
- `[feat/#32] User 필드값 annotation 추가`

## Branch Convention
1. **이슈 파기**

**📌 형식**

`[타입/#이슈번호] 이슈 내용`

**📌 예시**

- `[Feat/#11] User 도메인 구현`
- `[Refactor/#2] User 관련 DTO 수정`
2. **브랜치 파기**

**📌 형식**

- `유형/#이슈번호-what`

**📌 예시**

- `feat/#11-login-view-ui`
1. **PR 올리기**

**📌 형식**

- `[유형] where / what`

**📌 예시**

- `[FEAT] 로그인 뷰 / UI 구현`

**📌 PR Convention**

```
### PR 타입(하나 이상의 PR 타입을 선택해주세요)
-[] 기능 추가
-[] 기능 삭제
-[] 버그 수정
-[] 의존성, 환경 변수, 빌드 관련 코드 업데이트

### 반영 브랜치
ex) feat/login -> dev

### 변경 사항
ex) 로그인 시, 구글 소셜 로그인 기능을 추가했습니다.

### 테스트 결과
ex) 베이스 브랜치에 포함되기 위한 코드는 모두 정상적으로 동작해야 합니다. 결과물에 대한 스크린샷, GIF, 혹은 라이브
```
## PR Convention
**📌 형식**

- `[유형/#이슈번호] where / what`

**📌 예시**

- `[FEAT/#3] 로그인 뷰 / UI 구현`

**📌 PR 프로세스**

1. **PR 생성**: 작업을 완료한 후, 변경 사항을 설명하는 PR을 생성합니다.
2. **코드 리뷰 요청**: PR이 생성되면 팀원들에게 코드 리뷰를 요청합니다.
3. **코드 리뷰 진행**: 리뷰어는 코드를 검토하고 피드백을 제공합니다.
4. **피드백 대응**: PR 작성자는 리뷰어의 피드백을 반영하여 코드를 수정합니다.
5. **리뷰어 동의**: 리뷰어는 수정된 코드를 다시 검토하고 동의합니다.
6. **PR 병합**: 필요한 승인 수가 충족되면, PR을 메인 브랜치에 병합합니다.

**📌 PR 템플릿**

```
### PR 타입(하나 이상의 PR 타입을 선택해주세요)
-[] 기능 추가
-[] 기능 삭제
-[] 버그 수정
-[] 의존성, 환경 변수, 빌드 관련 코드 업데이트

### 반영 브랜치
ex) feat/login -> dev

### 작업 내용
ex) 로그인 시, 구글 소셜 로그인 기능을 추가했습니다.

### 테스트 결과
ex) 베이스 브랜치에 포함되기 위한 코드는 모두 정상적으로 동작해야 합니다. 결과물에 대한 스크린샷, GIF, 혹은 라이브
```
52 changes: 50 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
plugins {
id 'java'
id 'org.springframework.boot' version '3.4.1'
id 'org.springframework.boot' version '3.3.6'
id 'io.spring.dependency-management' version '1.1.7'
}

Expand All @@ -24,15 +24,63 @@ repositories {
}

dependencies {
// Spring Boot Core
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-validation'

// Lombok
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.mysql:mysql-connector-j'
annotationProcessor 'org.projectlombok:lombok'

// Database
runtimeOnly 'com.mysql:mysql-connector-j'
runtimeOnly 'mysql:mysql-connector-java:8.0.33'

// Spring Security
implementation 'org.springframework.boot:spring-boot-starter-security'
testImplementation 'org.springframework.security:spring-security-test'
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'

// Thymeleaf Security Integration
implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity6:3.1.1.RELEASE'

// Swagger/OpenAPI
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0'

// AWS Integration
implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE'

// JWT
implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-impl:0.11.5'
runtimeOnly 'io.jsonwebtoken:jjwt-jackson:0.11.5'

// Test Dependencies
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'mysql:mysql-connector-java:8.0.33'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.security:spring-security-crypto'


implementation 'org.springframework.boot:spring-boot-starter-webflux'
implementation 'io.netty:netty-resolver-dns-native-macos:4.1.95.Final:osx-aarch_64'


//Email
implementation 'org.springframework.boot:spring-boot-starter-mail'
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.3.0'
implementation 'mysql:mysql-connector-java:8.0.33'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.security:spring-security-crypto'
//dotenv
implementation 'io.github.cdimascio:java-dotenv:5.2.2'


}


tasks.named('test') {
useJUnitPlatform()
}
6 changes: 5 additions & 1 deletion src/main/java/stackpot/stackpot/StackpotApplication.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
@EnableJpaAuditing
public class StackpotApplication {

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

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package stackpot.stackpot.Validation.annotation;

import jakarta.validation.Constraint;
import jakarta.validation.Payload;
import stackpot.stackpot.Validation.validator.RoleValidator;

import java.lang.annotation.*;

@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = RoleValidator.class)
@Documented
public @interface ValidRole {
String message() default "유효하지 않은 모집 역할입니다.";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package stackpot.stackpot.Validation.validator;

import jakarta.validation.ConstraintValidator;
import jakarta.validation.ConstraintValidatorContext;
import stackpot.stackpot.Validation.annotation.ValidRole;
import stackpot.stackpot.domain.enums.Role;

public class RoleValidator implements ConstraintValidator<ValidRole, String> {

@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
if (value == null || value.isEmpty()) {
return false;
}
try {
Role.valueOf(value.toUpperCase());
return true;
} catch (IllegalArgumentException e) {
return false;
}
}
}
Loading
Loading