blob: 596a6f71946a12e1e8c7b59d295beebda90d7369 [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 Benkard0246c3e2020-01-27 05:39:08 +010010import javax.persistence.GeneratedValue;
11import javax.persistence.GenerationType;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010012import javax.persistence.Id;
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010013import javax.persistence.Inheritance;
14import javax.persistence.InheritanceType;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010015import javax.persistence.JoinColumn;
Matthias Andreas Benkardf9c74272020-01-24 11:51:35 +010016import javax.persistence.JoinTable;
17import javax.persistence.ManyToMany;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010018import javax.persistence.ManyToOne;
Matthias Andreas Benkard0246c3e2020-01-27 05:39:08 +010019import javax.persistence.SequenceGenerator;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010020import javax.persistence.Table;
21
22@Entity
Matthias Andreas Benkard57c9a8a2020-01-24 19:09:38 +010023@Table(name = "posts", schema = "benki")
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010024@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
25public abstract class Post extends PanacheEntityBase {
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010026
27 @Id
Matthias Andreas Benkard0246c3e2020-01-27 05:39:08 +010028 @SequenceGenerator(
29 allocationSize = 1,
30 sequenceName = "posts_id_seq",
31 name = "posts_id_seq",
32 schema = "benki")
33 @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "posts_id_seq")
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010034 @Column(name = "id", nullable = false)
Matthias Andreas Benkard0246c3e2020-01-27 05:39:08 +010035 public Integer id;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010036
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010037 @Column(name = "date", nullable = true)
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010038 public OffsetDateTime date;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010039
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010040 @ManyToOne(fetch = FetchType.LAZY)
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010041 @JoinColumn(name = "owner", referencedColumnName = "id")
Matthias Andreas Benkard35cb1592020-01-24 11:05:20 +010042 public User owner;
Matthias Andreas Benkardf9c74272020-01-24 11:51:35 +010043
44 @ManyToMany(fetch = FetchType.LAZY)
45 @JoinTable(
46 name = "user_visible_posts",
Matthias Andreas Benkard553de3e2020-01-27 05:33:15 +010047 schema = "benki",
Matthias Andreas Benkardf9c74272020-01-24 11:51:35 +010048 joinColumns = @JoinColumn(name = "message"),
49 inverseJoinColumns = @JoinColumn(name = "user"))
50 public Set<User> visibleTo;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010051}