blob: 6fb2c11d2ce681a6bf685bc66df87b365d04d6bf [file] [log] [blame]
Matthias Andreas Benkard36b0f042021-02-27 10:46:04 +01001package eu.mulk.demos.blog.posts;
Matthias Andreas Benkard4982faa2021-02-24 06:45:39 +01002
Matthias Andreas Benkard36b0f042021-02-27 10:46:04 +01003import eu.mulk.demos.blog.authors.Author;
4import eu.mulk.demos.blog.comments.Comment;
Matthias Andreas Benkard4982faa2021-02-24 06:45:39 +01005import io.quarkus.hibernate.orm.panache.PanacheEntity;
6import java.time.Instant;
Matthias Andreas Benkard36b0f042021-02-27 10:46:04 +01007import java.util.Set;
8import javax.json.bind.annotation.JsonbTransient;
Matthias Andreas Benkard4982faa2021-02-24 06:45:39 +01009import javax.persistence.Column;
10import javax.persistence.Entity;
11import javax.persistence.FetchType;
12import javax.persistence.ManyToMany;
13import javax.persistence.ManyToOne;
14import javax.persistence.OneToMany;
15
16@Entity
17public class Post extends PanacheEntity {
18
19 public String title;
20
21 public Instant publicationDate;
22
23 @Column(columnDefinition = "TEXT")
24 public String body;
25
26 @ManyToOne(fetch = FetchType.LAZY)
Matthias Andreas Benkard36b0f042021-02-27 10:46:04 +010027 @JsonbTransient
Matthias Andreas Benkard4982faa2021-02-24 06:45:39 +010028 public Author author;
29
30 @ManyToMany(fetch = FetchType.LAZY)
Matthias Andreas Benkard36b0f042021-02-27 10:46:04 +010031 @JsonbTransient
32 public Set<Category> categories;
Matthias Andreas Benkard4982faa2021-02-24 06:45:39 +010033
Matthias Andreas Benkard0c009e82021-02-26 07:23:27 +010034 @OneToMany(fetch = FetchType.LAZY, mappedBy = "post")
Matthias Andreas Benkard36b0f042021-02-27 10:46:04 +010035 @JsonbTransient
36 public Set<Comment> comments;
Matthias Andreas Benkard0c009e82021-02-26 07:23:27 +010037
38 public static Post create(Author author, String title) {
39 var p = new Post();
40 p.title = title;
41 p.publicationDate = Instant.now();
42 p.body = "";
43 p.author = author;
44 return p;
45 }
Matthias Andreas Benkard4982faa2021-02-24 06:45:39 +010046}