Repository: CodeitSB-Team9/sb01-deokhugam-team09
Pull request #54: [#42] User 요청/응답 DTO 설계
Author: login: kaya-frog-ramer
Labels: name: ✨ 새 기능 추가
description: 새로운 기능 추가 작업
Created: 2025-04-23T00:35:22Z | Merged: 2025-04-23T04:04:06Z

## 📌 Pull request to dev
요청과 응답 DTO를 만들었습니다. 

## ✅ 주요 변경 사항
- DTO 생성
- 공백제거 등 자잘한 수정 

close #51 


Linked issue #51: 공통 기능: PageResponse 추가
## 📝 제목
공통 기능: PageResponse 추가

## 🔧 할 일
- [x] PageResponse 추가

## 📎 참고사항 (선택)
<!-- 관련 이슈, PR, 문서, 링크 등 -->


Diff:
diff --git a/src/main/java/com/codeit/sb01_deokhugam/common/Period.java b/src/main/java/com/codeit/sb01_deokhugam/common/Period.java
index 069b6786..3494c41b 100644
--- a/src/main/java/com/codeit/sb01_deokhugam/common/Period.java
+++ b/src/main/java/com/codeit/sb01_deokhugam/common/Period.java
@@ -2,7 +2,6 @@
 
 // 파워유저 기간별 조회시에 사용하는 열거형
 // 컨트롤러에서 받을때는 period라는 파라미터로 받게 된다.
