diff --git a/src/main/java/com/cmc/suppin/fcm/domain/DeviceToken.java b/src/main/java/com/cmc/suppin/fcm/domain/DeviceToken.java new file mode 100644 index 0000000..5089e51 --- /dev/null +++ b/src/main/java/com/cmc/suppin/fcm/domain/DeviceToken.java @@ -0,0 +1,47 @@ +package com.cmc.suppin.fcm.domain; + +import com.cmc.suppin.member.domain.Member; +import jakarta.persistence.*; +import lombok.*; +import org.hibernate.annotations.DynamicInsert; + +import java.time.LocalDateTime; + +@Entity +@Getter +@Builder +@DynamicInsert +@NoArgsConstructor(access = AccessLevel.PROTECTED) +@AllArgsConstructor +public class DeviceToken { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne + @JoinColumn(name = "member_id", nullable = false) + private Member member; + + @Column(nullable = false, unique = true) + private String deviceToken; + + @Enumerated(EnumType.STRING) + private DeviceType deviceType; // ANDROID, IOS, OTHER + + @Column(nullable = false) + private LocalDateTime createdAt; + + + public void setMember(Member member) { + this.member = member; + } + + public void setToken(String token) { + this.deviceToken = token; + } + + public void setCreatedAt(LocalDateTime now) { + this.createdAt = now; + } +} diff --git a/src/main/java/com/cmc/suppin/member/domain/Member.java b/src/main/java/com/cmc/suppin/member/domain/Member.java index acea8ea..baf169a 100644 --- a/src/main/java/com/cmc/suppin/member/domain/Member.java +++ b/src/main/java/com/cmc/suppin/member/domain/Member.java @@ -1,6 +1,7 @@ package com.cmc.suppin.member.domain; import com.cmc.suppin.event.events.domain.Event; +import com.cmc.suppin.fcm.domain.DeviceToken; import com.cmc.suppin.global.domain.BaseDateTimeEntity; import com.cmc.suppin.global.enums.UserRole; import com.cmc.suppin.global.enums.UserStatus; @@ -28,6 +29,10 @@ public class Member extends BaseDateTimeEntity { @Builder.Default private List eventList = new ArrayList<>(); + @OneToMany(mappedBy = "member", cascade = CascadeType.ALL) + @Builder.Default + private List deviceTokenList = new ArrayList<>(); + @Column(columnDefinition = "VARCHAR(30)", nullable = false) private String userId; @@ -71,5 +76,15 @@ public void delete() { public void updatePassword(String encode) { this.password = encode; } + + public void addDeviceToken(DeviceToken deviceToken) { + deviceToken.setMember(this); + this.deviceTokenList.add(deviceToken); + } + + public void removeDeviceToken(DeviceToken deviceToken) { + this.deviceTokenList.remove(deviceToken); + deviceToken.setMember(null); + } }