NotificationModels.java
package com.ecommerce.notification.application.model;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import java.time.Instant;
public final class NotificationModels {
private NotificationModels() {
}
public record DomainEvent(
String eventId,
String eventType,
long userId,
JsonNode payload) {
}
public record NotificationView(
@JsonSerialize(using = ToStringSerializer.class) long id,
String templateCode,
String referenceType,
String referenceNo,
String title,
String content,
String status,
Instant readAt,
Instant createdAt) {
}
public record EmailPreferenceView(
@JsonSerialize(using = ToStringSerializer.class) long userId,
String email,
boolean enabled,
Instant updatedAt) {
}
public record EmailDeliveryAttempt(
@JsonSerialize(using = ToStringSerializer.class) long deliveryId,
int attempt,
String destination,
String providerMessageId,
String subject,
String content) {
}
public record DeliveryRetryView(
@JsonSerialize(using = ToStringSerializer.class) long deliveryId,
String commandId,
String beforeStatus,
String afterStatus,
Instant acceptedAt) {
}
}