blob: 415ac7b01293f58e2e89d4cfcde4e06e456603d9 [file] [log] [blame]
Matthias Andreas Benkard36b0f042021-02-27 10:46:04 +01001package eu.mulk.demos.blog.comments;
Matthias Andreas Benkard4982faa2021-02-24 06:45:39 +01002
Matthias Andreas Benkard36b0f042021-02-27 10:46:04 +01003import eu.mulk.demos.blog.posts.Post;
Matthias Andreas Benkard4982faa2021-02-24 06:45:39 +01004import io.quarkus.hibernate.orm.panache.PanacheEntity;
5import java.time.Instant;
Matthias Andreas Benkard0c009e82021-02-26 07:23:27 +01006import javax.json.bind.annotation.JsonbTransient;
7import javax.persistence.Column;
Matthias Andreas Benkard4982faa2021-02-24 06:45:39 +01008import javax.persistence.Entity;
Matthias Andreas Benkard36b0f042021-02-27 10:46:04 +01009import javax.persistence.EnumType;
10import javax.persistence.Enumerated;
11import javax.persistence.FetchType;
Matthias Andreas Benkard0c009e82021-02-26 07:23:27 +010012import javax.persistence.ManyToOne;
Matthias Andreas Benkard4982faa2021-02-24 06:45:39 +010013
14@Entity
15public class Comment extends PanacheEntity {
16
17 public String authorName;
Matthias Andreas Benkard0c009e82021-02-26 07:23:27 +010018
Matthias Andreas Benkard4982faa2021-02-24 06:45:39 +010019 public Instant publicationDate;
Matthias Andreas Benkard0c009e82021-02-26 07:23:27 +010020
Matthias Andreas Benkard36b0f042021-02-27 10:46:04 +010021 @Enumerated(EnumType.STRING)
22 public SpamStatus spamStatus;
23
Matthias Andreas Benkard0c009e82021-02-26 07:23:27 +010024 @Column(columnDefinition = "TEXT")
Matthias Andreas Benkard4982faa2021-02-24 06:45:39 +010025 public String text;
Matthias Andreas Benkard0c009e82021-02-26 07:23:27 +010026
Matthias Andreas Benkard36b0f042021-02-27 10:46:04 +010027 @ManyToOne(fetch = FetchType.LAZY)
Matthias Andreas Benkard0c009e82021-02-26 07:23:27 +010028 @JsonbTransient
Matthias Andreas Benkard0c009e82021-02-26 07:23:27 +010029 public Post post;
30
31 public static Comment create(Post post, String authorName, String text) {
32 var c = new Comment();
33 c.authorName = authorName;
34 c.publicationDate = Instant.now();
35 c.text = text;
36 c.post = post;
Matthias Andreas Benkard36b0f042021-02-27 10:46:04 +010037 c.spamStatus = SpamStatus.UNKNOWN;
Matthias Andreas Benkard0c009e82021-02-26 07:23:27 +010038 return c;
39 }
Matthias Andreas Benkard36b0f042021-02-27 10:46:04 +010040
Matthias Andreas Benkard4982faa2021-02-24 06:45:39 +010041}