Skip to content

Commit

Permalink
feat: v0.1 ๊ฐœ๋ฐœ (#95)
Browse files Browse the repository at this point in the history
* Feat/4_ci_setting (#6)

* Feat/4 add project setting (#5)

* feat: multimodule ๊ตฌ์กฐ ๋ณ€๊ฒฝ

web, api ๋ชจ๋“ˆ ํ†ตํ•ฉํ•ด api ๋ชจ๋“ˆ ํ•˜๋‚˜๋กœ ๊ตฌ์„ฑ (api ์„œ๋ฒ„)
์ „์ฒด api, domain, infra๋กœ ๋ชจ๋“ˆ ๊ตฌ์„ฑ

* feat: ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •

all open ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€
ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชจ๋“ˆ์— ๋งž์ถฐ ์œ„์น˜ ์กฐ์ •

* feat: code owners ์„ค์ • ์ถ”๊ฐ€

* ci default ์ ์šฉ

- ci default ์ ์šฉ

* feat: ci ์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„ ๋ณ€๊ฒฝ

- ci ์Šคํฌ๋ฆฝํŠธ ์ด๋ฆ„ ๋ณ€๊ฒฝ

---------

Co-authored-by: ์ด์ฑ„๋ฆฐ (Bryn) <67696767+cofls6581@users.noreply.github.com>

* chore: gradle.yml ์ œ๊ฑฐ

- ์ค‘๋ณต์œผ๋กœ ๋“ค์–ด๊ฐ„ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์ œ๊ฑฐ

* Feat/8 kotest mockk ์ถ”๊ฐ€ (#9)

* style: ์„ค์ • ์„ ์–ธ๋ฐฉ์‹ ๋ณ€๊ฒฝ

- tasks ๋กœ ๋ฌถ์–ด์„œ ๋ณ€๊ฒฝ
- include ํ•˜๋‚˜์˜ ๊ด„ํ˜ธ์— ์„ค์ •

* feat: kotest, mockk ์ถ”๊ฐ€

- kotest, mockk ์ถ”๊ฐ€

* Feate/10 swagger setting (#11)

* style: ์„ค์ • ์„ ์–ธ๋ฐฉ์‹ ๋ณ€๊ฒฝ

- tasks ๋กœ ๋ฌถ์–ด์„œ ๋ณ€๊ฒฝ
- include ํ•˜๋‚˜์˜ ๊ด„ํ˜ธ์— ์„ค์ •

* feat: kotest, mockk ์ถ”๊ฐ€

- kotest, mockk ์ถ”๊ฐ€

* feat: swagger ์ถ”๊ฐ€

- swagger ์ถ”๊ฐ€

* Feat/12 querydsl (#13)

* ci: ci ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋ช… ์ˆ˜์ •

- ci ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋ช… ์ˆ˜์ •
- build -> ๋ช…์‹œ์ ์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ ๋ณ€๊ฒฝ (develop ์—๋งŒ ๋ฐ˜์˜๋˜์–ด main ๋งž์ถฐ๋†“์Œ)

* feat: querydsl ์—ฐ๋™

- querydsl ์—ฐ๋™ (ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€, config ํŒŒ์ผ ์ถ”๊ฐ€ ๋“ฑ)

* feat: querydsl ์–ด๋…ธํ…Œ์ด์…˜ ๋ณ€๊ฒฝ

- component-> repository

---------

Co-authored-by: taesan <pawer02023@gmail.com>

* refactor: ktlint plugin ์ ์šฉ (#15)

* refactor: ktlint plugin ์ ์šฉ

- ktlint ์ ์šฉ๋˜์ง€ ์•Š์•„ plugins์— ์ถ”๊ฐ€ ํ•จ

* refactor: ๊ธฐ์กด ์ฝ”๋“œ ktlintFormat ์ผ๊ด„ ์ ์šฉ

- ๊ธฐ์กด ์ฝ”๋“œ ktlintFormat ์ผ๊ด„ ์ ์šฉ

* feat: cd ์„ธํŒ… (#17)

- ๊นƒํ—™์•ก์…˜์ฆˆ+๋„์ปค ์‚ฌ์šฉ

* Refactor/18 change package name (#19)

* refactor: ์„œ๋น„์Šค๋ช…์œผ๋กœ ํŒจํ‚ค์ง€๋ช… ๋ณ€๊ฒฝ

- muckpot์œผ๋กœ ๋ณ€๊ฒฝ

* refactor: cicd ์Šคํฌ๋ฆฝํŠธ ๋ฐ”๋€ ํŒจํ‚ค์ง€๋ช… ์ ์šฉ

- muckpot์œผ๋กœ ๋ฃจํŠธ ํŒจํ‚ค์ง€๋ช… ๋ณ€๊ฒฝ ๋ฐ˜์˜

* feat : BaseTimeEntity ์ƒ์„ฑ (#21)

* feat: .env ์„ค์ • (#24)

* feat: .env ์„ค์ •

- .env ์„ค์ • ํ›„ ๊ธฐ์กด ๋ฏผ๊ฐ์ •๋ณด ๊ฐ’ ๋งคํ•‘
- .envํŒŒ์ผ .gitignore์— ์ถ”๊ฐ€
- dev ํ”„๋กœํ•„ cicd ์Šคํฌ๋ฆฝํŠธ์—
.env ๋™๊ธฐํ™” ๋กœ์ง ์ถ”๊ฐ€

* feat: dev ํ”„๋กœํ•„ ์„ค์ •

* bug: dev port ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋ณ€๊ฒฝ

* Feat/22 create entity (#26)

* feat: .env ์„ค์ •

- .env ์„ค์ • ํ›„ ๊ธฐ์กด ๋ฏผ๊ฐ์ •๋ณด ๊ฐ’ ๋งคํ•‘
- .envํŒŒ์ผ .gitignore์— ์ถ”๊ฐ€
- dev ํ”„๋กœํ•„ cicd ์Šคํฌ๋ฆฝํŠธ์—
.env ๋™๊ธฐํ™” ๋กœ์ง ์ถ”๊ฐ€

* fix: yml ํŒŒ์ผ ์ˆ˜์ •

- api๋ชจ๋“ˆ profile ํ•„์š” ์—†์–ด์„œ ์ œ๊ฑฐ (active ์„ค์ •๋งŒ ํ•˜๋ฉด ๋จ)
- domain๋ชจ๋“ˆ application.yml ํ•„์š” ์—†์–ด์„œ ์ œ๊ฑฐ
- ๋กœ์ปฌ h2 ์„ค์ • mysql๋กœ ๋ณ€๊ฒฝ ํ•จ

* feat: noArg, ํ…Œ์ŠคํŠธ ์ปจํ…Œ์ด๋„ˆ ์ถ”๊ฐ€

- Entity ์ •์˜์‹œ noArg ํ•„์š”ํ•˜์—ฌ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€
- ํ…Œ์ŠคํŠธ ์ปจํ…Œ์ดํ„ฐ ๊ตฌ์ถ•

* feat: Entity ์ถ”๊ฐ€ ๋ฐ ๊ธฐ๋ณธ ํ…Œ์ŠคํŠธ

- Entity ์ถ”๊ฐ€ ๋ฐ ๊ธฐ๋ณธ ํ…Œ์ŠคํŠธ

* refactor: mariadb ๋ณ€๊ฒฝ

- mariadb ๋ณ€๊ฒฝ

* test: @SpringBootTest ์ œ๊ฑฐ

- ๋ชจ๋“ˆ์ด ๋ณ€๊ฒฝ๋˜๋ฉด์„œ ์˜๋ฏธ์—†์–ด ์ œ๊ฑฐ

* fix: ignore ์— mariadb volume ์ถ”๊ฐ€

- ignore ์— mariadb volume ์ถ”๊ฐ€

* refactor: ์–ด๋…ธํ…Œ์ด์…˜ ์ค‘๋ณต Retention ์„ ์–ธ ์ œ๊ฑฐ

- @DataJpaTest์— ํฌํ•จ๋˜์–ด ์ œ๊ฑฐ

* docs: db ์„œ๋น„์Šค ์ด๋ฆ„๋ณ€๊ฒฝ

- db ์„œ๋น„์Šค ์ด๋ฆ„๋ณ€๊ฒฝ

* feat: image_url, state ํ•„๋“œ ์ถ”๊ฐ€

- user.image_url ์ถ”๊ฐ€
- ๋ชจ๋“  Entity ์— state ์ถ”๊ฐ€
  - soft delete ์œ„ํ•จ

* refactor: OSIV false ์„ค์ •

- ์‹คํ–‰์‹œ ๊ฒฝ๊ณ  ๋– ์„œ false ์„ค์ •

* refactor: dev db rds ๋ณ€๊ฒฝ
- dev db rds ๋ณ€๊ฒฝ
- env file์— RDS ๊ด€๋ จ ๋ณ€์ˆ˜ ์ถ”๊ฐ€

---------

Co-authored-by: bryn <cofls6581@naver.com>

* feat: ๊ณตํ†ต ์‘๋‹ต ํฌ๋งท, ExceptionHandler ์ฒ˜๋ฆฌ (#28)

- ๊ณตํ†ต ์‘๋‹ต ํฌ๋งท ์ถ”๊ฐ€
- ExceptionHandler ์ฒ˜๋ฆฌ

* Feat/27 test fix (#29)

* chore: DB ์ €์žฅ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ˆ˜์ •

- DB ์ €์žฅ ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ˆ˜์ •

* chore: request ๋ฐ›๋„๋ก ์ˆ˜์ •

- request ๋ฐ›๋„๋ก ์ˆ˜์ •

* feat : 30 elasticache ์—ฐ๋™ (#31)

* feat: elasticache ์—ฐ๋™

- elasticache ์—ฐ๋™
- redis test code ์ž‘์„ฑ
- local, dev redis ์„ค์ • ๋ถ„๋ฆฌ

* refactor: ํ•„์š”์—†๋Š” ์ฝ”๋“œ ์ œ๊ฑฐ

* refactor: redisConfig ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* fix: ํ”„๋กœํ•„ ๋ชป์žก๋Š” ์—๋Ÿฌ ์ˆ˜์ •

* feat: logback ์„ค์ • ์ถ”๊ฐ€ (#33)

* feat: logback ์„ค์ • ์ถ”๊ฐ€

- logback ์„ค์ • ์ถ”๊ฐ€
- logback ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ๋กœ๊น… ์ถ”๊ฐ€

* chore: dev append ์ถ”๊ฐ€

- dev ์„ค์ •์— logํŒŒ์ผ appender ์ถ”๊ฐ€

* fix: ์ด์ „ ๋ฒ„์ „์œผ๋กœ ์ž˜๋ชป์˜ฌ๋ ค์„œ ์ตœ์‹ ํ™”

- ์ด์ „ ๋ฒ„์ „์œผ๋กœ ์ž˜๋ชป์˜ฌ๋ ค์„œ ์ตœ์‹ ํ™”

* feat: 32 ๋ฐฑ๋กœ๊ทธ ํŒŒ์ผ volume mount ์„ค์ • (#34)

* fix: ec2 ์„œ๋ฒ„์— ๋กœ๊ทธํŒŒ์ผ ์ƒ์„ฑ๋˜์ง€ ์•Š์•„ ์˜ต์…˜ ์ถ”๊ฐ€

- ๊ธฐ์กด์— ๋กœ๊ทธํŒŒ์ผ์ด ๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์— ์ƒ์„ฑ๋˜์–ด -v ์˜ต์…˜ ์ถ”๊ฐ€

* chore: ๊ฐœํ–‰ ํ•œ์นธ ์‚ญ์ œ

- ๊ฐœํ–‰ ํ•œ์นธ ์‚ญ์ œ

* feat: 35 login ๊ธฐ๋Šฅ ๊ตฌํ˜„ (#38)

* feat: Security ์ถ”๊ฐ€ ๋ฐ ์„ค์ •

- Security ์ถ”๊ฐ€ ๋ฐ ์„ค์ •

* feat: Jwt ๋ฐœ๊ธ‰ ๋ฐ ๊ฒ€์ฆ ๊ตฌํ˜„

- Jwt ๋ฐœ๊ธ‰ ๋ฐ ๊ฒ€์ฆ ๊ตฌํ˜„

* fix: ์„œ๋ธŒ์นดํ…Œ๊ณ ๋ฆฌ, ์ด๋ฏธ์ง€url nullable ๋ณ€๊ฒฝ

- ์„œ๋ธŒ์นดํ…Œ๊ณ ๋ฆฌ, ์ด๋ฏธ์ง€url nullable ๋ณ€๊ฒฝ

* feat: ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„

- ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ๊ตฌํ˜„

* feat: secret key ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋กœ ๊ด€๋ฆฌ

- secret key ํ™˜๊ฒฝ๋ณ€์ˆ˜ ๋กœ ๊ด€๋ฆฌ

* feat: ์ธ๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Security ๊ฐ์ฒด ์ •์˜

- ์ธ๊ฐ€ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ Security ๊ฐ์ฒด ์ •์˜

* feat: ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ์‹คํŒจ์‹œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

- ์ธ์ฆ ๋ฐ ์ธ๊ฐ€ ์‹คํŒจ์‹œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
- ์ธ์ฆ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ์ฒดํฌ๊ฐ€ ํ•„์š”ํ•˜์—ฌ EntryPoint ๊ตฌํ˜„
  - AccessDeniedHandler ๋Š” ์ธ์ฆ์ด ์•ˆ๋˜์—ˆ์œผ๋ฉด ํƒ€์ง€์•Š์Œ.

* feat: refresh ํ† ํฐ redis ์ €์žฅ ๊ตฌํ˜„

- key: email, value: refresh ํ† ํฐ

* feat: ๊ณตํ†ต ControllerAdvice ์ถ”๊ฐ€

- ๊ณตํ†ต ControllerAdvice ์ถ”๊ฐ€

* chore: ์„ฑ๊ณต message ์ œ์™ธ

- ์„ฑ๊ณต message ์ œ์™ธ

* chore: swagger ์ƒ˜ํ”Œ ์ถ”๊ฐ€

- swagger ์ƒ˜ํ”Œ ์ถ”๊ฐ€

* feat: ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ๊ตฌ์„ฑ ์ถ”๊ฐ€

- QueryDSL ํ…Œ์ŠคํŠธ ์œ„ํ•œ TestConfiguration ์ถ”๊ฐ€
- ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ์œ„ํ•ด api ๋ชจ๋“ˆ์—์„œ local ์ˆ˜ํ–‰๋˜๋„๋ก ์„ค์ •

* ci: ci/cd ์Šคํฌ๋ฆฝํŠธ์— docker-compose ์‹คํ–‰๋กœ์ง ์ถ”๊ฐ€

- ci/cd ์Šคํฌ๋ฆฝํŠธ์— docker-compose ์‹คํ–‰๋กœ์ง ์ถ”๊ฐ€

* fix: docker-compose ์—์„œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ œ๊ฑฐ

- docker-compose ์—์„œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ œ๊ฑฐ

* feat: permitAll ์˜ต์…˜ ์ถ”๊ฐ€

- ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ์ธ์ฆ์ฒ˜๋ฆฌ ์ œ์™ธ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์˜ต์…˜
- ๋ฐฐํฌ ์‹œ false ์œ ์ง€๋˜์–ด์•ผ ํ•จ

* chore: ๋””๋ฒ„๊น… ๋ ˆ๋ฒจ ์กฐ์ •

- ์ตœ์ดˆ ๋กœ๊ทธ์ธ ํ•  ๋•Œ Exception ๋ฉ”์‹œ์ง€ ์ถœ๋ ฅ๋˜์–ด info ๋ณ€๊ฒฝ
- ์˜ˆ์™ธ ํ™•์ธ์€ debug ๋ ˆ๋ฒจ๋กœ ์ถ”๊ฐ€

* fix: ๋น„๋กœ๊ทธ์ธ ์œ ์ € ๊ฐ€๋Šฅ api ์ถ”๊ฐ€ (#39)

- ํšŒ์›๊ฐ€์ž…, ์ด๋ฉ”์ผ ์ธ์ฆ, ์ด๋ฉ”์ผ ์ „์†ก

* feat: 37 ํšŒ์›๊ฐ€์ž… ์ด๋ฉ”์ผ ์ธ์ฆ ๊ตฌํ˜„ (#40)

* feat: ์ด๋ฉ”์ผ ์ธ์ฆ ์š”์ฒญ API ์ดˆ์•ˆ

- google smtp ์—ฐ๋™
- ์ธ์ฆ ๋ฒˆํ˜ธ ๋‚œ์ˆ˜ ์ƒ์„ฑ
- redis ์„œ๋ฒ„์— ์ธ์ฆ ๋ฒˆํ˜ธ ์ €์žฅ
- JavaMailSender๋ฅผ ํ†ตํ•œ ์ด๋ฉ”์ผ ์ „์†ก

* feat: ๋ฐœ์‹ ์ž ์ด๋ฉ”์ผ ๋ณ€๊ฒฝ

* feat: ์ž”์กดํ•œ ์œ ํšจ ์ธ์ฆ ์š”์ฒญ ์ฒ˜๋ฆฌ ์ถ”๊ฐ€

- ๊ธฐ์กด ์ธ์ฆ ์ฝ”๋“œ redis์—์„œ ์‚ญ์ œ ํ›„ ์ƒˆ ์ธ์ฆ์ฝ”๋“œ ๋ฐœ๊ธ‰

* feat: MethodArgumentNotValidException ์—๋Ÿฌ ํ•ธ๋“ค๋ง

* style: ์ปจ๋ฒค์…˜ ํ†ต์ผ

- ํŒจํ‚ค์ง• ๊ตฌ์กฐ ๋งž์ถ”๊ธฐ
- ์Šค์›จ๊ฒŒ ์‘๋‹ต ์˜ˆ์‹œ ์ถ”๊ฐ€
- ์ค‘๋ณต๋œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ํ•˜๋‚˜๋กœ ํ†ตํ•ฉ

* feat: ์ด๋ฉ”์ผ ์ธ์ฆ ๊ฒ€์ฆ API

- ์ด๋ฉ”์ผ ์ธ์ฆ ๊ฒ€์ฆ API ๊ฐœ๋ฐœ
- ์Šค์›จ๊ฑฐ ์‘๋‹ต ์˜ˆ์‹œ ์ถ”๊ฐ€
- ์ด๋ฉ”์ผ ์ธ์ฆ ์š”์ฒญ API ์‘๋‹ต๊ฐ’ ์ถ”๊ฐ€

* refactor: 204 http code ๋ฐ”๋”” ์ œ๊ฑฐ

* refactor: 204 request nullable ์ฒ˜๋ฆฌ ๋ณ€๊ฒฝ

* fix: test property ์—๋Ÿฌ ํ•ด๊ฒฐ

* fix: ๋น„๊ต ์—ฐ์‚ฐ ๋ฐ ์†Œ๋‚˜ํด๋ผ์šฐ๋“œ ๋ณด์•ˆ ์—๋Ÿฌ ์ˆ˜์ •

* style: ์ฃผ์„ ์ •๋ฆฌ

* refactor: ์ฝ”๋“œ ๊ฐœ์„ 

- ๋งค์ง ๋„˜๋ฒ„ ์ƒ์ˆ˜ ์ฒ˜๋ฆฌ
- apply ์ ์šฉ
- it ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ

* fix: apply ํ•จ์ˆ˜ ๋กค๋ฐฑ

* refactor: apply ํ•จ์ˆ˜ ์ ์šฉ

* feat: 41 ๋จนํŒŸ ๋“ฑ๋ก api ๊ตฌํ˜„ (#42)

* feat: ๋จนํŒŸ ๊ธ€ ์ƒ์„ฑ api ๊ตฌํ˜„ ๋ฐ ํ…Œ์ŠคํŠธ

- ๋จนํŒŸ ๊ธ€ ์ƒ์„ฑ api ๊ตฌํ˜„ ๋ฐ ํ…Œ์ŠคํŠธ

* feat: board entity ๋ณ€๊ฒฝ

- nullable ๋ช…์‹œ
- locationType ์ œ๊ฑฐ (ํšŒ์‚ฌ์—์„œ, ์‹๋‹น์—์„œ)
- maxApply ์ดˆ๊ธฐ๊ฐ’ 2 ์ ์šฉ
- ์ƒ์ˆ˜ ๋ณ„๋„ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌ

* chore: RegexPattern ์ƒ์ˆ˜๋กœ ๋ถ„๋ฆฌ

- ๊ธฐ์กด ์ด๋„˜์—์„œ ์ƒ์ˆ˜๋กœ ๋ถ„๋ฆฌ

* feat: ๋กœ๊ทธ์ธ ์ •๋ณด ์ ‘๊ทผ ์œ„ํ•œ util ์ถ”๊ฐ€

- ๋กœ๊ทธ์ธ ์ •๋ณด ์ ‘๊ทผ ์œ„ํ•œ util ์ถ”๊ฐ€

* fix: ์ƒ์ˆ˜ ์‚ฌ์šฉ๋˜๋Š”๊ณณ ๋ณ€๊ฒฝ

- ์ƒ์ˆ˜ ์‚ฌ์šฉ๋˜๋Š”๊ณณ ๋ณ€๊ฒฝ ๋ฐ ํ…Œ์ŠคํŠธ ๊ฐ„๋‹จํ•œ ์ˆ˜์ •

* feat: ์š”์ฒญ null ๋˜๋Š” ํฌ๋งท์ด ์ด์ƒํ•œ ๊ฒฝ์šฐ ๊ณตํ†ต ์ฒ˜๋ฆฌ

- ๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ: ๊ฐ’์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
- ํฌ๋งท์ด ์ด์ƒํ•œ ๊ฒฝ์šฐ: ์œ ํšจํ•˜์ง€ ์•Š์€ ํฌ๋งท์ž…๋‹ˆ๋‹ค.

* chore: ์‘๋‹ต ํƒ€์ž… ๋ช…์‹œ ๋ฐ ktlintFormat ์ ์šฉ

- ์‘๋‹ต ํƒ€์ž… ๋ช…์‹œ ๋ฐ ktlintFormat ์ ์šฉ

* fix: ์†Œ๋‚˜ํ๋ธŒ ์‹คํŒจ ์ฒ˜๋ฆฌ

- cause: "PASSWORD" detected here, make sure this is not a hard-coded credential.

* fix: ์†Œ๋‚˜ํ๋ธŒ ์‹คํŒจ ์ฒ˜๋ฆฌ 2

- cause: "PASSWORD" detected here, make sure this is not a hard-coded credential.

* fix: ์Šค์›จ๊ฑฐ ์ด๋ฆ„ ๋ณ€๊ฒฝ

- ๋จนํŒŸ ์ƒ์„ฑ -> ๋จนํŒŸ ๊ธ€ ์ƒ์„ฑ

* fix: ๋‚˜์ด nullable, ์ฃผ์†Œ ์ƒ์„ธ trim

- ๋‚˜์ด nullable, ์ฃผ์†Œ ์ƒ์„ธ trim

* refactor: ๊ฐ•๊ฒฐํ•ฉ ์ฝ”๋“œ ๋ถ„๋ฆฌ

- as-is: Service ์•ˆ์—์„œ Util ํด๋ž˜์Šค ์‚ฌ์šฉ
  - ํ…Œ์ŠคํŠธ ํ• ๋•Œ๋งˆ๋‹ค Util ์‹ ๊ฒฝ์จ์•ผ ํ•จ..
- to-be: ์ธ์ฆ ์ •๋ณด๋ฅผ Controller์—์„œ ์ „๋‹ฌ

* refactor: 44 board refactor (#45)

* refactor: board entity ๋ณ€๊ฒฝ

- meetingDate, meetingTime์„ LocalDateTime ํ•˜๋‚˜๋กœ ๊ด€๋ฆฌ
- ๋จนํŒŸ ์ฐธ๊ฐ€ ์‹œ maxApply ๋˜๋ฉด ์ƒํƒœ ๋ณ€๊ฒฝ

* refactor: board entity ๋ณ€๊ฒฝ์— ๋”ฐ๋ฅธ ๋จนํŒŸ ์ƒ์„ฑ request ์ˆ˜์ •

- meetingTime ํƒ€์ž… LocalTime ๋ณ€๊ฒฝ
- currentApply 1๋กœ ์ €์žฅ๋˜๋„๋ก ๋ณ€๊ฒฝ

* chore: ExceptionHandler ๋กœ๊น… ์ถ”๊ฐ€

* fix: ๋กœ๊ทธ๋ ˆ๋ฒจ error๋กœ ๋ณ€๊ฒฝ

- info์—์„œ error๋กœ ๋ณ€๊ฒฝ

* feat:43 ๋จนํŒŸ ์กฐํšŒ api ๊ตฌํ˜„ (#46)

* feat: ๋ฌดํ•œ์Šคํฌ๋กค dto ์ •์˜

* feat: ์‹œ๊ฐ„ ์ •์ฑ… util ์ถ”๊ฐ€

- ์˜ค๋Š˜, ๋‚ด์ผ ๊ณ„์‚ฐ
- ๊ฒฝ๊ณผ ์‹œ๊ฐ„ ๊ณ„์‚ฐ

* feat: boardId ๋ฆฌ์ŠคํŠธ๋กœ ์ฐธ์—ฌ์ž ๋ชฉ๋ก ์กฐํšŒ ์ฟผ๋ฆฌ ๊ตฌํ˜„

- ๋จผ์ € ์ฐธ์—ฌํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ(์ƒ์„ฑ์ผ์ž)

* feat: ๋ฌดํ•œ ์Šคํฌ๋กค ์ ์šฉํ•œ ๋ชจ๋“  ๋จนํŒŸ๊ธ€ ์กฐํšŒ ์ฟผ๋ฆฌ ๊ตฌํ˜„

- lastId, countPerScroll ๊ธฐ์ค€์œผ๋กœ ์กฐํšŒ

* feat: ๋งŒ๋ฃŒ์‹œ๊ฐ„ ์ฒดํฌ ํ•จ์ˆ˜ ์ถ”๊ฐ€

* feat: ๋จนํŒŸ ์ƒํƒœ 2๊ฐœ๋กœ ๋ณ€๊ฒฝ ๋ฐ ํ•œ๊ธ€์ด๋ฆ„ ์ถ”๊ฐ€

* feat: ๋จนํŒŸ ์กฐํšŒ API ๊ตฌํ˜„ ๋ฐ ํ…Œ์ŠคํŠธ

* fix: if๋ฌธ when์œผ๋กœ ๋ณ€๊ฒฝ

- sonarcloud: Merge chained "if" statements into a single "when" statement.

* fix: ์†Œ๋‚˜ํ๋ธŒ.. ์ค‘๋ณต ๋ผ์ธ ์ œ๊ฑฐ
- sonarcloud: Duplicated Lines (%) on New Code

* fix: ์†Œ๋‚˜ํ๋ธŒ.. ์ค‘๋ณต ๋ผ์ธ ๋” ์ œ๊ฑฐ ...
- sonarcloud: Duplicated Lines (%) on New Code

* fix: ๋งˆ์ง€๋ง‰ ํŽ˜์ด์ง€์—์„œ lastId null ๋˜์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝ

- ๋งˆ์ง€๋ง‰ ํŽ˜์ด์ง€์—์„œ lastId null ๋˜์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝ

* fix: ์ „์ฒด Exception ํ•ธ๋“ค๋ง ์ถ”๊ฐ€

- ์ „์ฒด Exception ํ•ธ๋“ค๋ง ์ถ”๊ฐ€

* feat: ์œ ์ € ํ”„๋กœํ•„ ์กฐํšŒ api ๊ตฌํ˜„ (#48)

- ๋กœ๊ทธ์ธ ์œ ์ €: 200 + ์œ ์ € ์ •๋ณด
- ๋น„ ๋กœ๊ทธ์ธ ์œ ์ €: 204

* feat: ํšŒ์›๊ฐ€์ž… api ์ƒ์„ฑ (#49)

* feat: ํšŒ์›๊ฐ€์ž… api ์ƒ์„ฑ

- ํšŒ์›๊ฐ€์ž… validation ์ฒ˜๋ฆฌ
- ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ
- ๋ณ€๊ฒฝ๋œ SwaggerConstant ์ ์šฉ
- ๋ณ€๊ฒฝ๋œ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์ ์šฉ

* refactor: ์ •๊ทœ์‹ ์ƒ์ˆ˜ ์ ์šฉ

* refactor: ์ง๊ตฐ ๋Œ€๋ถ„๋ฅ˜ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฆฌํŒฉํ† ๋ง

* bug: 51 cors ์„ค์ • ๋ณ€๊ฒฝ ๋ฐ ๋กœ๊ทธ์ธ ์œ ์ € ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ ์š”์ฒญ ์กฐ๊ฑด ์ˆ˜์ • (#52)

* fix: cors ์„ค์ • ๋ณ€๊ฒฝ

- allowedOrigins์— * ๊ฐ’์„ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ allowCredentials๊ฐ€ true๋กœ ์„ค์ •๋˜์–ด ์žˆ๋”๋ผ๋„ CORS ์ •์ฑ…์„ ์ค€์ˆ˜ํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ํ•จ.

* fix: ์™€์ผ๋“œ์นด๋“œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝ

- ์™€์ผ๋“œ์นด๋“œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ๋ณ€๊ฒฝ

* fix: ๋กœ๊ทธ์ธ ์œ ์ € ์žฌ์š”์ฒญ ์กฐ๊ฑด ์ˆ˜์ •

- ์ž˜๋ชป ๋ฐ˜์˜๋˜์–ด์žˆ์–ด ์ˆ˜์ •

* fix: ๋กœ๊ทธ์ธ ์œ ์ €๋Š” ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž… ์š”์ฒญํ•  ์ˆ˜ ์—†๋„๋ก ๋ณ€๊ฒฝ

- ๋กœ๊ทธ์ธ ์œ ์ €๋Š” ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž… ์š”์ฒญํ•  ์ˆ˜ ์—†๋„๋ก ๋ณ€๊ฒฝ

* ๏ฟฝfeat: 50 ๋จนํŒŸ ์ƒ์„ธ์กฐํšŒ ๊ตฌํ˜„ (#53)

* chore: ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๋ณ€๊ฒฝ

* chore: Location nullable ์ œ๊ฑฐ

* chore: enum ํ•œ๊ธ€ ๋ช… korNm์œผ๋กœ ํ†ต์ผ

* chore: ๋กœ๊ทธ์ธ ์œ ์ €์ •๋ณด ์—†์Šต๋‹ˆ๋‹ค ๋ ˆ๋ฒจ debug ๋ณ€๊ฒฝ

- ๋„ˆ๋ฌด ์ž์ฃผ ํ˜ธ์ถœ๋˜์–ด info -> debug ๋‚ฎ์ถค

* refactor: ์œ ์ € ํ”„๋กœํ•„ ์กฐํšŒ์‹œ SecurityContextHolder ๋ณด๋„๋ก ๋ณ€๊ฒฝ

- as-is: cookie ์—์„œ ๊ณ ๊ฐ์ •๋ณด ์ฐพ์•„์˜ด.
- to-be: SecurityContextHolder์—์„œ ์ฐพ์•„์˜ด.

* fix: formatMeetingTime ํ•จ์ˆ˜ ๋ณ€๊ฒฝ ๋ฐ ์‹œ๊ฐ„ ํŒจํ„ด ์ƒ์ˆ˜ ์ด๋™
- ์‹œ๊ฐ„ ํŒจํ„ด ๋ชจ๋‘ RegexPatternConstant๋กœ ์ด๋™
- pattern์„ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ•˜๋Š” ํ•จ์ˆ˜๋กœ Util ํ•จ์ˆ˜ ํ†ตํ•ฉ

* fix: ์ฐธ์—ฌ์ž ๋ชฉ๋ก ์กฐํšŒ์‹œ ๋ฉ”์ธ ์นดํ…Œ๊ณ ๋ฆฌ, isWriter ์ถ”๊ฐ€

- ์ƒ์„ธ์—์„œ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ ํ•จ.
- null ์ธ ๊ฒฝ์šฐ ๋ชจ๋‘ ์‘๋‹ต์— ํฌํ•จ๋˜์ง€ ์•Š๋„๋ก ํ•จ

* fix: meetingTime ํ•„๋“œ ๋ช… ๋ณ€๊ฒฝ

- ์ƒ์„ธ์—์„œ meetingTime, meetingDate ๋”ฐ๋กœ๋‚ด๋ ค์ฃผ์–ด ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝ

* fix: jobGroupMain ํ•œ๊ธ€ ๋ช…์œผ๋กœ ์‘๋‹ต ํ•˜๋„๋ก ๋ณ€๊ฒฝ

* feat: ๋จนํŒŸ ์ƒ์„ธ์กฐํšŒ ๊ตฌํ˜„
- ์ƒ์„ธ ์กฐํšŒ ์‹œ ์กฐํšŒ์ˆ˜ ์ฆ๊ฐ€
- ์ฐธ์—ฌ๋ชฉ๋ก ๋กœ๊ทธ์ธ ์œ ์ € ๋ฐ ์กฐ์ง์žฅ ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ์ •๋ ฌ ์ ์šฉ

* chore: ์Šค์›จ๊ฑฐ ์‘๋‹ต ์˜ˆ์‹œ ์ˆ˜์ •

* fix: nullable ์ œ๊ฑฐ ๋ฐ ํ•จ์ˆ˜ ๋ช… ๋ณ€๊ฒฝ

* feat : 55 redisson distributed lock  (#59)

* refactor: ์ƒ์ˆ˜ ํŒŒ์ผ๋“ค ํŒจํ‚ค์ง•

* chore: setting redisson config

* feat: ๋ถ„์‚ฐ๋ฝ ์ปค์Šคํ…€ ์–ด๋…ธํ…Œ์ด์…˜ ์ƒ์„ฑ

* feat: ๋ถ„์‚ฐ๋ฝ ํŠธ๋žœ์žญ์…˜ ์„ค์ •

* feat: ๋ถ„์‚ฐ๋ฝ aop ์„ค์ •

* feat: ๋„๋ฉ”์ธ ๋ชจ๋“ˆ ์˜์กด์„ฑ ์ถ”๊ฐ€

* test: ๋ถ„์‚ฐ๋ฝ ๊ธฐ๋ฐ˜ ๋™์‹œ์„ฑ ํ…Œ์ŠคํŠธ

* test: ์“ฐ๋ ˆ๋“œํ’€ 100 ํ…Œ์ŠคํŠธ

* test: ์“ฐ๋ ˆ๋“œํ’€ 500 ํ…Œ์ŠคํŠธ

* fix: ์†Œ๋‚˜ํด๋ผ์šฐ๋“œ ์—๋Ÿฌ ํ•ด๊ฒฐ

* test: ๋™์‹œ์„ฑ ํ…Œ์ŠคํŠธ ๋ถ„์‚ฐ๋ฝ ์ ์šฉ

- ์Šค๋ž˜๋“œํ’€ ๊ฐœ์ˆ˜ ์กฐ์ •
- ๋ถ„์‚ฐ๋ฝ ์–ด๋…ธํ…Œ์ด์…˜ ์ ์šฉ

* refactor: redis ๊ด€๋ จ ์„ค์ • ํ†ตํ•ฉ

* refactor: ์—๋Ÿฌ ์ŠคํƒํŠธ๋ ˆ์ด์Šค ์ถœ๋ ฅํ•˜๋„๋ก ๋ณ€๊ฒฝ

* refactor: ๋ถ„์‚ฐ๋ฝ ๊ตฌ์กฐ ๋ฆฌํŒฉํ† ๋ง

- api ๋ชจ๋“ˆ:์–ด๋…ธํ…Œ์ด์…˜, aop, ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ๋ถ„์‚ฐ๋ฝ ํ…Œ์ŠคํŠธ
- infra ๋ชจ๋“ˆ:redis config, new
transaction

* refactor: ํ•„์š”์—†๋Š” ์ฝ”๋“œ ์ œ๊ฑฐ

* feat: 54 ๋จนํŒŸ ์ˆ˜์ • api ๊ตฌํ˜„ (#57)

* fix: Board.user nullable ์ œ๊ฑฐ

* feat: ๋จนํŒŸ ๊ธ€ ์ˆ˜์ • api ๊ตฌํ˜„

- ๋จนํŒŸ ๊ธ€ ์ˆ˜์ • api ๊ตฌํ˜„

* fix: ์ค‘๋ณต ์˜ˆ์™ธ ๋ฉ”์‹œ์ง€ ์ƒ์ˆ˜ ์ฒ˜๋ฆฌ

- NotBlank ๊ธฐ๋ณธ ๋ฉ”์‹œ์ง€๊ฐ€ ๋‹ฌ๋ผ์„œ ci๋„ ์‹คํŒจํ•˜๋Š”๋“ฏํ•˜์—ฌ, ์ง์ ‘ ๋ช…์‹œ ํ•จ

* chore: ktlint ์ ์šฉ

* feat: 56 ๋จนํŒŸ ์ฐธ๊ฐ€ ์‹ ์ฒญ api ๊ตฌํ˜„ (#60)

* refactor: ์ƒ์ˆ˜ ํŒŒ์ผ๋“ค ํŒจํ‚ค์ง•

* chore: setting redisson config

* feat: ๋ถ„์‚ฐ๋ฝ ์ปค์Šคํ…€ ์–ด๋…ธํ…Œ์ด์…˜ ์ƒ์„ฑ

* feat: ๋ถ„์‚ฐ๋ฝ ํŠธ๋žœ์žญ์…˜ ์„ค์ •

* feat: ๋ถ„์‚ฐ๋ฝ aop ์„ค์ •

* feat: ๋„๋ฉ”์ธ ๋ชจ๋“ˆ ์˜์กด์„ฑ ์ถ”๊ฐ€

* test: ๋ถ„์‚ฐ๋ฝ ๊ธฐ๋ฐ˜ ๋™์‹œ์„ฑ ํ…Œ์ŠคํŠธ

* test: ์“ฐ๋ ˆ๋“œํ’€ 100 ํ…Œ์ŠคํŠธ

* test: ์“ฐ๋ ˆ๋“œํ’€ 500 ํ…Œ์ŠคํŠธ

* fix: ์†Œ๋‚˜ํด๋ผ์šฐ๋“œ ์—๋Ÿฌ ํ•ด๊ฒฐ

* test: ๋™์‹œ์„ฑ ํ…Œ์ŠคํŠธ ๋ถ„์‚ฐ๋ฝ ์ ์šฉ

- ์Šค๋ž˜๋“œํ’€ ๊ฐœ์ˆ˜ ์กฐ์ •
- ๋ถ„์‚ฐ๋ฝ ์–ด๋…ธํ…Œ์ด์…˜ ์ ์šฉ

* refactor: redis ๊ด€๋ จ ์„ค์ • ํ†ตํ•ฉ

* refactor: ์—๋Ÿฌ ์ŠคํƒํŠธ๋ ˆ์ด์Šค ์ถœ๋ ฅํ•˜๋„๋ก ๋ณ€๊ฒฝ

* refactor: ํ•„์š”์—†๋Š” ํŒŒ์ผ ์ œ๊ฑฐ

* refactor: ์Šค๋ ˆ๋“œํ’€ ๊ฐœ์ˆ˜ ์กฐ์ •

* feat: ๋จนํŒŸ ์ฐธ๊ฐ€ ์‹ ์ฒญ api

-๋ถ„์‚ฐ๋ฝ ์ ์šฉ
-participant table insert
-muckpot_user.current_apply update
-์ฐธ๊ฐ€
์‹ ์ฒญ ์กฐ๊ฑด validation

* test: ๋จนํŒŸ ์ฐธ๊ฐ€ ์‹ ์ฒญ api ํ…Œ์ŠคํŠธ ์ฝ”๋“œ

* refactor: 201 ์‘๋‹ต๊ผด api ๋ช…์„ธ ๋งž์ถฐ ์ˆ˜์ •

* refactor: ํ•„์š”์—†๋Š” ์˜์กด์„ฑ ์ œ๊ฑฐ

* ๏ฟฝfeat:58 ๋จนํŒŸ ๊ธ€ ์‚ญ์ œ api ๊ตฌํ˜„ (#61)

* refactor: ๋ชจ๋“  Entity Soft Delete ์ ์šฉ

- user ์œ ๋‹ˆํฌ ํ‚ค ์ œ๊ฑฐ
- participant ๋ณตํ•ฉํ‚ค ์ œ๊ฑฐ

* feat: ๋จนํŒŸ ์‚ญ์ œ api ๊ตฌํ˜„

- ๋จนํŒŸ ์‚ญ์ œ์‹œ ์ฐธ๊ฐ€๋ชฉ๋ก ์ œ๊ฑฐ
- ์ž์‹ ์˜ ๊ธ€๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅ

* refactor: repository ํŠธ๋žœ์žญ์…˜ ์ถ”๊ฐ€

- ์ถ”๊ฐ€ ๋ฐ readOnly ์˜ต์…˜ ๋ช…์‹œ

* fix: ํ•จ์ˆ˜์ด๋ฆ„ ํ†ต์ผ

* fix: JpaRepository ์กฐํšŒ์ฟผ๋ฆฌ ํŠธ๋žœ์žญ์…˜ ๋ช…์‹œ ์ œ๊ฑฐ

* feat: ๋จนํŒŸ ๊ธ€ ์ƒํƒœ๋ณ€๊ฒฝ API ๊ตฌํ˜„ (#63)

feat: ๋จนํŒŸ ๊ธ€ ์ƒํƒœ๋ณ€๊ฒฝ API ๊ตฌํ˜„

* refactor: 65 ๋กœ๊ทธ์ธ ์œ ์ง€ํ•˜๊ธฐ ๋งŒ๋ฃŒ์‹œ๊ฐ„ ์ง€์ • (#66)

* refactor: ๋กœ๊ทธ์ธ ์œ ์ง€ํ•˜๊ธฐ ๋งŒ๋ฃŒ์‹œ๊ฐ„ ์ง€์ •
- as-is: ๋งŒ๋ฃŒ์‹œ๊ฐ„ ์—†์Œ
- to-be: ํ† ํฐ ๋ณ„ 1์ผ, 30์ผ ๊ธฐํ•œ ์ง€์ •

* chore: ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฉ”์‹œ์ง€ ๋ณ€๊ฒฝ

* refactor: ์ฟ ํ‚ค๋„ ๋งŒ๋ฃŒ์‹œ๊ฐ„ ์ง€์ •

* feat : 67 ๋จนํŒŸ ์ฐธ๊ฐ€ ์‹ ์ฒญ ์ทจ์†Œ api ๊ตฌํ˜„ (#68)

* feat: ๋จนํŒŸ ์ฐธ๊ฐ€ ์‹ ์ฒญ ์ทจ์†Œ api ์ƒ์„ฑ

-participant table soft delete
-muckpot_user.current_apply
update
-validation ์ฒ˜๋ฆฌ

* test: ๋จนํŒŸ ์ฐธ๊ฐ€ ์‹ ์ฒญ ์ทจ์†Œ api ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ

* refactor: ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง

* refactor: ์ฐธ๊ฐ€์‹ ์ฒญ์ทจ์†Œ ํ•จ์ˆ˜๋ช… ๋ณ€๊ฒฝ

* feat: 64 ๋กœ๊ทธ์•„์›ƒ api ๊ตฌํ˜„ (#69)

* refactor: JwtCookieUtil ๋ณ€๊ฒฝ
- ์ด๋ฆ„ ์ˆ˜์ • ๋ฐ ํ•จ์ˆ˜ ๋ณ€๊ฒฝ

* refactor: ์ƒ์ˆ˜ ํŒŒ์ผ ๋ถ„๋ฆฌ
- URL ๊ด€๋ จ ์ƒ์ˆ˜ ๋”ฐ๋กœ ๋ถ„๋ฆฌ

* refactor: ์ธ์ฆ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํด๋ž˜์Šค ์ด๋ฆ„ ๋ฐ ํŒจํ‚ค์ง€ ๋ณ€๊ฒฝ
- filter ํ•˜์œ„๋กœ ๋ณ€๊ฒฝ

* refactor: value์— ์ด์ƒํ•œ ๊ฐ’์ด ๋“ค์–ด๊ฐ€์„œ ์„ค์ • ์ถ”๊ฐ€
- \xac\xed\x00\x05t\x00\x03key ์ €์žฅ ๋จ
- see: https://stackoverflow.com/questions/31608394/get-set-value-from-redis-using-redistemplate

* feat: ๋กœ๊ทธ์•„์›ƒ ๊ธฐ๋Šฅ ๊ตฌํ˜„
- ํ† ํฐ ๊ด€๋ จ ์ฟ ํ‚ค์‚ญ์ œ
- accessToken ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ ์ถ”๊ฐ€
- refreshToken ์ œ๊ฑฐ

* test: ๋กœ๊ทธ์•„์›ƒ ํ…Œ์ŠคํŠธ

- accessToken ๋ธ”๋ž™๋ฆฌ์ŠคํŠธ ์ถ”๊ฐ€
- refreshToken ์ œ๊ฑฐ

* refactor: api/common ํ•˜์œ„์˜ util, constant ํด๋ž˜์Šค๋“ค ํŒจํ‚ค์ง€ ์ถ”๊ฐ€

* refactor: testFixtures ์ ์šฉ
- ๊ธฐ์กด์— api, domain ๊ฐ๊ฐ ์žˆ๋˜ Fixture ํ†ตํ•ฉ

* chore: url ๋ณ€๊ฒฝ

* feat : 70 JWT ์žฌ๋ฐœ๊ธ‰ API ๊ตฌํ˜„  (#72)

* feat: JWT ์žฌ๋ฐœ๊ธ‰ api ๊ตฌํ˜„

- access ํ† ํฐ ์žฌ์ƒ์„ฑ
- refresh ํ† ํฐ ์žฌ์ƒ์„ฑ
- refresh ํ† ํฐ ๋งŒ๋ฃŒ ์‹œ๊ฐ„ ์ด์ „ refresh ํ† ํฐ ๋งŒ๋ฃŒ์‹œ๊ฐ„๊ณผ
๋™์ผ
- access ํ† ํฐ ๋งŒ๋ฃŒ ์‹œ๊ฐ„ ๋กœ๊ทธ์ธ ์œ ์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์„ค์ •

* feat: JWT ์žฌ๋ฐœ๊ธ‰ ํ•„ํ„ฐ ์ธ์ฆ์—์„œ ์ œ์™ธ

* refactor: ๋กœ๊ทธ์ธ ์œ ์ง€ ์—ฌ๋ถ€ ๊ธฐ๋Šฅ ํ•จ์ˆ˜๋กœ ๋ถ„๋ฆฌ

* refactor: getTokenExpirationDuration ํ•จ์ˆ˜ ์žฌ์‚ฌ์šฉ

* refactor: ์ค‘๋ณต ๋กœ์ง ์ œ๊ฑฐ

* feat: redis์— refresh ํ† ํฐ ์กด์žฌ ๊ฒ€์ฆ ์ถ”๊ฐ€

* feat: jwt ์žฌ๋ฐœ๊ธ‰์‹œ ๋งŒ๋ฃŒ๋œ access ํ† ํฐ ๊ฒ€์ฆ

* feat: jwt ์žฌ๋ฐœ๊ธ‰์‹œ ๊ฒ€์ฆ ์ถ”๊ฐ€

* fix: jwt ๋””์ฝ”๋”ฉ ํ•จ์ˆ˜ ๋ณ€๊ฒฝ

- verify -> decode

* api ์„œ๋ธŒ ๋„๋ฉ”์ธ ์ ์šฉ ๊ด€๋ จ cicd ์ˆ˜์ •

* refactor: 76 ํ† ํฐ ๋งŒ๋ฃŒ์‹œ๊ฐ„ ๋ฐ ๋จนํŒŸ ์ƒ์„ธ ๋ฆฌํŽ™ํ† ๋ง (#77)

* refactor: ๋จนํŒŸ ์ƒ์„ธ์กฐํšŒ ๊ฐœ์„ 
- ์ž์‹ ์˜ ๊ธ€์€ ์กฐํšŒ์ˆ˜ ์ฆ๊ฐ€ x
- ๋‚˜์ด์กฐ๊ฑด ์„ ํƒํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ null ์‘๋‹ต

* refactor: jwt ๋งŒ๋ฃŒ๊ธฐํ•œ ๋ณ€๊ฒฝ
- access-token ๋ชจ๋‘ 1์‹œ๊ฐ„์œผ๋กœ ๋ณ€๊ฒฝ
- refresh-token ๊ฐ๊ฐ 30, 180 ๋ณ€๊ฒฝ

* test: ๋น„๋กœ๊ทธ์ธ ์œ ์ € ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€

- ๋น„๋กœ๊ทธ์ธ ์œ ์ €๋„ ์กฐํšŒ์ˆ˜๊ฐ€ ์ฆ๊ฐ€ํ•œ๋‹ค.

* refactor: ๋จนํŒŸ ์ƒ์„ธ ์ด์ „, ๋‹ค์Œ ๊ธ€๋กœ ์ด๋™ํ•˜๊ธฐ์œ„ํ•œ id ์‘๋‹ต ์ถ”๊ฐ€

- ์ด์ „, ๋‹ค์Œ ๊ธ€๋กœ ์ด๋™ํ•˜๊ธฐ์œ„ํ•œ id ์‘๋‹ต ์ถ”๊ฐ€

* refactor: Board ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ถ”๊ฐ€

- ๋งŒ๋‚ ์‹œ๊ฐ„์€ ํ˜„์žฌ์‹œ๊ฐ„ ์ดํ›„๋กœ๋งŒ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ถ”๊ฐ€

* refactor: ๋กœ๊ทธ์ธ ์œ ์ง€ ํŒ๋ณ„ ํ•จ์ˆ˜ ์ œ๊ฑฐ

- access ํ† ํฐ ๋งŒ๋ฃŒ๊ธฐ๊ฐ„ ํ†ต์ผ์— ๋”ฐ๋ฅธ ํ•„์š”์—†๋Š” ์ฝ”๋“œ ์ œ๊ฑฐ

---------

Co-authored-by: bryn <cofls6581@naver.com>

* refactor:71 testcontainer total (#73)

* refactor: ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ ์ปจํ…Œ์ด๋„ˆ ์ ์šฉ

- ํ…Œ์ŠคํŠธ ์ปจํ…Œ์ด๋„ˆ ์˜์กด์„ฑ root ํ”„๋กœ์ ํŠธ๋กœ ๋ณ€๊ฒฝ
- api ๋ชจ๋“ˆ ํ…Œ์ŠคํŠธ ํ”„๋กœํผํ‹ฐ ๋ณ€๊ฒฝ
- api ๋ชจ๋“ˆ ํ…Œ์ŠคํŠธ ์ปจํ…Œ์ด๋„ˆ ์„ค์ •

* refactor: ci/cd ์—์„œ docker-compse ์‹คํ–‰๋กœ์ง ์ œ๊ฑฐ

* test: ci ์‹คํŒจ ํ…Œ์ŠคํŠธ

* refactor: ci, cd ์Šคํฌ๋ฆฝํŠธ ์ค‘๋ณต flow ์ œ๊ฑฐ
- build ์—์„œ ktlintcheck, test ๋ชจ๋‘ ์ˆ˜ํ–‰๋˜๊ณ  ์žˆ์Œ

* test: ci ktlint ์‹คํŒจ ํ…Œ์ŠคํŠธ

* test: ์‹คํŒจ ํ…Œ์ŠคํŠธ ๋ณต๊ตฌ

* chore: ํด๋ž˜์Šค ์ด๋ฆ„ ๋ณ€๊ฒฝ

* refactor: ํ…Œ์ŠคํŠธ ์ปจํ…Œ์ด๋„ˆ ๋ชจ๋“ˆ ๋ณ„ ๋ถ„๋ฆฌ
- testFixtures ํ™œ์šฉ
- root ํ”„๋กœ์ ํŠธ์—์„œ ํ…Œ์ŠคํŠธ์ปจํ…Œ์ด๋„ˆ ๊ด€๋ จ ์˜์กด์„ฑ ์ œ๊ฑฐ
- ์„ค์ • ์‹œ ์˜์กด์„ฑ ์ฐธ์กฐ๋ฅผ ์œ„ํ•ด testFixturesImplementation ์ถ”๊ฐ€

* refactor: ๋ชจ๋“ˆ ๋ณ„ ์„ค์ • ๋ถ„๋ฆฌ

* feat: ๋จนํŒŸ ๊ธ€ ์ƒ์ œ ์กฐํšŒ ์‘๋‹ต ์ถ”๊ฐ€ (#79)

- useAge ๊ฐ’ ์ถ”๊ฐ€
- ๋กœ๊ทธ์ธํ•œ ์œ ์ € ๋‚˜์ด, ๋น„๋กœ๊ทธ์ธ์‹œ null

* refactor:80 ์ด๋ฉ”์ผ ์ธ์ฆ ์š”์ฒญ์‹œ ์ค‘๋ณต ์ด๋ฉ”์ผ ๊ฒ€์‚ฌ ๋ฐ ์˜ˆ์™ธ ๋ฉ”์‹œ์ง€ ๋ณ€๊ฒฝ (#81)

* refactor: ์ธ์ฆ ๋ฉ”์ผ ๋ฐ›๊ธฐ ๋‹จ๊ณ„์—์„œ ์ค‘๋ณต์ด๋ฉ”์ผ ๊ฒ€์‚ฌ ์ถ”๊ฐ€

* refactor: ์˜ˆ์™ธ ๋ฉ”์‹œ์ง€ ํ”ผ๊ทธ๋งˆ ๊ธฐ์ค€์œผ๋กœ ๋ณ€๊ฒฝ

* feat:74 ๏ฟฝ๋ฏธํŒ… ์‹œ๊ฐ„์ด ํ˜„์žฌ์‹œ๊ฐ„ ์ด์ „์ธ ๋จนํŒŸ ์ƒํƒœ๋ณ€๊ฒฝ (#82)

* feat: ํ˜„์žฌ์‹œ๊ฐ„ ์ด์ „์˜ ๋จนํŒŸ์€ Done ์ฒ˜๋ฆฌ
- 10-22์‹œ, 00์‹œ 15๋ถ„๋งˆ๋‹ค ์ˆ˜ํ–‰, ํ•˜๋ฃจ 56ํšŒ

* refactor: ์ด์ „, ์ดํ›„ ์•„์ด๋”” ์กฐํšŒ์‹œ DONE ํฌํ•จ

- ์ด์ „, ์ดํ›„ ์•„์ด๋”” ์กฐํšŒ์‹œ DONE ํฌํ•จ

* feat: 83 CORS ORIGIN ์ถ”๊ฐ€ (#84)

* feat: PROD CORS ORIGIN ์ถ”๊ฐ€

- ORIGIN ๊ด€๋ฆฌ env๋กœ ๋ถ„๋ฆฌ

* feat: PROD ๋‹ค๋ฅธ URL๋„ ์ถ”๊ฐ€

* refactor:85 ํŒจ์Šค์›Œ๋“œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ณ€๊ฒฝ (#86)

* feat: PROD CORS ORIGIN ์ถ”๊ฐ€

- ORIGIN ๊ด€๋ฆฌ env๋กœ ๋ถ„๋ฆฌ

* feat: PROD ๋‹ค๋ฅธ URL๋„ ์ถ”๊ฐ€

* refactor: ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ์‹œ pw ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ณ€๊ฒฝ
- ํŠน์ˆ˜๋ฌธ์ž ํฌํ•จ๊ฐ€๋Šฅ
- ์ตœ์†Œ ์˜์–ด1, ์ˆซ์ž1 ํฌํ•จ๋˜์–ด์•ผ ํ•จ

* refactor: constant package ์„ ์–ธ์œ„์น˜ ์ˆ˜์ •
- ์ด์ „์— ํŒจํ‚ค์ง€ ๋ณ€๊ฒฝ ํ›„ ์„ ์–ธ๋ฌธ ๋ฐ˜์˜์ด ์•ˆ๋˜์–ด์žˆ์–ด์„œ, ๋ณ€๊ฒฝ

* refactor: cookie ๋ฐœ๊ธ‰์‹œ ๋„๋ฉ”์ธ ์ง€์ • (#88)

- ํ•˜์œ„ ๋„๋ฉ”์ธ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ๋ณ€๊ฒฝ
- ๋กœ์ปฌํ˜ธ์ŠคํŠธ์—์„œ ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ—ˆ์šฉ

* fix: 87 ๋กœ์ปฌ ์ ‘๊ทผ ์‹œ ์ฟ ํ‚ค ๋ฐœ๊ธ‰ ๋กœ์ง ๋ณ€๊ฒฝ (#89)

* fix: ๋กœ์ปฌ ์ ‘๊ทผ์‹œ ์ฟ ํ‚ค ๋ฐœ๊ธ‰ ๋กœ์ง ๋ณ€๊ฒฝ
- Host ํ—ค๋”๋กœ๋Š” localhost๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†์Œ.

* fix: port ์ œ๊ฑฐ ํ›„ startsWith ๋กœ ๊ตฌ๋ถ„
- localhost:8080 ์—์„œ๋„ ์ฟ ํ‚ค ๋ฐœ๊ธ‰ ์œ„ํ•จ

* refactor:90 ์ƒ์„ธ ์กฐํšŒ์‹œ ์ด์ „, ์ดํ›„์•„์ด๋”” ๋ถˆ์ผ์น˜ ๊ฐœ์„  (#91)

* fix: ๋กœ์ปฌ ์ ‘๊ทผ์‹œ ์ฟ ํ‚ค ๋ฐœ๊ธ‰ ๋กœ์ง ๋ณ€๊ฒฝ
- Host ํ—ค๋”๋กœ๋Š” localhost๋ฅผ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์—†์Œ.

* fix: port ์ œ๊ฑฐ ํ›„ startsWith ๋กœ ๊ตฌ๋ถ„
- localhost:8080 ์—์„œ๋„ ์ฟ ํ‚ค ๋ฐœ๊ธ‰ ์œ„ํ•จ

* fix: ์ƒ์„ธ, ์ด์ „ ์•„์ด๋”” ์กฐํšŒ์กฐ๊ฑด ๋ณ€๊ฒฝ

* fix: ์ƒ์„ธ, ์ด์ „ ์•„์ด๋”” ์กฐํšŒ์กฐ๊ฑด ์ฟผ๋ฆฌ ์ˆ˜์ •

---------

Co-authored-by: mountain <pawer02023@gmail.com>
  • Loading branch information
cofls6581 and Pawer0223 authored Jul 4, 2023
1 parent 3df0c36 commit 277a4f1
Show file tree
Hide file tree
Showing 143 changed files with 5,278 additions and 148 deletions.
22 changes: 9 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,15 @@ permissions:
jobs:
build:
runs-on: ubuntu-latest

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

- name: Gradle Clean & Build
run: ./gradlew clean build
- name: Gradle Clean & Build
run: ./gradlew clean build

- name: Check ktlint format
run: ./gradlew ktlintCheck

- name: Test with Gradle
run: ./gradlew test
65 changes: 65 additions & 0 deletions .github/workflows/cicd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: muckpot dev api CI/CD script

on:
push:
branches: [ "develop" ]

env:
ACTIVE_PROFILE: "dev"

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Check Out The Repository
uses: actions/checkout@v3

- name: Set up JDK 11
uses: actions/setup-java@v3
with:
java-version: '11'
distribution: 'temurin'

- name: Gradle Clean & Build
run: ./gradlew clean build

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Login Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}

- name: Build and push
uses: docker/build-push-action@v3
with:
context: ./muckpot-api
push: true
args: --build-arg PROFILE=$ACTIVE_PROFILE
tags: muckpot/muckpot-api:${{ github.run_number }}

deploy:
needs: build
runs-on: ubuntu-latest
steps:
- name: EC2 Docker Run
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_KEY }}
port: ${{ env.DEV_PORT }}
script: |
cd /var/www/html/api
sudo touch .env
echo "${{ secrets.ENV_VARS }}" | sudo tee .env > /dev/null
docker pull ${{ secrets.DOCKERHUB_USERNAME }}/muckpot-api:${{ github.run_number }}
docker stop $(docker ps -a -q)
docker run -v ${HOME}/logs:/logs --restart=unless-stopped -d -p ${{ secrets.DEV_PORT }}:${{ secrets.DEV_PORT }} --env-file .env ${{ secrets.DOCKERHUB_USERNAME }}/muckpot-api:${{ github.run_number }}
docker rm $(docker ps -a -q --filter "status=exited")
docker image prune -a -f
8 changes: 6 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,9 @@ out/
### VS Code ###
.vscode/

### dcoker mysql ###
.mysqldata/
### dcoker mariadb ###
.mariadata/

### .env ###
.env
.env.*
12 changes: 12 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

val kotestVersion = "5.5.4"

plugins {
id("org.springframework.boot") version "2.7.11" apply false
id("io.spring.dependency-management") version "1.0.15.RELEASE" apply false
Expand All @@ -8,6 +10,8 @@ plugins {
kotlin("plugin.jpa") version "1.6.21" apply false

id("org.jlleitschuh.gradle.ktlint") version "11.3.2"

kotlin("kapt") version "1.6.21" apply false
}

java.sourceCompatibility = JavaVersion.VERSION_11
Expand Down Expand Up @@ -37,12 +41,20 @@ subprojects {
apply(plugin = "org.jetbrains.kotlin.plugin.spring")
apply(plugin = "org.springframework.boot")
apply(plugin = "io.spring.dependency-management")
apply(plugin = "org.jlleitschuh.gradle.ktlint")

dependencies {
implementation("org.springframework.boot:spring-boot-starter-data-jpa")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
implementation("org.jetbrains.kotlin:kotlin-reflect")
implementation("io.github.microutils:kotlin-logging-jvm:3.0.5")

testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation("io.kotest:kotest-runner-junit5:$kotestVersion")
testImplementation("io.kotest:kotest-assertions-core:$kotestVersion")
testImplementation("io.kotest:kotest-framework-datatest:$kotestVersion")
testImplementation("io.kotest.extensions:kotest-extensions-spring:1.1.2")
testImplementation("io.mockk:mockk:1.12.4")
testImplementation("com.ninja-squad:springmockk:3.1.2")
}
}
25 changes: 25 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
version: "3.7"

services:
redis:
container_name: web1Redis
image: "redis:alpine"
ports:
- 6379:6379
environment:
- TZ=Asia/Seoul

mariadb:
image: mariadb:10
container_name: web1Maria
ports:
- 3306:3306
environment:
- MYSQL_DATABASE=muckpot_local
- MYSQL_ROOT_PASSWORD=admin
- TZ=Asia/Seoul
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes:
- ./mariadata:/var/lib/maria
12 changes: 12 additions & 0 deletions muckpot-api/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
FROM openjdk:11

EXPOSE 8080

ARG JAR_FILE=build/libs/*.jar

COPY ${JAR_FILE} app.jar

ARG PROFILE=dev
ENV PROFILE=${PROFILE}

ENTRYPOINT ["java","-Dspring.profiles.active=${PROFILE}","-jar","/app.jar"]
14 changes: 14 additions & 0 deletions muckpot-api/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
dependencies {
implementation(project(":muckpot-domain"))
implementation(project(":muckpot-infra"))

implementation("org.springframework.boot:spring-boot-starter-web")
implementation("org.springframework.boot:spring-boot-starter-validation")
implementation("io.springfox:springfox-boot-starter:3.0.0")
implementation("org.springframework.boot:spring-boot-starter-security")
implementation("com.auth0:java-jwt:4.2.1")
implementation("org.redisson:redisson:3.20.0")

testImplementation(testFixtures(project(":muckpot-domain")))
testImplementation(testFixtures(project(":muckpot-infra")))
}
17 changes: 17 additions & 0 deletions muckpot-api/src/main/kotlin/com/yapp/muckpot/Application.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.yapp.muckpot

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.data.jpa.repository.config.EnableJpaAuditing
import org.springframework.scheduling.annotation.EnableAsync
import org.springframework.scheduling.annotation.EnableScheduling

@SpringBootApplication
@EnableJpaAuditing
@EnableAsync
@EnableScheduling
class Application

fun main(args: Array<String>) {
runApplication<Application>(*args)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.yapp.muckpot.common.constants

const val ACCESS_TOKEN_KEY = "accessToken"
const val REFRESH_TOKEN_KEY = "refreshToken"
const val JWT_LOGOUT_VALUE = "logout"

const val USER_CLAIM = "user"
const val USER_EMAIL_CLAIM = "email"

const val ACCESS_TOKEN_SECONDS = 3600L
const val REFRESH_TOKEN_BASIC_SECONDS = 3600 * 24 * 30L
const val REFRESH_TOKEN_KEEP_SECONDS = 3600 * 24 * 180L
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
package com.yapp.muckpot.common.constants

// User
const val TEST_SAMPLE = """
{
"id": 1,
"name": "test",
"currentTime": "20230515"
}
"""

const val LOGIN_RESPONSE = """
{
"status": 200,
"result": {
"userId": 1,
"nickName": "nickName"
}
}
"""

const val EMAIL_AUTH_REQ_RESPONSE = """
{
"status": 201,
"result": {
"verificationCode": "123456"
}
}
"""

const val NO_BODY_RESPONSE = """
{
"status": 204
}
"""

const val SIGN_UP_RESPONSE = """
{
"status": 201,
"result": {
"userId": 1,
"nickName": "nickName"
}
}
"""

// Board
const val MUCKPOT_SAVE_RESPONSE = """
{
"status": 201,
"result": {
"boardId": 18
}
}
"""

const val MUCKPOT_FIND_ALL = """
{
"status": 200,
"result": {
"list": [
{
"boardId": 75,
"title": "๊ฐ™์ด ๋ฐฅ๋ฌต์œผ์‹ค๋ถ„",
"status": "๋ชจ์ง‘๋งˆ๊ฐ",
"todayOrTomorrow": "์˜ค๋Š˜",
"elapsedTime": "0๋ถ„ ์ „",
"meetingTime": "04์›” 01์ผ (ํ† ) ์˜คํ›„ 01:00",
"meetingPlace": "์„œ์šธ ์„ฑ๋ถ๊ตฌ ์•ˆ์•”๋™5๊ฐ€ 104-30 ์บ์น˜์นดํŽ˜ ์•ˆ์•”",
"maxApply": 5,
"currentApply": 1,
"participants": [
{
"userId": 48,
"nickName": "nickname2"
}
]
},
"lastId": 74
}
}
"""

const val MUCKPOT_FIND_BY_ID = """
{
"status": 200,
"result": {
"boardId": 114,
"title": "๊ฐ™์ด ๋ฐฅ๋ฌต์œผ์‹ค๋ถ„",
"content": "๋‚ด์šฉ ์ž…๋‹ˆ๋‹ค.",
"chatLink": "https://open.kakao.com/o/gSIkvvHc",
"status": "๋ชจ์ง‘์ค‘",
"meetingDate": "07์›” 21์ผ (๊ธˆ)",
"meetingTime": "์˜คํ›„ 01:00",
"createDate": "2023๋…„ 06์›” 11์ผ",
"maxApply": 5,
"currentApply": 1,
"minAge": 20,
"maxAge": 100,
"locationName": "์„œ์šธ ์„ฑ๋ถ๊ตฌ ์•ˆ์•”๋™5๊ฐ€ 104-30 ์บ์น˜์นดํŽ˜ ์•ˆ์•”",
"x": 127.02970799701643,
"y": 37.58392327180857,
"locationDetail": "6์ธต",
"views": 1,
"participants": [
{
"userId": 128,
"nickName": "nickname2",
"jobGroupMain": "๊ฐœ๋ฐœ",
"writer": true
}
]
}
}
"""
const val MUCKPOT_JOIN_RESPONSE = """
{
"status": 201
}
"""
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.yapp.muckpot.common.constants

const val LOGIN_URL = "/api/v1/users/login"
const val SIGN_UP_URL = "/api/v1/users"
const val EMAIL_REQUEST_URL = "/api/v1/emails/request"
const val EMAIL_VERIFY_URL = "/api/v1/emails/verify"
const val USER_PROFILE_URL = "/api/v1/users/profile"
const val LOGOUT_URL = "/api/v1/users/logout"
const val REISSUE_JWT_URL = "/api/v1/users/refresh"
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.yapp.muckpot.common.constants

const val MAX_APPLY_MIN_INVALID = "์ฐธ์—ฌ ์ธ์›์€ {value}๋ช… ์ด์ƒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค."
const val TITLE_MAX_INVALID = "์ œ๋ชฉ์€ {max}(์ž)๋ฅผ ๋„˜์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."
const val CONTENT_MAX_INVALID = "๋‚ด์šฉ์€ {max}(์ž)๋ฅผ ๋„˜์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."
const val LINK_MAX_INVALID = "๋งํฌ๋Š” {max}(์ž)๋ฅผ ๋„˜์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."
const val NOT_BLANK_COMMON = "๊ณต๋ฐฑ์ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."

const val PASSWORD_PATTERN_INVALID = "์˜๋ฌธ๊ณผ ์ˆซ์ž๋ฅผ ํฌํ•จํ•˜์—ฌ 8~20์ž๋กœ ์ž…๋ ฅํ•ด ์ฃผ์„ธ์š”."
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.yapp.muckpot.common.dto

import io.swagger.annotations.ApiModel
import io.swagger.annotations.ApiParam

@ApiModel(value = "์ปค์„œ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€์š”์ฒญ(๋ฌดํ•œ ์Šคํฌ๋กค)")
data class CursorPaginationRequest(
@field:ApiParam(value = "๋งˆ์ง€๋ง‰ ID, ๊ธฐ๋ณธ null", required = false)
var lastId: Long? = null,
@field:ApiParam(value = "์Šคํฌ๋กค ๋‹น ๋ฐ์ดํ„ฐ ํฌ๊ธฐ, ๊ธฐ๋ณธ $COUNT_PER_SCROLL_DEFAULT", required = false)
var countPerScroll: Long = COUNT_PER_SCROLL_DEFAULT
) {
companion object {
private const val COUNT_PER_SCROLL_DEFAULT = 10L
}
}
Loading

0 comments on commit 277a4f1

Please sign in to comment.