blob: b4b4222c425f20db5efd4dec77a217f15bd281bb [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 Benkard2d4f92e2020-02-09 16:15:07 +01003import eu.mulk.mulkcms2.benki.accesscontrol.Role;
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +01004import eu.mulk.mulkcms2.benki.users.User;
Matthias Andreas Benkard35cb1592020-01-24 11:05:20 +01005import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +01006import java.time.OffsetDateTime;
Matthias Andreas Benkardf9c74272020-01-24 11:51:35 +01007import java.util.Set;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +01008import javax.persistence.Column;
9import javax.persistence.Entity;
Matthias Andreas Benkardf9c74272020-01-24 11:51:35 +010010import javax.persistence.FetchType;
Matthias Andreas Benkard0246c3e2020-01-27 05:39:08 +010011import javax.persistence.GeneratedValue;
12import javax.persistence.GenerationType;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010013import javax.persistence.Id;
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010014import javax.persistence.Inheritance;
15import javax.persistence.InheritanceType;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010016import javax.persistence.JoinColumn;
Matthias Andreas Benkardf9c74272020-01-24 11:51:35 +010017import javax.persistence.JoinTable;
18import javax.persistence.ManyToMany;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010019import javax.persistence.ManyToOne;
Matthias Andreas Benkard0246c3e2020-01-27 05:39:08 +010020import javax.persistence.SequenceGenerator;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010021import javax.persistence.Table;
22
23@Entity
Matthias Andreas Benkard57c9a8a2020-01-24 19:09:38 +010024@Table(name = "posts", schema = "benki")
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010025@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
26public abstract class Post extends PanacheEntityBase {
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010027
28 @Id
Matthias Andreas Benkard0246c3e2020-01-27 05:39:08 +010029 @SequenceGenerator(
30 allocationSize = 1,
31 sequenceName = "posts_id_seq",
32 name = "posts_id_seq",
33 schema = "benki")
34 @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "posts_id_seq")
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010035 @Column(name = "id", nullable = false)
Matthias Andreas Benkard0246c3e2020-01-27 05:39:08 +010036 public Integer id;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010037
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010038 @Column(name = "date", nullable = true)
Matthias Andreas Benkardd9b95882020-01-24 11:42:49 +010039 public OffsetDateTime date;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010040
Matthias Andreas Benkardaa754802020-01-24 11:55:26 +010041 @ManyToOne(fetch = FetchType.LAZY)
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010042 @JoinColumn(name = "owner", referencedColumnName = "id")
Matthias Andreas Benkard35cb1592020-01-24 11:05:20 +010043 public User owner;
Matthias Andreas Benkardf9c74272020-01-24 11:51:35 +010044
45 @ManyToMany(fetch = FetchType.LAZY)
46 @JoinTable(
47 name = "user_visible_posts",
Matthias Andreas Benkard553de3e2020-01-27 05:33:15 +010048 schema = "benki",
Matthias Andreas Benkardf9c74272020-01-24 11:51:35 +010049 joinColumns = @JoinColumn(name = "message"),
50 inverseJoinColumns = @JoinColumn(name = "user"))
51 public Set<User> visibleTo;
Matthias Andreas Benkard2d4f92e2020-02-09 16:15:07 +010052
53 @ManyToMany(fetch = FetchType.LAZY)
54 @JoinTable(
55 name = "post_targets",
56 schema = "benki",
57 joinColumns = @JoinColumn(name = "message"),
58 inverseJoinColumns = @JoinColumn(name = "target"))
59 public Set<Role> targets;
Matthias Andreas Benkard734879e2020-01-24 10:47:37 +010060}