Skip to content

Commit 5f06ede

Browse files
authored
[feat] User 도메인 추가#7 (#11)
* feat: User 엔티티추가 * feat: User DTO 추가 * feat: UserRepository 추가
1 parent 4dc4c5c commit 5f06ede

File tree

3 files changed

+92
-0
lines changed

3 files changed

+92
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.back.domain.user.dto;
2+
3+
import com.back.domain.user.entity.User;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
9+
import java.time.LocalDateTime;
10+
11+
@Getter
12+
@NoArgsConstructor
13+
@AllArgsConstructor
14+
@Builder
15+
public class UserDto {
16+
17+
private Long id;
18+
private String email;
19+
private String nickname;
20+
private String profileImgUrl;
21+
private Double abvDegree;
22+
private LocalDateTime createdAt;
23+
private LocalDateTime updatedAt;
24+
25+
public static UserDto from(User user) {
26+
if (user == null) return null;
27+
return UserDto.builder()
28+
.id(user.getId())
29+
.email(user.getEmail())
30+
.nickname(user.getNickname())
31+
.profileImgUrl(user.getProfileImgUrl())
32+
.abvDegree(user.getAbvDegree())
33+
.createdAt(user.getCreatedAt())
34+
.updatedAt(user.getUpdatedAt())
35+
.build();
36+
}
37+
}
38+
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.back.domain.user.entity;
2+
3+
import jakarta.persistence.*;
4+
import jakarta.validation.constraints.Email;
5+
import jakarta.validation.constraints.NotBlank;
6+
import lombok.*;
7+
8+
import java.time.LocalDateTime;
9+
10+
@Entity
11+
@Table(
12+
name = "users", // DB 테이블 이름: User 대신 users 권장 (예약어 충돌 방지)
13+
indexes = {
14+
@Index(name = "ux_users_email", columnList = "email", unique = true)
15+
}
16+
)
17+
@Getter
18+
@Setter
19+
@NoArgsConstructor
20+
@AllArgsConstructor
21+
@Builder
22+
public class User {
23+
24+
@Id
25+
@GeneratedValue(strategy = GenerationType.IDENTITY)
26+
private Long id;
27+
28+
@NotBlank
29+
@Email
30+
@Column(nullable = false, unique = true)
31+
private String email; // 유저 소셜 이메일 (OAuth2 로그인 시 저장)
32+
33+
@NotBlank
34+
@Column(nullable = false, unique = true)
35+
private String nickname; // 유저 닉네임
36+
37+
private String profileImgUrl; // 프로필 이미지 URL
38+
39+
private Double abvDegree; // 온도(회원 등급)
40+
41+
private LocalDateTime createdAt; // 생성 날짜
42+
43+
private LocalDateTime updatedAt; // 수정 날짜
44+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package com.back.domain.user.repository;
2+
3+
import com.back.domain.user.entity.User;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.stereotype.Repository;
6+
7+
@Repository
8+
public interface UserRepository extends JpaRepository<User, Long> {
9+
}
10+

0 commit comments

Comments
 (0)