1-1 ๋ฌธ์ ์ธ์
- TodoSaveRequest ์ ํ๋์ธ
title,contents๋ฅผ ๋ณด๋ฉด ๊ธฐ์กด์๋@NotBlank์ด๋ ธํ ์ด์ ์ด ์ ์ฉ๋์ด ์์๋ค.
Schedule ์ญํ ์ ํ๋ Todo ๋ฅผ ์์ฑํ ๋ ๋์ด์ฐ๊ธฐ๊ฐ ๋ถ๊ฐ๋ฅํ ์กฐ๊ฑด์ ์ ํฉํ์ง ์์ ๋ณด์ธ๋ค.
1-2 ํด๊ฒฐ ๋ฐฉ์
- ๊ฒ์ฆ ์กฐ๊ฑด์ ๋ณ๊ฒฝ
@NotNull์ด๋ ธํ ์ด์ ์ผ๋ก Todos ํ ์ด๋ธ์ title, contents ํ๋๊ฐ์ด null ๋ก ๋ค์ด๊ฐ๋ ๊ฒฝ์ฐ๋ฅผ ๋ฐฉ์งํ๋ค.- ์ถ๊ฐ์ ์ผ๋ก
@Size(min = 1, max = 255)์ด๋ ธํ ์ด์ ์ ์ถ๊ฐํด์ ํ์ฌ Todo Entity ์ค์ ์์ String ์ ๊ธฐ๋ณธ ์ค์ ์ผ๋ก DB ์์๋ title, contents ๊ฐ๊ฐ varchar(255) ํ์ ์ผ๋ก ๋ฐ๋๋ก ์ ์ฉ๋์ด ์๋๋ฐ, ๊ธธ์ด์ ๋ํ ์ ํ์ด ์์ด 255์๋ฅผ ๋์ด๊ฐ๋ ์์ฒญ์ ๋ํด ์๊ธธ ์ ์๋ ์๋ฌ๋ฅผ ๋ฐฉ์งํ๋ค
1-3 ํด๊ฒฐ์๋ฃ
{
"id": 17,
"title": "์ ๋ชฉ ๋์ด์ฐ๊ธฐ",
"contents": "๋ด์ฉ ๋์ด์ฐ๊ธฐ",
"weather": "Hot and Humid",
"user": {
"id": 3,
"email": "hojin@naver.com"
}
}๋์ผํ ์ด์ ๋ก Comment Entity ์ contents ํ๋ ๋ํ validation ์ ์์ ํด ์ฃผ์๋ค
2-1 ๋ฌธ์ ์ธ์
- Todo ์ ๋ด๋น์๋ฅผ ์ง์ ํ๋ ๋น์ฆ๋์ค ๋ก์ง์ธ
/domain/manager/service/ManagerService์ ์์นํ saveManager ๋ฉ์๋์์
๋ด๋น์๋ฅผ ๋ฑ๋กํ๋ ์ ์ ๊ฐ ์ผ์ ์ ์์ฑํ ์ ์ ์ ๋์ผํ ์ ์ ์ธ์ง ํ์ธํ๋ ์ ์ฐจ๊ฐ ์๋ค.
๋ฐ๋ผ์ ๋ค๋ฅธ ์ฌ๋์ด ๋ง๋ ์ผ์ ์ ๋ด๋น์ ๊ถํ์ ๋๊ตฌ๋ ์ง ๋ถ์ฌํ ์ ์๋ ์ํฉ์ด๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ์ ์ธ ์์ธ์ฒ๋ฆฌ๊ฐ ํ์ํ๋ค.
2-2 ํด๊ฒฐ ๋ฐฉ์
- ๋ณธ์ธ์ ํ์ธํ๋ ์์ธ์ฒ๋ฆฌ๋ฅผ ์ถ๊ฐ
// ManagerService.java ๋ด๋ถ์ saveManager() ์ ์ถ๊ฐํ ์์ธ์ฒ๋ฆฌ
if(!user.getId().equals(todo.getUser().getId())){
throw new ResponseStatusException(HttpStatus.UNAUTHORIZED, "๋ณธ์ธ์ด ์์ฑํ์ง ์์ Todo ์ ๋ด๋น์๋ฅผ ๋ฑ๋กํ ์ ์์ต๋๋ค.");
}2-3 ํด๊ฒฐ์๋ฃ
- ๋ณธ์ธ์ด ์์ฑํ์ง ์์ ์ผ์ ์ ๋ํ ๋ด๋น์ ๋ฑ๋ก ํ์ ๋
{
"timestamp": "2025-06-12T03:23:32.313+00:00",
"status": 401,
"error": "Unauthorized",
"path": "/todos/12/managers"
}๊ถํ์ ๊ด๋ จ๋ ๋ถ๋ถ์ด UserRole.ADMIN, UserRole.USER ์ด๋ ๊ฒ๋ง ๊ด๋ฆฌ๋๊ณ ์๋๋ฐ,
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ด๋ จ๋ ์ปค์คํ
์์ธ๊ฐ ์กด์ฌํ์ง ์๋ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
Admin, User ์ญํ ๋ฟ๋ง ์๋๋ผ ๋ณธ์ธ ํ์ธ๊ณผ ๊ฐ์ ๊ฒ์ฆ์ด ์ปค์คํ
์์ธ์ ํจ๊ป ์ถ๊ฐ๋์ด์ผ ํ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.