blob: a9a5ebdd6ceefc8a5bc406f5d9e3403f5b9d7f2e [file] [log] [blame]
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +01001package eu.mulk.mulkcms2.benki.generic;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +01002
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +01003import eu.mulk.mulkcms2.benki.users.User;
Matthias Andreas Benkard35cb1592020-01-24 11:05:20 +01004import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +01005import java.time.OffsetDateTime;
Matthias Andreas Benkardf9c74272020-01-24 11:51:35 +01006import java.util.Set;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +01007import javax.persistence.Column;
8import javax.persistence.Entity;
Matthias Andreas Benkardf9c74272020-01-24 11:51:35 +01009import javax.persistence.FetchType;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010010import javax.persistence.Id;
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010011import javax.persistence.Inheritance;
12import javax.persistence.InheritanceType;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010013import javax.persistence.JoinColumn;
Matthias Andreas Benkardf9c74272020-01-24 11:51:35 +010014import javax.persistence.JoinTable;
15import javax.persistence.ManyToMany;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010016import javax.persistence.ManyToOne;
17import javax.persistence.Table;
18
19@Entity
Matthias Andreas Benkard57c9a8a2020-01-24 19:09:38 +010020@Table(name = "posts", schema = "benki")
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010021@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
22public abstract class Post extends PanacheEntityBase {
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010023
24 @Id
25 @Column(name = "id", nullable = false)
Matthias Andreas Benkard35cb1592020-01-24 11:05:20 +010026 public int id;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010027
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010028 @Column(name = "date", nullable = true)
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010029 public OffsetDateTime date;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010030
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010031 @ManyToOne(fetch = FetchType.LAZY)
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010032 @JoinColumn(name = "owner", referencedColumnName = "id")
Matthias Andreas Benkard35cb1592020-01-24 11:05:20 +010033 public User owner;
Matthias Andreas Benkardf9c74272020-01-24 11:51:35 +010034
35 @ManyToMany(fetch = FetchType.LAZY)
36 @JoinTable(
37 name = "user_visible_posts",
38 joinColumns = @JoinColumn(name = "message"),
39 inverseJoinColumns = @JoinColumn(name = "user"))
40 public Set<User> visibleTo;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010041}