AuditEntry.java
package pk.lucidxpo.ynami.persistence.model;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Lob;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.time.Instant;
import static java.time.temporal.ChronoUnit.MICROS;
import static pk.lucidxpo.ynami.utils.Identity.randomID;
@Entity
@Getter
@ToString
@NoArgsConstructor
public class AuditEntry {
@Id
@Column(nullable = false, updatable = false)
private final String id = randomID();
@Column(nullable = false)
private String changedEntityName;
@Column(nullable = false)
private String changedEntityId;
@Column(nullable = false)
private String fieldChanged;
@Lob
@Column //field can change from null
private String fromValue;
@Lob
@Column //field can change into null
private String toValue;
@Column(nullable = false)
private String changedBy;
@Column(nullable = false)
private Instant changedAt = Instant.now().truncatedTo(MICROS);
public AuditEntry(final String changedEntityName,
final String changedEntityId,
final String fieldChanged,
final String fromValue,
final String toValue,
final String changedBy) {
this.changedEntityName = changedEntityName;
this.changedEntityId = changedEntityId;
this.fieldChanged = fieldChanged;
this.fromValue = fromValue;
this.toValue = toValue;
this.changedBy = changedBy;
}
public AuditEntry(final Instant changedAt,
final String changedEntityName,
final String changedEntityId,
final String fieldChanged,
final String fromValue,
final String toValue,
final String changedBy) {
this.changedAt = changedAt;
this.changedEntityName = changedEntityName;
this.changedEntityId = changedEntityId;
this.fieldChanged = fieldChanged;
this.fromValue = fromValue;
this.toValue = toValue;
this.changedBy = changedBy;
}
}