-
Notifications
You must be signed in to change notification settings - Fork 2
Open
1 / 11 of 1 issue completedOpen
1 / 11 of 1 issue completed
Copy link
Labels
์์
์ ์์
์์ ์ ์ค๋น์ํ์์
์์ ์ ์ค๋น์ํ
Description
๐ ํ์ฌ ๋ฌธ์ ์
- ๋๋ฉ์ธ(์: ๊ณต์ฐ์ฅ, ๊ณต์ฐ ๋ฑ)์ ๋ํ Delete ๋ก์ง์ด ๋ฏธ๊ตฌํ์ ๋๋ค.
- ๋ฌผ๋ฆฌ ์ญ์ ์ ์ด๋ ฅ ์ถ์ /๋ณต๊ตฌ๊ฐ ์ด๋ ค์ ์ด์ ๋ฆฌ์คํฌ๊ฐ ์์ต๋๋ค.
- Hibernate์
@SoftDelete,@SQLDelete,@Where๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์๋์ผ๋ก Soft Delete๋ฅผ ์ ์ฉํด์ผ ํฉ๋๋ค. - ํ์ฌ ์ค๋ณต ๊ฒ์ฆ(
validateConcertNameโexistsByConcertName)๊ณผ ์กฐํ ์ฟผ๋ฆฌ๋ค์ด โ์ญ์ ๋ ๋ฐ์ดํฐโ๋ฅผ ๊ณ ๋ คํ์ง ์์ ํฅํ Soft Delete ๋์ ์ ์ถฉ๋/๋ ธ์ถ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
๐ ๏ธ ํด๊ฒฐ ๋ฐฉ์ / ์ ์ ๊ธฐ๋ฅ
-
Soft Delete ๋ง์ปค ์ปฌ๋ผ ์ถ๊ฐ
- ์ต์
A:
isDeleted BOOLEAN DEFAULT false - ์ต์
B:
deletedAt TIMESTAMP WITH TIME ZONE(+ ํ์ ์deletedBy UUID๋๋VARCHAR) - ๊ฒฐ์ ํ์: ์ A/B ์ค ํ1(๋๋ ๋ณํ). ์ด์/๊ฐ์ฌ ์๊ตฌ์ฌํญ์ ๋ง์ถฐ ์ ํํด ์ฃผ์ธ์.
- ์ต์
A:
-
์กฐํ/๊ฒ์ฆ ๊ฒฝ๋ก ์ ๋ฉด ๋ฐ์
findConcertById,filteredConcertForAdmin,findConcertInfoByConcertIdForAdmin๋ฑ ๋ชจ๋ ์กฐํ ์ฟผ๋ฆฌ์ โ์ญ์ ์๋โ ์กฐ๊ฑด ์๋ ์ถ๊ฐ.validateConcertNameโ โ์ญ์ ์๋โ ์กฐ๊ฑด์ ํฌํจํ ์ค๋ณต ๊ฒ์ฆ์ผ๋ก ์์ (์ญ์ ๋ ๋ฐ์ดํฐ๋ ์ค๋ณต์ผ๋ก ๋ณด์ง ์์).
-
Repository/์ฟผ๋ฆฌ ๋ฆฌํฉํ ๋ง
- ์:
existsByConcertNameAndIsDeletedFalse(...),findByConcertIdAndIsDeletedFalse(...)๋ฑ ๋ช ์์ ๋ฉ์๋ ๋์ . ConcertRepositoryCustomJPQL/QueryDSL์๋isDeleted = false(๋๋deletedAt IS NULL) ์กฐ๊ฑด ์๋ ์ถ๊ฐ.
- ์:
-
DB ๋ง์ด๊ทธ๋ ์ด์
-
Soft Delete ์ปฌ๋ผ ์ถ๊ฐ ๋ฐ ์ธ๋ฑ์ค ๋ณด๊ฐ.
-
๊ณ ์ ์ ์ฝ๊ณผ์ ์ถฉ๋ ๋ฐฉ์ง(์ธ๋ค์ผ/์ข์ ๋ฐฐ์น๋ ๊ฒฝ๋ก
unique = true):- ๋์ผ ๊ฒฝ๋ก ์ฌ์ฌ์ฉ ๊ฐ๋ฅ ์ ์ฑ ์ฌ๋ถ ๊ฒฐ์ ํ์.
- ์ฌ์ฌ์ฉ ํ์ฉ ์, โํ์ฑ ๋ ์ฝ๋ ํ์ ๊ณ ์ โ๊ฐ ํ์(์: ๋ถ๋ถ ๊ณ ์ ์ธ๋ฑ์ค ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ ๋ฒจ ๊ฒ์ฆ).
-
-
API ์ค๊ณ
DELETE /admin/concerts/{concertId}(Soft Delete)- ๊ถํ ์ฒดํฌ(๊ด๋ฆฌ์ ํ์ ), ๋ฉฑ๋ฑ์ฑ ๋ณด์ฅ(์ด๋ฏธ ์ญ์ ์ ์ ์ ํ ์๋ต ๊ท์ฝ ์ ์).
-
ํ ์คํธ/์ด์ ๊ฐ์ด๋
- ๋จ์/ํตํฉ ํ ์คํธ: ์ญ์ /์กฐํ/์ค๋ณต๊ฒ์ฆ/์บ์/์๋ฒ ๋ฉ ์ํธ์์ฉ ๊ฒ์ฆ.
- ์ด์: ์ญ์ ํ ๊ฒ์ ๊ฒฐ๊ณผ/๊ด๋ฆฌ์ ๋ฆฌ์คํธ์์ ๋ ธ์ถ๋์ง ์์์ ํ์ธ.
โ๏ธ ์์ ๋ด์ฉ
๐โโ๏ธ ๋ด๋น์
- ๋ฐฑ์๋: @Chuseok22
- ํ๋ก ํธ์๋: ์ด๋ฆ
- ๋์์ธ: ์ด๋ฆ
Sub-issues
Metadata
Metadata
Assignees
Labels
์์
์ ์์
์์ ์ ์ค๋น์ํ์์
์์ ์ ์ค๋น์ํ