Trace.java
package fr.avenirsesr.portfolio.api.domain.model;
import fr.avenirsesr.portfolio.api.domain.model.enums.ELanguage;
import java.time.Instant;
import java.util.List;
import java.util.UUID;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Trace {
private final UUID id;
private final User user;
private String title;
private List<SkillLevel> skillLevels;
private List<AMS> amses;
private Instant createdAt;
private Instant updatedAt;
private Instant deletedAt;
private boolean isGroup;
private ELanguage language;
private Trace(
UUID id,
User user,
String title,
Instant createdAt,
Instant updatedAt,
Instant deletedAt,
ELanguage language) {
this.id = id;
this.user = user;
this.title = title;
this.createdAt = createdAt;
this.updatedAt = updatedAt;
this.deletedAt = deletedAt;
this.language = language;
}
public static Trace create(
UUID id, User user, String title, Instant deletedAt, ELanguage language) {
var trace = new Trace(id, user, title, Instant.now(), null, deletedAt, language);
trace.setSkillLevels(List.of());
trace.setAmses(List.of());
trace.setGroup(false);
return trace;
}
public static Trace toDomain(
UUID id,
User user,
String title,
List<SkillLevel> skillLevels,
List<AMS> amses,
boolean group,
Instant createdAt,
Instant updatedAt,
Instant deletedAt,
ELanguage language) {
var trace = new Trace(id, user, title, createdAt, updatedAt, deletedAt, language);
trace.setSkillLevels(skillLevels);
trace.setAmses(amses);
trace.setGroup(group);
return trace;
}
}