KB66 Add comment count to post header.

Change-Id: I98fd99327fdfebaddfebe3541e6b1ccb1d78fe3c
diff --git a/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java b/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java
index d3e7712..1ddffa8 100644
--- a/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java
+++ b/src/main/java/eu/mulk/mulkcms2/benki/posts/Post.java
@@ -44,10 +44,12 @@
 import javax.persistence.ManyToOne;
 import javax.persistence.MapKey;
 import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
 import javax.persistence.SequenceGenerator;
 import javax.persistence.Table;
 import org.hibernate.annotations.Type;
 import org.hibernate.annotations.TypeDef;
+import org.hibernate.annotations.Where;
 
 @Entity
 @Table(name = "posts", schema = "benki")
@@ -113,6 +115,12 @@
   @JsonbTransient
   public Collection<LazychatMessage> referrers;
 
+  @ManyToMany(mappedBy = "referees")
+  @OrderBy("date DESC")
+  @Where(clause = "scope = 'comment'")
+  @JsonbTransient
+  public Collection<LazychatMessage> comments;
+
   @OneToMany(
       mappedBy = "post",
       fetch = FetchType.LAZY,
@@ -216,6 +224,9 @@
 
     cb = cb.where("post.scope").eq(Scope.top_level);
 
+    cb = cb.leftJoinFetch("post.comments", "comment");
+    cb = cb.fetch("comment.texts");
+
     return cb;
   }
 
@@ -393,16 +404,6 @@
     }
   }
 
-  public Collection<LazychatMessage> getComments() {
-    return referrers.stream()
-        .filter(l -> l.scope == Scope.comment)
-        .sorted(
-            Comparator.comparing(
-                    (LazychatMessage l) -> Objects.requireNonNullElse(l.date, OffsetDateTime.MIN))
-                .reversed())
-        .toList();
-  }
-
   public enum Visibility {
     PUBLIC,
     SEMIPRIVATE,