diff --git a/src/main/java/com/wayble/server/user/dto/UserRegisterDto.java b/src/main/java/com/wayble/server/user/dto/UserRegisterDto.java deleted file mode 100644 index 6fa5474c..00000000 --- a/src/main/java/com/wayble/server/user/dto/UserRegisterDto.java +++ /dev/null @@ -1,4 +0,0 @@ -package com.wayble.server.user.dto; - -public record UserRegisterDto() { -} diff --git a/src/main/java/com/wayble/server/user/dto/UserRegisterRequestDto.java b/src/main/java/com/wayble/server/user/dto/UserRegisterRequestDto.java new file mode 100644 index 00000000..417306ca --- /dev/null +++ b/src/main/java/com/wayble/server/user/dto/UserRegisterRequestDto.java @@ -0,0 +1,18 @@ +package com.wayble.server.user.dto; + +import com.wayble.server.user.entity.Gender; +import com.wayble.server.user.entity.LoginType; +import com.wayble.server.user.entity.UserType; + +import java.time.LocalDate; + +public record UserRegisterRequestDto( + String nickname, + String username, + String email, + String password, + LocalDate birthDate, + Gender gender, + LoginType loginType, + UserType userType +) {} diff --git a/src/main/java/com/wayble/server/user/entity/Disability.java b/src/main/java/com/wayble/server/user/entity/Disability.java new file mode 100644 index 00000000..ea88e404 --- /dev/null +++ b/src/main/java/com/wayble/server/user/entity/Disability.java @@ -0,0 +1,27 @@ +package com.wayble.server.user.entity; + +import jakarta.persistence.*; +import lombok.*; + +import java.util.ArrayList; +import java.util.List; + +@Getter +@Entity +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table(name = "disability") +public class Disability { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "disability_id") + private Long id; + + @Column(name = "name", nullable = false, unique = true) + private String name; // ex: 발달장애,시각장애,지체장애,청각장애 + + @OneToMany(mappedBy = "disability", cascade = CascadeType.ALL, orphanRemoval = true) + private List userDisabilityMappings = new ArrayList<>(); +} \ No newline at end of file diff --git a/src/main/java/com/wayble/server/user/entity/User.java b/src/main/java/com/wayble/server/user/entity/User.java index d150505a..fd630d0f 100644 --- a/src/main/java/com/wayble/server/user/entity/User.java +++ b/src/main/java/com/wayble/server/user/entity/User.java @@ -30,10 +30,11 @@ public class User extends BaseEntity { private String username; - @Column(nullable = false) + @Column(nullable = false, unique = true) private String email; // TODO: 비밀번호 암호화 필요 + @Column(nullable = false) private String password; @Column(name = "birth_date", columnDefinition = "DATE") @@ -44,19 +45,22 @@ public class User extends BaseEntity { private Gender gender; @Enumerated(EnumType.STRING) - @Column(nullable = false) + @Column(name = "login_type", nullable = false) private LoginType loginType; @Enumerated(EnumType.STRING) - @Column(nullable = false) + @Column(name = "user_type", nullable = false) private UserType userType; + @Column(name = "profile_image_url") + private String profileImageUrl; + @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private List reviewList = new ArrayList<>(); - // TODO 장애 종류 필드 등록 필요 + @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) + private List userDisabilities = new ArrayList<>(); - // TODO 프로필 이미지 관련 작업 필요 @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true) private List userPlaces = new ArrayList<>(); diff --git a/src/main/java/com/wayble/server/user/entity/UserDisabilityMapping.java b/src/main/java/com/wayble/server/user/entity/UserDisabilityMapping.java new file mode 100644 index 00000000..79572734 --- /dev/null +++ b/src/main/java/com/wayble/server/user/entity/UserDisabilityMapping.java @@ -0,0 +1,28 @@ +package com.wayble.server.user.entity; + +import jakarta.persistence.*; +import lombok.*; + +@Getter +@Entity +@Builder +@NoArgsConstructor +@AllArgsConstructor +@Table(name = "user_disability_mapping", + uniqueConstraints = @UniqueConstraint(columnNames = {"user_id", "disability_id"})) +public class UserDisabilityMapping { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "user_id", nullable = false) + private User user; + + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "disability_id", nullable = false) + private Disability disability; // 장애 유형 +} \ No newline at end of file diff --git a/src/main/java/com/wayble/server/user/repository/UserRepository.java b/src/main/java/com/wayble/server/user/repository/UserRepository.java index 1fcb4172..4c9d32c8 100644 --- a/src/main/java/com/wayble/server/user/repository/UserRepository.java +++ b/src/main/java/com/wayble/server/user/repository/UserRepository.java @@ -3,5 +3,11 @@ import com.wayble.server.user.entity.User; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.Optional; + public interface UserRepository extends JpaRepository { + + Optional findByEmail(String email); + + boolean existsByEmail(String email); }