1 package de.dlr.shepard.common.mongoDB;
2
3 import com.fasterxml.jackson.annotation.JsonFormat;
4 import com.fasterxml.jackson.annotation.JsonIgnore;
5 import de.dlr.shepard.common.neo4j.entities.HasCreationDate;
6 import de.dlr.shepard.common.util.HasId;
7 import java.util.Date;
8 import lombok.Data;
9 import lombok.NoArgsConstructor;
10 import org.bson.codecs.pojo.annotations.BsonIgnore;
11 import org.eclipse.microprofile.openapi.annotations.media.Schema;
12 import org.neo4j.ogm.annotation.GeneratedValue;
13 import org.neo4j.ogm.annotation.Id;
14 import org.neo4j.ogm.annotation.Index;
15 import org.neo4j.ogm.annotation.typeconversion.DateLong;
16
17 @Data
18 @NoArgsConstructor
19 public abstract class AbstractMongoObject implements HasId, HasCreationDate {
20
21 @Id
22 @GeneratedValue
23 @JsonIgnore
24 private Long id;
25
26 @Index
27 @BsonIgnore
28 @Schema(readOnly = true)
29 private String oid;
30
31 @Schema(readOnly = true, nullable = true, format = "date-time", example = "2024-08-15T11:18:44.632+00:00")
32 @JsonFormat(shape = JsonFormat.Shape.STRING)
33 @DateLong
34 private Date createdAt;
35
36
37
38
39
40
41 protected AbstractMongoObject(String oid) {
42 this.oid = oid;
43 }
44
45 protected AbstractMongoObject(String oid, Date createdAt) {
46 this.oid = oid;
47 this.createdAt = createdAt;
48 }
49
50 @BsonIgnore
51 @Override
52 public String getUniqueId() {
53 return oid;
54 }
55 }