Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
730485c
fix: data์˜ serviceID ํƒ€์ž… ๋ณ€๊ฒฝ ๋ฐ ์นดํ…Œ๊ณ ๋ฆฌ ์ˆ˜์ •
bumstone Apr 10, 2025
903b4e6
fix: ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ์ˆ˜์ •, ๋„๋ฉ”์ธ ๊ฒฝ๋กœ ์ˆ˜์ •
bumstone Apr 16, 2025
9d78e40
Merge branch 'dev' of https://github.com/EWSNproject/HyetaekOn-BE intโ€ฆ
bumstone Apr 16, 2025
cfc6b41
Merge branch 'main' of https://github.com/EWSNproject/HyetaekOn-BE inโ€ฆ
bumstone Apr 16, 2025
0c537a4
fix: post ์‚ฌ์šฉ ์„œ๋น„์Šค id Long -> String ํƒ€์ž… ๋ณ€ํ™˜
bumstone Apr 17, 2025
e5a66c1
Merge pull request #35 from EWSNproject/fix/#19-public_data
bumstone Apr 17, 2025
4b9e0fa
fix: ๊ณต๊ณต๋ฐ์ดํ„ฐ ๋งคํ•‘ ์˜ค๋ฅ˜
bumstone Apr 18, 2025
39eb0d7
fix: ๊ณต๊ณต์„œ๋น„์Šค ์ „์ฒด ์กฐํšŒ ์ •๋ ฌ ๋ฐฉ์‹๊ณผ ์„œ๋น„์Šค ๋ถ„์•ผ ๋ฐ˜ํ™˜ ๋งคํ•‘ ์ˆ˜์ •
bumstone Apr 18, 2025
6322db6
Merge pull request #40 from EWSNproject/fix/#39-public_data
bumstone Apr 18, 2025
e4ee87e
refactor: post ์—”ํ‹ฐํ‹ฐ ๊ฐœ์„ 
bumstone Apr 19, 2025
bcc84f4
feat: post ์ „์ฒด๋ชฉ๋ก ์กฐํšŒ, postType๋ณ„ ๋ชฉ๋ก ์กฐํžˆ
bumstone Apr 19, 2025
b02b6e1
Merge branch 'fix/#39-public_data' of https://github.com/EWSNproject/โ€ฆ
bumstone Apr 19, 2025
03fbcf8
feat: ๊ฒŒ์‹œ๊ธ€ ์ถ”์ฒœ ๊ธฐ๋Šฅ ๊ตฌํ˜„
bumstone Apr 19, 2025
5506338
style: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ฝ”๋“œ ์ œ๊ฑฐ
bumstone Apr 19, 2025
07c495b
refactor: ๊ฒŒ์‹œ๊ธ€ ์ „์ฒด, type ๋ชฉ๋ก ์กฐํšŒ ํŽ˜์ด์ง• + ์ถ”์ฒœ์—ฌ๋ถ€ ํ™•์ธ, ๊ฒŒ์‹œ๊ธ€ ์ƒ์„ฑ ๋ฐ ์—…๋ฐ์ดํŠธ Dto ์ƒ์„ฑ
bumstone Apr 19, 2025
cb6d653
refactor: ๊ฒŒ์‹œ๊ธ€ ์ƒ์„ฑ, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œ ๋ฐฉ์‹ ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ, ์‚ญ์ œ ์ถ”๊ฐ€, soft Delete๋ฐฉ์‹๋„์ž…, requesโ€ฆ
bumstone Apr 26, 2025
52c950f
Merge pull request #43 from EWSNproject/refactor/#38-post
bumstone Apr 26, 2025
5495469
feat: ์ž์‹ ์ด ์ž‘์„ฑํ•œ ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก ์กฐํšŒ, ์ถ”์ฒœํ•œ ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก ์กฐํšŒ ๊ตฌํ˜„
bumstone Apr 26, 2025
7e81c81
feat: post security path ์ถ”๊ฐ€
bumstone Apr 26, 2025
034ceda
feat: post ๋ชฉ๋ก ์กฐํšŒ Security Path endpoint ๊ตฌ๋ถ„, post ๋„๋ฉ”์ธ ๊ฒฝ๋กœ ์ถ”๊ฐ€
bumstone Apr 26, 2025
168c045
feat: postType ํ•œ๊ธ€๋ช… ํŒŒ๋ผ๋ฏธํ„ฐ ์‚ฌ์šฉ
bumstone Apr 26, 2025
0c52355
feat: post ์ƒ์„ฑ ์‹œ, ์ €์žฅ ์‹œ์ ์— ํ˜„์žฌ ์‹œ๊ฐ„์œผ๋กœ ์„ค์ •
bumstone Apr 26, 2025
b7e4c24
Merge branch 'refactor/#38-post' of https://github.com/EWSNproject/Hyโ€ฆ
bumstone Apr 27, 2025
c606f32
feat: ๊ฒŒ์‹œ๊ธ€ ๋ชฉ๋ก ์กฐํšŒ ์—”๋“œํฌ์ธํŠธ ๋ณ€๊ฒฝ ํ›„ ์ ์šฉ
bumstone Apr 28, 2025
0d8190e
feat: ๊ณต๊ณต์„œ๋น„์Šค ๋ชฉ๋ก ์กฐํšŒ ๋งคํ•‘ ๋ฐ query ์˜ค๋ฅ˜ ์ˆ˜์ •
bumstone Apr 28, 2025
590efee
feat: ๊ณต๊ณต๋ฐ์ดํ„ฐ ๋ฐ ๊ณต๊ณต์„œ๋น„์Šค ์ผ์ • null๊ฐ’ ํ•„ํ„ฐ๋ง
bumstone Apr 29, 2025
e2d8dea
feat: ๊ณต๊ณต๋ฐ์ดํ„ฐ ํ˜ธ์ถœ ์‹œ mongodb ์ €์žฅ ์„ค์ •
bumstone Apr 29, 2025
d07e09c
refactor: mongodbํ•„๋“œ ์ˆ˜์ •, ๊ณต๊ณต๋ฐ์ดํ„ฐ ํ˜ธ์ถœ ์‹œ mongodb ๋ณ€ํ™˜ ๋ฐ์ดํ„ฐ ์ €์žฅ
bumstone Apr 29, 2025
86f4e34
post์ „์ฒด์ ์œผ๋กœ ์ˆ˜์ •
uk0k Apr 29, 2025
2ab9369
Merge pull request #47 from EWSNproject/bug/#44-publicService
bumstone Apr 29, 2025
1a7ff0f
feat: ๊ณต๊ณต์„œ๋น„์Šค ํ•„ํ„ฐ๋ง
bumstone Apr 29, 2025
d2e38f2
Merge pull request #48 from EWSNproject/bug/#44-publicService
bumstone Apr 29, 2025
f35eb65
feat: ๊ณต๊ณต์„œ๋น„์Šค ์‚ฌ์šฉ์ž ๋งž์ถคํ˜• ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ, ์ž๋™์™„์„ฑ ๊ตฌํ˜„
bumstone Apr 30, 2025
610507d
feat: ๊ณต๊ณต์„œ๋น„์Šค ์บ์‹ฑ ์„ค์ •
bumstone Apr 30, 2025
f35144c
feat: ์‚ฌ์šฉ์ž ์ˆ˜์ต ๋ฐ ์ง์—… ์ •๋ณด์— ๋”ฐ๋ฅธ incomelevel ์„ ์ •
bumstone Apr 30, 2025
248f025
feat: securityPath ๋“ฑ๋ก
bumstone Apr 30, 2025
12e8a29
refactor: mongodb ์ค‘๋ณต ์ œ๊ฑฐ ๋ฐ ์—…์„œํŠธ๋ฐฉ์‹ ๋™์ž‘
bumstone Apr 30, 2025
fd5cd35
refactor: mongodb ์ค‘๋ณต ์ œ๊ฑฐ ๋ฐ ์—…์„œํŠธ๋ฐฉ์‹ ๋™์ž‘
bumstone Apr 30, 2025
552b2e4
refactor: mongodb ์ค‘๋ณต ์ œ๊ฑฐ ๋ฐ ์œ ๋‹ˆํฌ ์ธ๋ฑ์Šค ์žฌ์„ค์ •
bumstone May 1, 2025
44893e7
refactor: mongodb ์ ‘์† ์‹œ๊ฐ„ ์—ฐ์žฅ, ๊ฒŒ์‹œ๊ธ€ ํ•„๋“œ ์ˆ˜์ •
bumstone May 1, 2025
698498e
Merge pull request #52 from EWSNproject/feat/#49-service_search
bumstone May 1, 2025
ed69244
style: UserInterest ํŒจํ‚ค์ง€๋ช… ์Šค๋„ค์ดํฌ ์ผ€์ด์Šค๋กœ ์ˆ˜์ •
bumstone May 1, 2025
b946e0e
feat: redis๋ฅผ ํ™œ์šฉํ•œ ์œ ์ €๋ณ„ ๊ฒ€์ƒ‰๊ธฐ๋ก ์ƒ์„ฑ, ์‚ญ์ œ ๊ตฌํ˜„
bumstone May 1, 2025
610ea32
rafactor: userId ๋ถˆํ•„์š”ํ•œ ๊ฒ€์ฆ ์ œ๊ฑฐ ๋ฐ refresh-expired ๋ณ€๊ฒฝ
bumstone May 1, 2025
92988b0
fix: MongoDB Atlas Search์˜ $search ๋ฌธ๋ฒ•์— ์œ ํšจํ•œ ์—ฐ์‚ฐ์ž๋กœ ์ˆ˜์ •
bumstone May 1, 2025
4e7a652
Merge pull request #55 from EWSNproject/feat/#54-search_history
bumstone May 1, 2025
b03d1b2
feat: ์‚ฌ์šฉ์ž ๋งž์ถค ์„œ๋น„์Šค ์ถ”์ฒœ
bumstone May 1, 2025
1be961d
PostController annotation ์ˆ˜์ •
uk0k May 2, 2025
37133fa
Merge branch 'fix/#36-post' into dev
uk0k May 2, 2025
4f8e01d
Merge pull request #56 from EWSNproject/feat/#53-recommend_service
bumstone May 3, 2025
94a6c6e
fix: ๋ถ๋งˆํฌ ๊ณต๊ณต์„œ๋น„์Šค ์ „์ฒด ๋ชฉ๋ก ์กฐํšŒ ๋ฐ˜์˜
bumstone May 3, 2025
4208e60
refactor: ์œ ์ € ์‹ ๊ณ  ์‚ฌ์œ  jsonํƒ€์ž… ์ˆ˜์ •
bumstone May 4, 2025
a32e3d4
feat: ์œ ์ € ์‹ ๊ณ  ๋กœ์ง ๋ฐ ์‹ ๊ณ  ์ฒ˜๋ฆฌ ์ƒํƒœ enum ์ ์šฉ, ๊ด€๋ฆฌ์ž ์‹ ๊ณ  ์Šน์ธ, ๊ฑฐ๋ถ€ ๋กœ์ง ์ถ”๊ฐ€
bumstone May 4, 2025
23644b1
style: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„ ์ œ๊ฑฐ
bumstone May 4, 2025
25e4015
Merge pull request #60 from EWSNproject/refactor/#57-user
bumstone May 4, 2025
4036a50
style: ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ถ€๋ถ„ ์ œ๊ฑฐ
bumstone May 4, 2025
8082ad2
fix: @AuthenticationPrincipal ์ˆ˜์ •
bumstone May 4, 2025
76d8277
fix: @AuthenticationPrincipal ์ˆ˜์ •
bumstone May 4, 2025
135588e
fix: @AuthenticationPrincipal ์ˆ˜์ •
bumstone May 5, 2025
d2b8c5a
post ์ˆ˜์ •
uk0k May 5, 2025
fd6f4fc
fix: ๋กœ์ปฌํ™˜๊ฒฝ(๊ฐœ๋ฐœ) HTTP ์ ์šฉ, ๋ฐฐํฌํ™˜๊ฒฝ์—์„œ๋Š” ๋ณด์•ˆ ๊ฐ•ํ™”(HTTPS), ์ฟ  ๋ฐ ์˜์กด์„ฑ ์„ค์ •
bumstone May 6, 2025
93f392d
Merge branch 'dev' of https://github.com/EWSNproject/HyetaekOn-BE intโ€ฆ
bumstone May 6, 2025
7678691
feat: ๊ฒŒ์‹œ๊ธ€ ๊ฒ€์ƒ‰ ์ถ”๊ฐ€
bumstone May 6, 2025
035bd93
fix: ๋งž์ถค ๊ฒ€์ƒ‰ ๋ฐ ์ถ”์ฒœ ์ˆ˜์ •
bumstone May 6, 2025
0ce1f91
Merge pull request #64 from EWSNproject/feat/#62-post_search
bumstone May 6, 2025
2e6f310
fix: ์ž๋™์™„์„ฑ ๊ฒฝ๋กœ ์ˆ˜์ •
bumstone May 6, 2025
b6002fc
style: GenericJob ์ˆ˜์ •
bumstone May 7, 2025
e17c640
feat: ๊ฒŒ์‹œ๊ธ€ ๋ฐ ๋Œ“๊ธ€ ์ž‘์„ฑ ์‹œ์— ์œ ์ € ์ ์ˆ˜ ๋ฐ˜์˜, ๋‚˜์ด ๊ฐ€์‚ฐ์น˜ ๋งž์ถค ์กฐ์ •
bumstone May 7, 2025
c45e9a1
refactor: ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ๋ฐ ์ฑ„ํƒ ์ž‘์„ฑ์ž๋งŒ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ˆ˜์ •
bumstone May 7, 2025
1af42ce
feat: ๋‹ต๋ณ€ ๋ชฉ๋ก ์กฐํšŒ ์ถ”๊ฐ€
bumstone May 7, 2025
62e0247
feat: created ๋‹ต๋ณ€ ํ•„๋“œ LOCALtiME ์ถ”๊ฐ€
bumstone May 7, 2025
5c354ce
์˜ค๋ฅ˜์ˆ˜์ •
uk0k May 8, 2025
0719a77
์˜ค๋ฅ˜์ˆ˜์ •
uk0k May 8, 2025
77d182b
refactor: ๋‚˜์ด ์กฐ๊ฑด range ํ•˜๋‚˜๋กœ ํ†ตํ•ฉ
bumstone May 8, 2025
a885753
Merge branch 'dev' of https://github.com/EWSNproject/HyetaekOn-BE intโ€ฆ
bumstone May 8, 2025
7f91518
๋‹ต๋ณ€ ์‚ญ์ œ, ํƒ€ํšŒ์› ์กฐํšŒ, ์ฑ—๋ด‡ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •
uk0k May 9, 2025
3ce1724
refactor: comment - user, post๊ฐ์ฒด๋กœ ์ „๋‹ฌํ•˜๋„๋ก ์ˆ˜์ •, Dto ์„ธ๋ถ„ํ™”, ๋Œ“๊ธ€ ์‚ญ์ œ ๋ฉ”์„œ๋“œ ๋ณ€๊ฒฝ
bumstone May 9, 2025
197c91c
Merge branch 'dev' of https://github.com/EWSNproject/HyetaekOn-BE intโ€ฆ
bumstone May 9, 2025
c26273c
refactor: ๋‹ต๋ณ€ ๊ด€๋ฆฌ์ž๋งŒ ์‚ญ์ œ์—์„œ ์ž‘์„ฑ์ž ์‚ญ์ œ๋กœ ์ˆ˜์ •, SecurityPath ์—”๋“œํฌ์ธํŠธ ๊ฒฝ๋กœ ์ถ”๊ฐ€
bumstone May 9, 2025
7d673f8
feat: ํ†ต๊ณ„์šฉ ์‚ญ์ œ ๋ฐ ์ •์ง€ ๋ชฉ๋ก ์กฐํšŒ(๋Œ“๊ธ€, ๋‹ต๋ณ€, ๊ฒŒ์‹œ๊ธ€)
bumstone May 9, 2025
0362eac
refactor: ๊ฒŒ์‹œ๊ธ€, ๋‹ต๋ณ€, ๋Œ“๊ธ€ BaseEntity ์ ์šฉ
bumstone May 9, 2025
cfd878b
refactor: ๋‹ต๋ณ€ ๊ฐ์ฒด ๋ฐ˜ํ™˜ ์ˆ˜์ •
bumstone May 9, 2025
c21e013
refactor: ๊ฒŒ์‹œ๊ธ€ ์‚ญ์ œ์ผ ๋ฐ˜์˜, ๊ฒŒ์‹œ๊ธ€ ์ด๋ฏธ์ง€ ์ €์žฅ ๋ช…์‹œ
bumstone May 9, 2025
dfb8d83
Merge pull request #72 from EWSNproject/feat/#71-comment
bumstone May 9, 2025
f50ff7c
style: ์ค‘๋ณต ๋ฐ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” import, ํ•„๋“œ ์ •๋ฆฌ
bumstone May 9, 2025
61299ae
refactor: ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์•„์˜ค๋Š” postType ์˜๋ฌธ์œผ๋กœ ๋ณ€๊ฒฝ
bumstone May 9, 2025
e3006e1
refactor: ์œ ์ € ๋ฐ ๊ฒŒ์‹œ๊ธ€ id, ๋‹‰๋„ค์ž„ ๋ณ€ํ™˜ ํ›„ ์ „์†ก
bumstone May 9, 2025
31477a2
refactor: baseTimeEntity์™€ ์ƒ์† ์—”ํ‹ฐํ‹ฐ ์ˆ˜์ •
bumstone May 9, 2025
9d1d35f
style: PathVariable ๋ช…์นญ ๋ช…์‹œ - answer
bumstone May 9, 2025
1acb3f9
Merge pull request #74 from EWSNproject/feat/#68-matched
bumstone May 9, 2025
bcbd408
์ฑ—๋ด‡ ๊ธฐ๋Šฅ ์ˆ˜์ • ๋ฐ ์ถ”๊ฐ€
uk0k May 9, 2025
1da091f
๋ฐฐ๋„ˆ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ฐ ์ˆ˜์ •
uk0k May 9, 2025
36cd041
fix: answer, comment, post BaseEntity ์ƒ์† ๋ถ„๋ฆฌ, nullable = true
bumstone May 9, 2025
ae0c7a1
Merge branch 'dev' of https://github.com/EWSNproject/HyetaekOn-BE intโ€ฆ
bumstone May 9, 2025
96b8ae4
Merge pull request #77 from EWSNproject/feat/#68-matched
bumstone May 9, 2025
5360016
refactor: recommend extends BaseEntity
bumstone May 11, 2025
5b680c3
Merge branch 'dev' of https://github.com/EWSNproject/HyetaekOn-BE intโ€ฆ
bumstone May 11, 2025
d7a0534
refactor: ๊ณต๊ณต๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” ์Šค์ผ€์ค„๋Ÿฌ ๋งค์ผ -> ๋งค์ฃผ๋กœ ๋ณ€๊ฒฝ
bumstone May 11, 2025
8eefbb7
feat: ์ตœ๊ทผ ๋ฐฉ๋ฌธ ์„œ๋น„์Šค ๋ชฉ๋ก ์กฐํšŒ ๊ธฐ๋Šฅ
bumstone May 12, 2025
89162c2
refactor: ์‚ฌ์šฉ์ž ๊ฒ€์ƒ‰ ๊ธฐ๋ก ์‚ญ์ œ redis ์ง์ ‘ ์‚ญ์ œ ๋ณ€๊ฒฝ
bumstone May 12, 2025
ba3ae54
style: PathVariable๋ช…์นญ ์ˆ˜์ •, ์•ˆ์“ฐ๋Š” import ์ •๋ฆฌ
bumstone May 12, 2025
f97ce08
refactor: id ํ•ด์‹œํ™” ๊ธฐ๋ฐ˜ ๋ฆฌ์ŠคํŠธ ๊ฒ€์ƒ‰ ๊ธฐ๋ก ์ €์žฅ, ์กฐํšŒ, ์‚ญ์ œ ์ˆ˜์ •
bumstone May 12, 2025
8d76e58
Merge pull request #79 from EWSNproject/feat/#68-matched
bumstone May 12, 2025
a93172a
style: springPath ์ตœ๊ทผ ๋ฐฉ๋ฌธ ์„œ๋น„์Šค ์—”๋“œํฌ์ธํŠธ ์ถ”๊ฐ€
bumstone May 12, 2025
26e2f40
settings: github workflow deploy.yml ์ž‘์„ฑ
bumstone May 13, 2025
be376ef
๊ฒŒ์‹œ๊ธ€ ๊ธ€์ž์ˆ˜ ์ˆ˜์ • ๋ฐ ์‹ ๊ณ  API ์—ฐ๊ฒฐ ๊ด€๋ จ ์ˆ˜์ •
uk0k May 15, 2025
9e08e96
settings: docker network ์ˆ˜์ •
bumstone May 15, 2025
e84efc7
style: userInterest๊ด€๋ จ ๋ถˆํ•„์š”ํ•œ ์ฃผ์„์ œ๊ฑฐ
bumstone May 15, 2025
94a6b8d
setting: sudo docker ์„ค์ •
bumstone May 15, 2025
3c10308
setting: docker network ๋ณ€๊ฒฝ
bumstone May 16, 2025
4dc0f3a
setting: index.html ์ถ”๊ฐ€
bumstone May 16, 2025
5241df5
setting: front url ์ถ”๊ฐ€ ๋ฐ env prod ์„ค์ •
bumstone May 16, 2025
39313fe
setting: env prod ์„ค์ •
bumstone May 16, 2025
6a99010
setting: ๋ถˆํ•„์š”ํ•œ ์„ค์ • ์ œ๊ฑฐ
bumstone May 16, 2025
f055798
setting: ๊ฐœ๋ฐœ์šฉ refresh๋งŒ๋ฃŒ์‹œ๊ฐ„ ๊ฐ์ถ•
bumstone May 16, 2025
6962c7d
setting: ์‹คํ–‰ env์— s3bucket์ถ”๊ฐ€
bumstone May 16, 2025
e3d59dd
setting: forward-headers-strategyํ™•์ธ ์„ค์ •
bumstone May 17, 2025
eb99060
fix: ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ • ์‹œ ์ด๋ฏธ์ง€ ์‚ญ์ œ ๋ฐ˜์˜ ์˜ค๋ฅ˜
bumstone May 21, 2025
9082396
Merge pull request #82 from EWSNproject/fix/#81-post
bumstone May 21, 2025
20b7476
fix: ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ • ์‹œ ์ด๋ฏธ์ง€ ์‚ญ์ œ ๋ฐ˜์˜ ์˜ค๋ฅ˜
bumstone May 21, 2025
1e1866e
Merge branch 'dev' of https://github.com/EWSNproject/HyetaekOn-BE intโ€ฆ
bumstone May 21, 2025
7b6c6ad
fix: ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ • ์‹œ ์ด๋ฏธ์ง€ ์‚ญ์ œ ๋ฐ˜์˜ ์˜ค๋ฅ˜
bumstone May 21, 2025
a08c730
setting: ๋กœ๊ทธ ๋‹จ์ˆœํ™”
bumstone May 21, 2025
669dead
fix: ๊ฒŒ์‹œ๊ธ€ ์ˆ˜์ • ์‹œ ์ด๋ฏธ์ง€ ์‚ญ์ œ ๋ฐ˜์˜ ์˜ค๋ฅ˜
bumstone May 21, 2025
e8a8e72
refactor: ๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ ๋ชฉ๋ก, ์ถ”์ฒœ ๋ชฉ๋ก ์กฐํšŒ n + 1 ๋ฌธ์ œ ๊ฐœ์„ 
bumstone May 21, 2025
1c886a9
refactor: ์—”ํ‹ฐํ‹ฐ๋ณ„ ์ผ๋Œ€๋‹ค ๊ด€๊ณ„์—์„œ๋Š” ์ง€์—ฐ๋กœ๋”ฉ ์ถ”๊ฐ€
bumstone May 21, 2025
b41d04b
refactor: ์œ ์ €๊ด€์‹ฌ์‚ฌ ์กฐํšŒ ์‹œ N + 1๋ฌธ์ œ ๊ฐœ์„ (EntityGraph ์ ์šฉ)
bumstone May 21, 2025
8340a64
refactor: ์ถ”์ฒœ ๊ฐ์ฒด(EntityGraph ์ ์šฉ)
bumstone May 21, 2025
e4fc775
refactor: ์ฒซ ์ธ์‚ฌ ๊ฒŒ์‹œ๊ธ€์—๋งŒ ํฌ์ธํŠธ 100์ ์šฉ
bumstone May 21, 2025
9dcd807
fix: ๋ณต์ˆ˜์˜ Bag ํƒ€์ž…(List) ํ•„๋“œ์˜ ๋™์‹œ Fetch Foin ์˜ˆ์™ธ ์ˆ˜์ •
bumstone May 21, 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
59 changes: 59 additions & 0 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Deploy to EC2 with Docker hub