-//todo 인기도서 확인시에도 쓰이므로 공통클래스로 쓰는게 어떤지 물어보기
 public enum Period {
 	DAILY,
 	WEEKLY,
diff --git a/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/PowerUserDto.java b/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/PowerUserDto.java
deleted file mode 100644
index 31c17ffe..00000000
--- a/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/PowerUserDto.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.codeit.sb01_deokhugam.domain.user.dto;
-
-public record PowerUserDto(
-
-) {
-}
diff --git a/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/RegisterRequest.java b/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/RegisterRequest.java
deleted file mode 100644
index c3a5c735..00000000
--- a/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/RegisterRequest.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.codeit.sb01_deokhugam.domain.user.dto;
-
-public record RegisterRequest(
-	//todo 아직 조건 다 안넣었음.
-	//모든 Dto는 서비스+테스트먼저 짜고 할 예정
-	/*
-	@NotBlank(message = "이메일은 필수 입력 값입니다.")
-	@Email(message = "유효한 이메일 형식이 아닙니다.")
-	String email,
-
-	@NotBlank(message = "닉네임은 필수 입력 값입니다.")
-	@Size(min = 2, max = 20, message = "닉네임은 2자 이상 20자 이하로 입력해주세요.")
-	String nickname,
-
-	@NotBlank(message = "비밀번호는 필수 입력 값입니다.")
-	@Size(min = 8, max = 20, message = "비밀번호는 8자 이상 20자 이하, 영문자, 숫자, 특수문자를 포함해야 합니다.")
-	String password*/
-) {
-}
diff --git a/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/UserDto.java b/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/UserDto.java
deleted file mode 100644
index 9fcf4d35..00000000
--- a/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/UserDto.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.codeit.sb01_deokhugam.domain.user.dto;
-
-import java.time.Instant;
-
-public record UserDto(
-
-	String email,
-	String nickname,
-	String password,
-	Instant createdAt
-) {
-
-}
diff --git a/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/UserLoginRequest.java b/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/UserLoginRequest.java
deleted file mode 100644
index ba573c38..00000000
--- a/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/UserLoginRequest.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.codeit.sb01_deokhugam.domain.user.dto;
-
-public record UserLoginRequest(
-
-	String email,
-
-	String password
-
-) {
-
-}
diff --git a/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/UserUpdateRequest.java b/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/UserUpdateRequest.java
deleted file mode 100644
index f9781963..00000000
--- a/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/UserUpdateRequest.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.codeit.sb01_deokhugam.domain.user.dto;
-
-public record UserUpdateRequest(
-	String nickname
-) {
-
-}
diff --git a/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/request/RegisterRequest.java b/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/request/RegisterRequest.java
new file mode 100644
index 00000000..87b46856
--- /dev/null
+++ b/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/request/RegisterRequest.java
@@ -0,0 +1,28 @@
+package com.codeit.sb01_deokhugam.domain.user.dto.request;
+
+import jakarta.validation.constraints.Email;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Pattern;
+import jakarta.validation.constraints.Size;
+
+public record RegisterRequest(
+	@NotBlank(message = "이메일은 필수 입력 항목입니다.")
+	@Email(message = "유효한 이메일 형식이 아닙니다.") //INVALID_INPUT_VALUE(잘못된 입력값입니다.) 반환
+	String email,
+
+	@NotBlank(message = "닉네임은 최소 2자 이상이어야 합니다.")
+	@Size(min = 2, max = 20, message = "닉네임은 2자 이상 20자 이하로 입력해주세요.") //닉네임 20자 초과시
+	String nickname,
+
+	//비밀번호 조건 안지켰을 시 :  INVALID_INPUT_VALUE(잘못된 입력값입니다.) 반환
+	@NotBlank(message = "비밀번호는 필수 입력 항목입니다.")
+	@Size(min = 8, max = 20, message = "비밀번호는 8자 이상 20자 이하, 영문자, 숫자, 특수문자를 포함해야 합니다.")
+	@Pattern(regexp = "^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{8,20}$", message = "유효한 이메일 형식이 아닙니다.")
+	String password
+) {
+}
+
+//비밀번호 확인 불일치: 비밀번호가 일치하지 않습니다
+
+//닉네임 글자수 조건, 이메일형식, 비번형식 불만족: DomainException/INVALID_INPUT_VALUE/잘못된 입력값입니다./400
+//이미 존재하는 이메일로 가입 시도: UserException/EMAIL_DUPLICATION/이미 존재하는 이메일입니다./409/이메일 반환
diff --git a/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/request/UserLoginRequest.java b/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/request/UserLoginRequest.java
new file mode 100644
index 00000000..4f0852bd
--- /dev/null
+++ b/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/request/UserLoginRequest.java
@@ -0,0 +1,16 @@
+package com.codeit.sb01_deokhugam.domain.user.dto.request;
+
+import jakarta.validation.constraints.Email;
+import jakarta.validation.constraints.NotBlank;
+
+public record UserLoginRequest(
+	@NotBlank(message = "이메일은 필수 입력 항목입니다.")
+	@Email(message = "유효한 이메일 주소를 입력해주세요.")
+	String email,
+	@NotBlank(message = "비밀번호는 필수 입력 항목입니다.")
+	String password
+	// 예외처리 - 타입/코드/메세지/응답코드
+	//아디비번 공백들어왔을 때 DomainException/INVALID_INPUT_VALUE/잘못된 입력값입니다./400
+	//아디비번 중 틀린거잇을때 UserException/LOGIN_INPUT_INVALID/이메일 또는 비밀번호가 올바르지 않습니다./401
+) {
+}
diff --git a/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/request/UserUpdateRequest.java b/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/request/UserUpdateRequest.java
new file mode 100644
index 00000000..0d079dba
--- /dev/null
+++ b/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/request/UserUpdateRequest.java
@@ -0,0 +1,11 @@
+package com.codeit.sb01_deokhugam.domain.user.dto.request;
+
+import jakarta.validation.constraints.Size;
+
+public record UserUpdateRequest(
+	@Size(min = 2, max = 20, message = "닉네임은 2자 이상 20자 이하로 입력해주세요.")
+	String nickname
+) {
+}
+//닉네임 공백: DomainException/INVALID_INPUT_VALUE/닉네임은 2자 이상 20자 이하로 입력해주세요./400
+//근데 "ㄱ " 이런식으로 공백들어가도 프로토타입에서 되긴됨 ;;;
\ No newline at end of file
diff --git a/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/response/CursorPageResponsePowerUserDto.java b/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/response/CursorPageResponsePowerUserDto.java
new file mode 100644
index 00000000..c7af48c7
--- /dev/null
+++ b/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/response/CursorPageResponsePowerUserDto.java
@@ -0,0 +1,14 @@
+package com.codeit.sb01_deokhugam.domain.user.dto.response;
+
+import java.util.List;
+
+public record CursorPageResponsePowerUserDto(
+	// todo 페이저블 반환값 형태로 받게될지에 따라서 수정한번더
+	List<PowerUserDto> powerUserDtoList,
+	String nextCursor, //다음페이지 커서_닉네임
+	String nextAfter, //마지막 요소의 생성 시간
+	Integer size, //페이지 크기
+	Integer totalElements,
+	boolean hasNext
+) {
+}
diff --git a/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/response/PowerUserDto.java b/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/response/PowerUserDto.java
new file mode 100644
index 00000000..2858ab20
--- /dev/null
+++ b/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/response/PowerUserDto.java
@@ -0,0 +1,17 @@
+package com.codeit.sb01_deokhugam.domain.user.dto.response;
+
+import java.time.Instant;
+import java.util.UUID;
+
+public record PowerUserDto(
+	UUID userId,
+	String nickname,
+	String period, //랭킹 조회시의 기간조건
+	Instant createdAt,
+	Integer rank,
+	Double score,
+	Double reviewScoreSum,
+	Integer likeCount,
+	Integer commentCount
+) {
+}
diff --git a/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/response/UserDto.java b/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/response/UserDto.java
new file mode 100644
index 00000000..54238e6e
--- /dev/null
+++ b/src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/response/UserDto.java
@@ -0,0 +1,25 @@
+package com.codeit.sb01_deokhugam.domain.user.dto.response;
+
+import java.time.Instant;
+
+public record UserDto(
+	String email,
+	String nickname,
+	String password,
+	Instant createdAt
+) {
+}
+//해당유저 없으면 UserException/USER_NOT_FOUND/사용자를 찾을 수 없습니다./404
+//논리삭제만하고 논리삭제 한번더했을때도 마찬가지로 유저낫파운드
+
+//todo 물리삭제하면 이상한거뜸;; 물리삭제 안되는듯? 왜이럼? 나중에 확인해보기
+//논리삭제 및 물리삭제 시도후실패 이후 동일이메일로 계정생성 시도시 이미존재하는 이메일이라고뜸.
+/*
+{
+	"timestamp": "2025-04-22T06:40:26.404564816Z",
+	"code": "DataIntegrityViolationException",
+	"message": "could not execute statement [ERROR: update or delete on table \"users\" violates foreign key constraint \"fk8omq0tc18jd43bu5tjh6jvraq\" on table \"comments\"\n  Detail: Key (id)=(76e8a0b8-d718-47af-a3d1-ec8c27f18833) is still referenced from table \"comments\".] [delete from users where id=?]; SQL [delete from users where id=?]; constraint [fk8omq0tc18jd43bu5tjh6jvraq]",
+	"details": {},
+	"exceptionType": "DataIntegrityViolationException",
+	"status": 500
+	}*/
diff --git a/src/main/java/com/codeit/sb01_deokhugam/domain/user/mapper/UserMapper.java b/src/main/java/com/codeit/sb01_deokhugam/domain/user/mapper/UserMapper.java
index dbcf4c8e..95c6e29d 100644
--- a/src/main/java/com/codeit/sb01_deokhugam/domain/user/mapper/UserMapper.java
+++ b/src/main/java/com/codeit/sb01_deokhugam/domain/user/mapper/UserMapper.java
@@ -4,12 +4,11 @@
 
 import org.mapstruct.Mapper;
 
-import com.codeit.sb01_deokhugam.domain.user.dto.UserDto;
+import com.codeit.sb01_deokhugam.domain.user.dto.response.UserDto;
 import com.codeit.sb01_deokhugam.domain.user.entity.User;
 
 @Mapper(componentModel = "spring")
 public interface UserMapper {
-
 	UserDto toDto(User user);
 
 	User toEntity(UserDto userDto);
diff --git a/src/main/java/com/codeit/sb01_deokhugam/domain/user/repository/UserRepository.java b/src/main/java/com/codeit/sb01_deokhugam/domain/user/repository/UserRepository.java
new file mode 100644
index 00000000..45f616df
--- /dev/null
+++ b/src/main/java/com/codeit/sb01_deokhugam/domain/user/repository/UserRepository.java
@@ -0,0 +1,12 @@
+package com.codeit.sb01_deokhugam.domain.user.repository;
+
+import java.util.UUID;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.codeit.sb01_deokhugam.domain.user.entity.User;
+
+public interface UserRepository extends JpaRepository<User, UUID> {
+	boolean existsByEmail(String email);
+	boolean existsByNickname(String nickname);
+}
diff --git a/src/main/java/com/codeit/sb01_deokhugam/domain/user/service/BasicUserService.java b/src/main/java/com/codeit/sb01_deokhugam/domain/user/service/BasicUserService.java
index 8d30a551..51c8b5f6 100644
--- a/src/main/java/com/codeit/sb01_deokhugam/domain/user/service/BasicUserService.java
+++ b/src/main/java/com/codeit/sb01_deokhugam/domain/user/service/BasicUserService.java
@@ -8,11 +8,11 @@
 import org.springframework.data.domain.Pageable;
 import org.springframework.stereotype.Service;
 
-import com.codeit.sb01_deokhugam.domain.user.dto.PowerUserDto;
-import com.codeit.sb01_deokhugam.domain.user.dto.RegisterRequest;
-import com.codeit.sb01_deokhugam.domain.user.dto.UserDto;
-import com.codeit.sb01_deokhugam.domain.user.dto.UserLoginRequest;
-import com.codeit.sb01_deokhugam.domain.user.dto.UserUpdateRequest;
+import com.codeit.sb01_deokhugam.domain.user.dto.request.RegisterRequest;
+import com.codeit.sb01_deokhugam.domain.user.dto.request.UserLoginRequest;
+import com.codeit.sb01_deokhugam.domain.user.dto.request.UserUpdateRequest;
+import com.codeit.sb01_deokhugam.domain.user.dto.response.PowerUserDto;
+import com.codeit.sb01_deokhugam.domain.user.dto.response.UserDto;
 
 @Service
 public class BasicUserService implements UserService {
diff --git a/src/main/java/com/codeit/sb01_deokhugam/domain/user/service/UserService.java b/src/main/java/com/codeit/sb01_deokhugam/domain/user/service/UserService.java
index 14afc813..c674263b 100644
--- a/src/main/java/com/codeit/sb01_deokhugam/domain/user/service/UserService.java
+++ b/src/main/java/com/codeit/sb01_deokhugam/domain/user/service/UserService.java
@@ -7,11 +7,11 @@
 
 import org.springframework.data.domain.Pageable;
 
-import com.codeit.sb01_deokhugam.domain.user.dto.PowerUserDto;
-import com.codeit.sb01_deokhugam.domain.user.dto.RegisterRequest;
-import com.codeit.sb01_deokhugam.domain.user.dto.UserDto;
-import com.codeit.sb01_deokhugam.domain.user.dto.UserLoginRequest;
-import com.codeit.sb01_deokhugam.domain.user.dto.UserUpdateRequest;
+import com.codeit.sb01_deokhugam.domain.user.dto.request.RegisterRequest;
+import com.codeit.sb01_deokhugam.domain.user.dto.request.UserLoginRequest;
+import com.codeit.sb01_deokhugam.domain.user.dto.request.UserUpdateRequest;
+import com.codeit.sb01_deokhugam.domain.user.dto.response.PowerUserDto;
+import com.codeit.sb01_deokhugam.domain.user.dto.response.UserDto;
 
 public interface UserService {
 


Reviews:
user: login: jaewoo9797
body: 주석이 굉장히 많군요! 😄 
꼭 필요한 주석이였나요..? 읽어야하는 부분이 많아서 조금 힘들어요.. 앞으로 계속 팀원의 코드를 읽어야하니까 한 번 어떻게 하실지 생각 한 번 해보는건 어떨까요?
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-23T00:51:30Z
user: login: kaya-frog-ramer
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-23T01:07:21Z
user: login: kaya-frog-ramer
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-23T01:07:54Z
user: login: kaya-frog-ramer
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-23T01:10:23Z
user: login: jaewoo9797
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-23T01:22:05Z
user: login: kaya-frog-ramer
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-23T01:29:20Z
user: login: hyojKim2
body: 수고하셨습니다 !
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-23T02:19:00Z
user: login: jaewoo9797
body: 수고하셨습니다 😄 
state: APPROVED
author_association: CONTRIBUTOR
submitted_at: 2025-04-23T02:46:45Z

Review comments:
diff_hunk: @@ -0,0 +1,15 @@
+package com.codeit.sb01_deokhugam.domain.user.repository;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.codeit.sb01_deokhugam.domain.user.entity.User;
+
+public interface UserRepository extends JpaRepository<User, UUID> {
+	boolean existsByUsername(String username);
path: src/main/java/com/codeit/sb01_deokhugam/domain/user/repository/UserRepository.java
user: login: jaewoo9797
body: `User` 엔티티를 보니까 `username` 이라는 필드가 없는데요? 한 번 확인 부탁드립니다 😄 
created_at: 2025-04-23T00:47:55Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,11 @@
+package com.codeit.sb01_deokhugam.domain.user.dto.request;
+
+import jakarta.validation.constraints.Size;
+
+public record UserUpdateRequest(
+	@Size(min = 2, max = 20, message = "닉네임은 2자 이상 20자 이하로 입력해주세요.")
+	String nickname
+) {
+}
+//닉네임 공백: DomainException/INVALID_INPUT_VALUE/닉네임은 2자 이상 20자 이하로 입력해주세요./400
+//근데 "ㄱ " 이런식으로 공백들어가도 프로토타입에서 되긴됨 ;;;
path: src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/request/UserUpdateRequest.java
user: login: jaewoo9797
body: 마지막 줄에서 엔터로 줄바꿈 부탁드립니다! 

[개행이 필요한 이유](https://hyeon9mak.github.io/github-no-newline-at-a-end-of-file/)
created_at: 2025-04-23T00:48:43Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,15 @@
+package com.codeit.sb01_deokhugam.domain.user.repository;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.codeit.sb01_deokhugam.domain.user.entity.User;
+
+public interface UserRepository extends JpaRepository<User, UUID> {
+	boolean existsByUsername(String username);
path: src/main/java/com/codeit/sb01_deokhugam/domain/user/repository/UserRepository.java
user: login: kaya-frog-ramer
body: 오호 제가 앞으로 잊을만한것들, 혹은 지금 본김에 정리해두면 나중에 편할것들 다 코드안에 주석으로 메모하면서 작성하는편이었는데, 팀원분들도 코드를 지속적으로 읽으실걸 생각하면 다른 방법을 갈구해봐야겠어요. 

혹시 재우님같은경우에는 어떤방식으로 메모해두시나요? 
아니면 제가 아직 익숙하지않아서 메모가필요한걸까요? 
따로 기록해두시는 방법이 있으시면 공유 부탁드릴게요 !
created_at: 2025-04-23T01:07:21Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,15 @@
+package com.codeit.sb01_deokhugam.domain.user.repository;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.codeit.sb01_deokhugam.domain.user.entity.User;
+
+public interface UserRepository extends JpaRepository<User, UUID> {
+	boolean existsByUsername(String username);
path: src/main/java/com/codeit/sb01_deokhugam/domain/user/repository/UserRepository.java
user: login: kaya-frog-ramer
body: 정확합니다 ㅎㅎ 이메일을 유저네임처럼 쓰고있었다는걸 잊고 .. ㄱ- 
created_at: 2025-04-23T01:07:54Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,11 @@
+package com.codeit.sb01_deokhugam.domain.user.dto.request;
+
+import jakarta.validation.constraints.Size;
+
+public record UserUpdateRequest(
+	@Size(min = 2, max = 20, message = "닉네임은 2자 이상 20자 이하로 입력해주세요.")
+	String nickname
+) {
+}
+//닉네임 공백: DomainException/INVALID_INPUT_VALUE/닉네임은 2자 이상 20자 이하로 입력해주세요./400
+//근데 "ㄱ " 이런식으로 공백들어가도 프로토타입에서 되긴됨 ;;;
path: src/main/java/com/codeit/sb01_deokhugam/domain/user/dto/request/UserUpdateRequest.java
user: login: kaya-frog-ramer
body: 오 재우님 피드백 덕에 새로운관점에서 생각할수있게됐네요 역시 사회대의 자랑 재우님.. 알려주신자료 읽어보고 앞으로의 pr에 반영하도록하겠습니다 ~
created_at: 2025-04-23T01:10:23Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,15 @@
+package com.codeit.sb01_deokhugam.domain.user.repository;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.codeit.sb01_deokhugam.domain.user.entity.User;
+
+public interface UserRepository extends JpaRepository<User, UUID> {
+	boolean existsByUsername(String username);
path: src/main/java/com/codeit/sb01_deokhugam/domain/user/repository/UserRepository.java
user: login: jaewoo9797
body: 전 따로 메모 안하고 있습니다.. TODO 같은 건 잊어먹을 수 있으니 간혹 적기는 합니다.

희수님이 필요하시다면 느끼면 적어두는게 좋기는 합니다 😄 그런데 주석을 지우는 상황이 따로 있으실까요? 
주석을 지워두지 않고 있다면 이후에 코드 변경사항이 생기면 오래된 주석은 잘못된 정보를 줄 수도 있어요. 
created_at: 2025-04-23T01:22:05Z
author_association: CONTRIBUTOR
diff_hunk: @@ -0,0 +1,15 @@
+package com.codeit.sb01_deokhugam.domain.user.repository;
+
+import java.util.List;
+import java.util.UUID;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import com.codeit.sb01_deokhugam.domain.user.entity.User;
+
+public interface UserRepository extends JpaRepository<User, UUID> {
+	boolean existsByUsername(String username);
path: src/main/java/com/codeit/sb01_deokhugam/domain/user/repository/UserRepository.java
user: login: kaya-frog-ramer
body: 적어뒀던 문제가 해결되면 지웁니다! 근데 말씀하신 이유들이 납득이돼서, 주석이용한 메모를 안하거나 깃에 올릴때는 지우는 방향으로 하는게 좋을것같아요 ㅎㅎ 다음 피알부터는 해당사항도 반영하겠습니다. 

저같은 메모인들을위한 플러그인이있으면 좋을것같은데 함찾아봐야겠어요 ㅋㅋ 없으면 미래에 만들기 ? 
created_at: 2025-04-23T01:29:20Z
author_association: CONTRIBUTOR

PR comments:
user: login: kaya-frog-ramer
created_at: 2025-04-23T00:37:53Z
body: 저 빌드 실패는 왜뜨는걸까요;;;; 다시 뭔가 해보면서 해결해보겟습니다;; 
author_association: CONTRIBUTOR
user: login: jaewoo9797
created_at: 2025-04-23T00:43:15Z
body: > 저 빌드 실패는 왜뜨는걸까요;;;; 다시 뭔가 해보면서 해결해보겟습니다;;

로컬에서 한 번 빌드해보세요
author_association: CONTRIBUTOR