1
2
3
4
5
6 package org.tailormap.api.persistence;
7
8 import jakarta.persistence.Column;
9 import jakarta.persistence.Entity;
10 import jakarta.persistence.EntityListeners;
11 import jakarta.persistence.Id;
12 import jakarta.persistence.Version;
13 import jakarta.validation.constraints.NotNull;
14 import java.util.ArrayList;
15 import java.util.List;
16 import org.hibernate.annotations.JdbcTypeCode;
17 import org.hibernate.envers.Audited;
18 import org.hibernate.type.SqlTypes;
19 import org.springframework.data.jpa.domain.support.AuditingEntityListener;
20 import org.tailormap.api.persistence.json.CatalogNode;
21 import org.tailormap.api.persistence.listener.EntityEventPublisher;
22
23 @Audited
24 @Entity
25 @EntityListeners({EntityEventPublisher.class, AuditingEntityListener.class})
26 public class Catalog extends AuditMetadata {
27 public static final String MAIN = "main";
28
29 @Id
30 private String id;
31
32 @Version
33 private Long version;
34
35 @JdbcTypeCode(SqlTypes.JSON)
36 @Column(columnDefinition = "jsonb")
37 @NotNull private List<CatalogNode> nodes = new ArrayList<>();
38
39 public String getId() {
40 return id;
41 }
42
43 public Catalog setId(String id) {
44 this.id = id;
45 return this;
46 }
47
48 public Long getVersion() {
49 return version;
50 }
51
52 public Catalog setVersion(Long version) {
53 this.version = version;
54 return this;
55 }
56
57 public List<CatalogNode> getNodes() {
58 return nodes;
59 }
60
61 public Catalog setNodes(List<CatalogNode> nodes) {
62 this.nodes = nodes;
63 return this;
64 }
65 }