Benki: Sort into a sane folder structure, fix mapping bugs.
Change-Id: I55f5c0349dc580a24506648284ce6483dd952d8a
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/generic/Post.java b/src/main/java/eu/mulk/mulkcms2/benki/generic/Post.java
new file mode 100644
index 0000000..050cdcb
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/benki/generic/Post.java
@@ -0,0 +1,30 @@
+package eu.mulk.mulkcms2.benki.generic;
+
+import eu.mulk.mulkcms2.benki.users.User;
+import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
+import java.time.OffsetDateTime;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.InheritanceType;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "posts", schema = "public", catalog = "benki")
+@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
+public abstract class Post extends PanacheEntityBase {
+
+ @Id
+ @Column(name = "id", nullable = false)
+ public int id;
+
+ @Column(name = "date", nullable = true)
+ public OffsetDateTime date;
+
+ @ManyToOne
+ @JoinColumn(name = "owner", referencedColumnName = "id")
+ public User owner;
+}
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/generic/PostTarget.java b/src/main/java/eu/mulk/mulkcms2/benki/generic/PostTarget.java
new file mode 100644
index 0000000..3a3f6b2
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/benki/generic/PostTarget.java
@@ -0,0 +1,29 @@
+package eu.mulk.mulkcms2.benki.generic;
+
+import eu.mulk.mulkcms2.benki.accesscontrol.Role;
+import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.IdClass;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "post_targets", schema = "public", catalog = "benki")
+@IdClass(PostTargetPK.class)
+public class PostTarget extends PanacheEntityBase {
+
+ @Id
+ @Column(name = "message", nullable = false)
+ public int message;
+
+ @Id
+ @Column(name = "target", nullable = false)
+ public int targetId;
+
+ @ManyToOne
+ @JoinColumn(name = "target", referencedColumnName = "id", nullable = false)
+ public Role target;
+}
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/generic/PostTargetPK.java b/src/main/java/eu/mulk/mulkcms2/benki/generic/PostTargetPK.java
new file mode 100644
index 0000000..13c660d
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/benki/generic/PostTargetPK.java
@@ -0,0 +1,59 @@
+package eu.mulk.mulkcms2.benki.generic;
+
+import java.io.Serializable;
+import javax.persistence.Column;
+import javax.persistence.Id;
+
+public class PostTargetPK implements Serializable {
+
+ private int message;
+ private int targetId;
+
+ @Column(name = "message", nullable = false)
+ @Id
+ public int getMessage() {
+ return message;
+ }
+
+ public void setMessage(int message) {
+ this.message = message;
+ }
+
+ @Column(name = "target", nullable = false)
+ @Id
+ public int getTargetId() {
+ return targetId;
+ }
+
+ public void setTargetId(int targetId) {
+ this.targetId = targetId;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (o == null || getClass() != o.getClass()) {
+ return false;
+ }
+
+ PostTargetPK that = (PostTargetPK) o;
+
+ if (message != that.message) {
+ return false;
+ }
+ if (targetId != that.targetId) {
+ return false;
+ }
+
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int result = message;
+ result = 31 * result + targetId;
+ return result;
+ }
+}
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/generic/UserVisiblePost.java b/src/main/java/eu/mulk/mulkcms2/benki/generic/UserVisiblePost.java
new file mode 100644
index 0000000..2b09120
--- /dev/null
+++ b/src/main/java/eu/mulk/mulkcms2/benki/generic/UserVisiblePost.java
@@ -0,0 +1,41 @@
+package eu.mulk.mulkcms2.benki.generic;
+
+import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
+import java.io.Serializable;
+import java.util.Objects;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import org.hibernate.annotations.Immutable;
+
+@Entity
+@Immutable
+@Table(name = "user_visible_posts", schema = "public", catalog = "benki")
+public class UserVisiblePost extends PanacheEntityBase implements Serializable {
+
+ @Id
+ @Column(name = "user", nullable = true)
+ public Integer userId;
+
+ @Id
+ @Column(name = "message", nullable = true)
+ public Integer messageId;
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof UserVisiblePost)) {
+ return false;
+ }
+ UserVisiblePost that = (UserVisiblePost) o;
+ return Objects.equals(userId, that.userId) && Objects.equals(messageId, that.messageId);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(userId, messageId);
+ }
+}