UserEvent.java 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package com.pharmacopoeia.entity;
  2. import jakarta.persistence.*;
  3. import lombok.*;
  4. import org.hibernate.annotations.JdbcTypeCode;
  5. import org.hibernate.type.SqlTypes;
  6. import java.time.Instant;
  7. import java.util.Map;
  8. @Entity
  9. @Table(name = "user_events")
  10. @Data
  11. @NoArgsConstructor
  12. @AllArgsConstructor
  13. @Builder
  14. public class UserEvent {
  15. @Id
  16. @GeneratedValue(strategy = GenerationType.IDENTITY)
  17. private Long id;
  18. @Column(name = "user_key", length = 128)
  19. private String userKey;
  20. @Column(name = "event_type", length = 64)
  21. private String eventType;
  22. @Column(name = "event_data", columnDefinition = "jsonb")
  23. @JdbcTypeCode(SqlTypes.JSON)
  24. private Map<String, Object> eventData;
  25. @Column(name = "page_url", length = 512)
  26. private String pageUrl;
  27. @Column(length = 512)
  28. private String referrer;
  29. @Column(length = 64)
  30. private String ip;
  31. @Column(name = "user_agent", length = 512)
  32. private String userAgent;
  33. @Column(name = "created_at", updatable = false)
  34. private Instant createdAt;
  35. @PrePersist
  36. void onCreate() {
  37. if (createdAt == null) createdAt = Instant.now();
  38. }
  39. }