86 lines
1.8 KiB
Java
86 lines
1.8 KiB
Java
package de.ph87.data.topic;
|
|
|
|
import de.ph87.data.log.AbstractEntityLog;
|
|
import de.ph87.data.topic.query.TopicQuery;
|
|
import jakarta.persistence.Column;
|
|
import jakarta.persistence.ElementCollection;
|
|
import jakarta.persistence.Entity;
|
|
import jakarta.persistence.EnumType;
|
|
import jakarta.persistence.Enumerated;
|
|
import jakarta.persistence.FetchType;
|
|
import jakarta.persistence.GeneratedValue;
|
|
import jakarta.persistence.GenerationType;
|
|
import jakarta.persistence.Id;
|
|
import jakarta.persistence.Version;
|
|
import lombok.Getter;
|
|
import lombok.NoArgsConstructor;
|
|
import lombok.NonNull;
|
|
import lombok.Setter;
|
|
import lombok.ToString;
|
|
|
|
import java.time.ZonedDateTime;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
@Entity
|
|
@Getter
|
|
@ToString
|
|
@NoArgsConstructor
|
|
public class Topic extends AbstractEntityLog {
|
|
|
|
@Id
|
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
private long id;
|
|
|
|
@Version
|
|
private long version;
|
|
|
|
@NonNull
|
|
@Column(nullable = false, unique = true)
|
|
private String name;
|
|
|
|
@Setter
|
|
@Column(nullable = false)
|
|
private boolean enabled = true;
|
|
|
|
@NonNull
|
|
@Column(nullable = false)
|
|
private ZonedDateTime first;
|
|
|
|
@NonNull
|
|
@Column(nullable = false)
|
|
private ZonedDateTime last;
|
|
|
|
@Column(nullable = false)
|
|
private int count;
|
|
|
|
@Setter
|
|
@NonNull
|
|
@Enumerated(EnumType.STRING)
|
|
@Column(nullable = false)
|
|
private TimestampType timestampType = TimestampType.EPOCH_SECONDS;
|
|
|
|
@Setter
|
|
@NonNull
|
|
@Column(nullable = false)
|
|
private String timestampQuery = "";
|
|
|
|
@NonNull
|
|
@ToString.Exclude
|
|
@ElementCollection(fetch = FetchType.EAGER)
|
|
private List<TopicQuery> queries = new ArrayList<>();
|
|
|
|
public Topic(@NonNull final String name) {
|
|
this.name = name;
|
|
this.first = ZonedDateTime.now();
|
|
this.last = this.first;
|
|
this.count = 1;
|
|
}
|
|
|
|
public void update() {
|
|
this.last = ZonedDateTime.now();
|
|
this.count++;
|
|
}
|
|
|
|
}
|