on:
push:
branches:
- dev

jobs:
deploy:
runs-on: ubuntu-latest

steps:
# ์†Œ์Šค์ฝ”๋“œ ์ฒดํฌ์•„์›ƒ
- name: Checkout code
uses: actions/[email protected]

# Docker hub ๋กœ๊ทธ์ธ
- name: Log in to Docker Hub
uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}

# Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ฐ ํ‘ธ์‹œ
- name: Build and push Docker images
uses: docker/[email protected]
with:
context: . # Dockerfile ์œ„์น˜
file: ./Dockerfile
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/hyetaek-on:latest



# 3. EC2์—์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰
- name: Run jar on EC2 with environment variables
uses: appleboy/[email protected]
with:
host: ${{secrets.EC2_HOST}}
username: ${{secrets.EC2_USERNAME}}
key: ${{ secrets.EC2_PRIVATE_KEY }}
port: 22
script: |
# Docker Hub ๋กœ๊ทธ์ธ
echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
# ์ตœ์‹  ์ด๋ฏธ์ง€ ๊ฐ€์ ธ์˜ค๊ธฐ
sudo docker pull ${{ secrets.DOCKER_USERNAME }}/hyetaek-on:latest
# ๊ธฐ์กด ์ปจํ…Œ์ด๋„ˆ ์ค‘์ง€ ๋ฐ ์‚ญ์ œ
sudo docker stop hyetaek-on || true
sudo docker rm hyetaek-on || true
# ์ƒˆ ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰
sudo docker run -d \
--name hyetaek-on \
--env SPRING_PROFILES_ACTIVE=prod,s3Bucket \
--env-file ${{ secrets.EC2_TARGET_PATH }}/.env \
--network hyetaekon-network \
-p 8080:8080 \
-v ${{ secrets.EC2_TARGET_PATH }}/logs:/app/logs \
${{ secrets.DOCKER_USERNAME }}/hyetaek-on:latest
10 changes: 7 additions & 3 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,13 @@ dependencies {
runtimeOnly 'com.mysql:mysql-connector-j'

// MongoDB
/*implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
implementation 'org.mongodb:mongodb-driver-sync'
implementation 'org.mongodb:mongodb-driver-core'*/
implementation 'org.springframework.boot:spring-boot-starter-data-mongodb'
// implementation 'org.mongodb:mongodb-driver-sync'
// implementation 'org.mongodb:mongodb-driver-core'

// Caffeine
implementation 'org.springframework.boot:spring-boot-starter-cache'
implementation 'com.github.ben-manes.caffeine:caffeine'

// redis
implementation 'org.springframework.boot:spring-boot-starter-data-redis'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;

@EnableJpaAuditing
@SpringBootApplication
@EnableScheduling
@EnableMongoRepositories
public class HyetaekonApplication {

public static void main(String[] args) {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,14 @@

import com.hyetaekon.hyetaekon.answer.dto.AnswerDto;
import com.hyetaekon.hyetaekon.answer.service.AnswerService;
import com.hyetaekon.hyetaekon.common.jwt.CustomUserDetails;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;

@RestController
Expand All @@ -15,27 +19,47 @@ public class AnswerController {

private final AnswerService answerService;

// ๋‹ต๋ณ€ ๋ชฉ๋ก ์กฐํšŒ
// ๊ฒŒ์‹œ๊ธ€์˜ ๋‹ต๋ณ€ ๋ชฉ๋ก ์กฐํšŒ
@GetMapping
public ResponseEntity<Page<AnswerDto>> getAnswersByPostId(
@PathVariable("postId") Long postId,
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "5") int size) {

Pageable pageable = PageRequest.of(page, size);
Page<AnswerDto> answers = answerService.getAnswersByPostId(postId, pageable);
return ResponseEntity.ok(answers);
}

// ๋‹ต๋ณ€ ์ž‘์„ฑ
@PostMapping
@PreAuthorize("hasRole('USER')")
public ResponseEntity<AnswerDto> createAnswer(@PathVariable Long postId, @RequestBody AnswerDto answerDto) {
AnswerDto createdAnswer = answerService.createAnswer(postId, answerDto);
public ResponseEntity<AnswerDto> createAnswer(
@PathVariable("postId") Long postId,
@RequestBody AnswerDto answerDto,
@AuthenticationPrincipal CustomUserDetails userDetails) {
AnswerDto createdAnswer = answerService.createAnswer(postId, answerDto, userDetails.getId());
return ResponseEntity.status(HttpStatus.CREATED).body(createdAnswer);
}

// ๋‹ต๋ณ€ ์ฑ„ํƒ
@PutMapping("/{answerId}/select")
@PreAuthorize("hasRole('USER')")
public ResponseEntity<Void> selectAnswer(@PathVariable Long answerId) {
answerService.selectAnswer(answerId);
public ResponseEntity<Void> selectAnswer(
@PathVariable("postId") Long postId,
@PathVariable("answerId") Long answerId,
@AuthenticationPrincipal CustomUserDetails userDetails) {
// ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž์˜ ID๋ฅผ ์„œ๋น„์Šค์— ์ „๋‹ฌ
answerService.selectAnswer(postId, answerId, userDetails.getId());
return ResponseEntity.ok().build();
}

// ๋‹ต๋ณ€ ์‚ญ์ œ (๊ด€๋ฆฌ์ž๋งŒ ๊ฐ€๋Šฅ)
@DeleteMapping("/admin/answers/{answerId}")
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity<Void> deleteAnswer(@PathVariable Long answerId) {
answerService.deleteAnswer(answerId);
// ๋‹ต๋ณ€ ์‚ญ์ œ (๊ด€๋ฆฌ์ž์™€ ์ž‘์„ฑ์ž๋งŒ ๊ฐ€๋Šฅ)
@DeleteMapping("/{answerId}")
public ResponseEntity<Void> deleteAnswer(
@PathVariable("postId") Long postId,
@PathVariable("answerId") Long answerId,
@AuthenticationPrincipal CustomUserDetails userDetails) {
answerService.deleteAnswer(postId, answerId, userDetails.getId(), userDetails.getRole());
return ResponseEntity.noContent().build();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ public class AnswerDto {
private Long id;
private Long postId;
private Long userId;
private String nickname;
private String content;
private LocalDateTime createdAt;
private boolean selected;
Expand Down
56 changes: 46 additions & 10 deletions src/main/java/com/hyetaekon/hyetaekon/answer/entity/Answer.java
Original file line number Diff line number Diff line change
@@ -1,33 +1,69 @@
package com.hyetaekon.hyetaekon.answer.entity;

import com.hyetaekon.hyetaekon.common.util.BaseEntity;
import com.hyetaekon.hyetaekon.post.entity.Post;
import com.hyetaekon.hyetaekon.user.entity.User;
import jakarta.persistence.*;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.*;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import java.time.LocalDateTime;


@Entity
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Table(name = "answer")
@EntityListeners(AuditingEntityListener.class)
public class Answer {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; // ๋‹ต๋ณ€ ID

@Column(name = "post_id", nullable = false)
private Long postId; // ๊ฒŒ์‹œ๊ธ€ ID
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_id")
private Post post;

@Column(name = "user_id", nullable = false)
private Long userId; // ํšŒ์› ID
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id")
private User user;

@Column(name = "content", columnDefinition = "TEXT", nullable = false)
private String content; // ๋‹ต๋ณ€ ๋‚ด์šฉ

@Column(name = "created_at", nullable = false)
private LocalDateTime createdAt; // ์ƒ์„ฑ์ผ

@Column(name = "selected", nullable = false)
private boolean selected; // ์ฑ„ํƒ ์—ฌ๋ถ€

@CreatedDate
@Column(name = "created_at", nullable = false, updatable = false)
private LocalDateTime createdAt;

@Column(name = "deleted_at")
private LocalDateTime deletedAt;

@Column(name = "suspend_at")
private LocalDateTime suspendAt;

// ์‚ญ์ œ ์ฒ˜๋ฆฌ
public void delete() {
this.deletedAt = LocalDateTime.now();
}

// ์ •์ง€ ์ฒ˜๋ฆฌ
public void suspend() {
this.suspendAt = LocalDateTime.now();
}

public String getDisplayContent() {
if (this.deletedAt != null) {
return "์‚ญ์ œ๋œ ๋‹ต๋ณ€์ž…๋‹ˆ๋‹ค.";
} else if (this.suspendAt != null) {
return "๊ด€๋ฆฌ์ž์— ์˜ํ•ด ์‚ญ์ œ๋œ ๋‹ต๋ณ€์ž…๋‹ˆ๋‹ค.";
}
return content;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,15 @@
import com.hyetaekon.hyetaekon.answer.entity.Answer;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
import org.mapstruct.ReportingPolicy;

@Mapper(componentModel = "spring")
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface AnswerMapper {
AnswerMapper INSTANCE = Mappers.getMapper(AnswerMapper.class);

@Mapping(target = "content", expression = "java(answer.getDisplayContent())")
@Mapping(source = "user.id", target = "userId")
@Mapping(source = "post.id", target = "postId")
@Mapping(source = "user.nickname", target = "nickname")
AnswerDto toDto(Answer answer);

@Mapping(target = "id", ignore = true) // id๋Š” ์ž๋™ ์ƒ์„ฑ๋˜๋ฏ€๋กœ ๋ฌด์‹œ
@Mapping(target = "selected", ignore = true) // ๊ธฐ๋ณธ๊ฐ’ false ์ฒ˜๋ฆฌ
@Mapping(target = "createdAt", ignore = true) // createdAt ์ž๋™ ์„ค์ •
Answer toEntity(AnswerDto answerDto);
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,28 @@
package com.hyetaekon.hyetaekon.answer.repository;

import com.hyetaekon.hyetaekon.answer.entity.Answer;
import com.hyetaekon.hyetaekon.post.entity.Post;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface AnswerRepository extends JpaRepository<Answer, Long> {
// ํŽ˜์ด์ง€๋„ค์ด์…˜ ์ ์šฉํ•œ ๋‹ต๋ณ€ ๋ชฉ๋ก ์กฐํšŒ (post ๊ฐ์ฒด ์‚ฌ์šฉ)
Page<Answer> findByPost(Post post, Pageable pageable);

// ์ฑ„ํƒ ์—ฌ๋ถ€ ๋ฐ ๋“ฑ๋ก์ผ ๊ธฐ์ค€ ์ •๋ ฌ๋œ ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ๋œ ๋‹ต๋ณ€ ๋ชฉ๋ก ์กฐํšŒ
Page<Answer> findByPostOrderBySelectedDescCreatedAtDesc(Post post, Pageable pageable);

// ์‚ญ์ œ๋œ ๋‹ต๋ณ€๋งŒ ์กฐํšŒ (๊ด€๋ฆฌ์ž์šฉ)
Page<Answer> findByPostAndDeletedAtIsNotNull(Post post, Pageable pageable);

// ์ •์ง€๋œ ๋‹ต๋ณ€๋งŒ ์กฐํšŒ (๊ด€๋ฆฌ์ž์šฉ)
Page<Answer> findByPostAndSuspendAtIsNotNull(Post post, Pageable pageable);

// ํ†ต๊ณ„์šฉ ์นด์šดํŒ… ๋ฉ”์„œ๋“œ๋“ค
long countByPost(Post post);
long countByPostAndDeletedAtIsNotNull(Post post);
long countByPostAndSuspendAtIsNotNull(Post post);
}
Loading