diff --git a/src/main/java/com/back/domain/user/dto/UserDto.java b/src/main/java/com/back/domain/user/dto/UserDto.java new file mode 100644 index 00000000..e0767983 --- /dev/null +++ b/src/main/java/com/back/domain/user/dto/UserDto.java @@ -0,0 +1,38 @@ +package com.back.domain.user.dto; + +import com.back.domain.user.entity.User; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; + +import java.time.LocalDateTime; + +@Getter +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class UserDto { + + private Long id; + private String email; + private String nickname; + private String profileImgUrl; + private Double abvDegree; + private LocalDateTime createdAt; + private LocalDateTime updatedAt; + + public static UserDto from(User user) { + if (user == null) return null; + return UserDto.builder() + .id(user.getId()) + .email(user.getEmail()) + .nickname(user.getNickname()) + .profileImgUrl(user.getProfileImgUrl()) + .abvDegree(user.getAbvDegree()) + .createdAt(user.getCreatedAt()) + .updatedAt(user.getUpdatedAt()) + .build(); + } +} + diff --git a/src/main/java/com/back/domain/user/entity/User.java b/src/main/java/com/back/domain/user/entity/User.java new file mode 100644 index 00000000..f8a1d18c --- /dev/null +++ b/src/main/java/com/back/domain/user/entity/User.java @@ -0,0 +1,44 @@ +package com.back.domain.user.entity; + +import jakarta.persistence.*; +import jakarta.validation.constraints.Email; +import jakarta.validation.constraints.NotBlank; +import lombok.*; + +import java.time.LocalDateTime; + +@Entity +@Table( + name = "users", // DB 테이블 이름: User 대신 users 권장 (예약어 충돌 방지) + indexes = { + @Index(name = "ux_users_email", columnList = "email", unique = true) + } +) +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @NotBlank + @Email + @Column(nullable = false, unique = true) + private String email; // 유저 소셜 이메일 (OAuth2 로그인 시 저장) + + @NotBlank + @Column(nullable = false, unique = true) + private String nickname; // 유저 닉네임 + + private String profileImgUrl; // 프로필 이미지 URL + + private Double abvDegree; // 온도(회원 등급) + + private LocalDateTime createdAt; // 생성 날짜 + + private LocalDateTime updatedAt; // 수정 날짜 +} \ No newline at end of file diff --git a/src/main/java/com/back/domain/user/repository/UserRepository.java b/src/main/java/com/back/domain/user/repository/UserRepository.java new file mode 100644 index 00000000..ce4bcc8a --- /dev/null +++ b/src/main/java/com/back/domain/user/repository/UserRepository.java @@ -0,0 +1,10 @@ +package com.back.domain.user.repository; + +import com.back.domain.user.entity.User; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface UserRepository extends JpaRepository { +} +