65 lines
1.8 KiB
Java
65 lines
1.8 KiB
Java
package de.nclazz.service.mailrelay.domain;
|
|
|
|
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.Data;
|
|
import lombok.NoArgsConstructor;
|
|
import lombok.NonNull;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.hibernate.annotations.GenericGenerator;
|
|
import org.hibernate.annotations.Type;
|
|
|
|
import javax.persistence.CollectionTable;
|
|
import javax.persistence.Column;
|
|
import javax.persistence.ElementCollection;
|
|
import javax.persistence.Entity;
|
|
import javax.persistence.FetchType;
|
|
import javax.persistence.GeneratedValue;
|
|
import javax.persistence.Id;
|
|
import javax.persistence.Index;
|
|
import javax.persistence.JoinColumn;
|
|
import javax.persistence.OneToMany;
|
|
import javax.persistence.Table;
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
import java.util.UUID;
|
|
|
|
@Entity
|
|
@Table(name = "accounts", indexes = @Index(columnList = "token"))
|
|
@Data
|
|
@Slf4j
|
|
@AllArgsConstructor
|
|
@NoArgsConstructor
|
|
public class Account {
|
|
|
|
@Id
|
|
@Column(name = "guid", columnDefinition = "char(36)")
|
|
@GeneratedValue(generator = "uuid")
|
|
@GenericGenerator(name = "uuid", strategy ="org.hibernate.id.UUIDGenerator")
|
|
@Type(type = "uuid-char")
|
|
private UUID guid;
|
|
|
|
|
|
private String name;
|
|
|
|
@Column(length = Relay.TOKEN_NUM_CHARS)
|
|
private String token;
|
|
|
|
@ElementCollection(fetch = FetchType.EAGER)
|
|
@CollectionTable(name = "accounts_receivers")
|
|
private List<String> receivers;
|
|
|
|
@JsonIgnore
|
|
@OneToMany
|
|
@JoinColumn(name = "message_guid", referencedColumnName = "guid")
|
|
private final List<Message> sentMessages = new ArrayList<>();
|
|
|
|
public static Account of(@NonNull String name, @NonNull List<String> receivers) {
|
|
Account account = new Account();
|
|
account.setName(name);
|
|
account.setReceivers(receivers);
|
|
return account;
|
|
}
|
|
|
|
}
|