NotificationEntity.java
package com.example.orderplatform.notifications.infrastructure;
import com.example.orderplatform.notifications.domain.NotificationDraft;
import com.example.orderplatform.notifications.domain.NotificationStatus;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import java.time.OffsetDateTime;
import java.util.UUID;
@Entity
@Table(name = "notifications")
public class NotificationEntity {
@Id
private UUID id;
private String recipient;
private String channel;
private String type;
private String payload;
@Enumerated(EnumType.STRING)
private NotificationStatus status;
private OffsetDateTime createdAt;
protected NotificationEntity() {
}
private NotificationEntity(UUID id, String recipient, String channel, String type, String payload, NotificationStatus status, OffsetDateTime createdAt) {
this.id = id;
this.recipient = recipient;
this.channel = channel;
this.type = type;
this.payload = payload;
this.status = status;
this.createdAt = createdAt;
}
public static NotificationEntity ready(NotificationDraft draft) {
return new NotificationEntity(
UUID.randomUUID(),
draft.recipient(),
draft.channel(),
draft.type(),
draft.payload(),
NotificationStatus.READY,
OffsetDateTime.now());
}
public UUID id() {
return id;
}
public String recipient() {
return recipient;
}
public String channel() {
return channel;
}
public String type() {
return type;
}
public NotificationStatus status() {
return status;
}
public OffsetDateTime createdAt() {
return createdAt;
}
}