| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package com.pharmacopoeia.entity;
- import jakarta.persistence.*;
- import lombok.*;
- import org.hibernate.annotations.JdbcTypeCode;
- import org.hibernate.type.SqlTypes;
- import java.time.Instant;
- import java.util.Map;
- @Entity
- @Table(name = "user_events")
- @Data
- @NoArgsConstructor
- @AllArgsConstructor
- @Builder
- public class UserEvent {
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private Long id;
- @Column(name = "user_key", length = 128)
- private String userKey;
- @Column(name = "event_type", length = 64)
- private String eventType;
- @Column(name = "event_data", columnDefinition = "jsonb")
- @JdbcTypeCode(SqlTypes.JSON)
- private Map<String, Object> eventData;
- @Column(name = "page_url", length = 512)
- private String pageUrl;
- @Column(length = 512)
- private String referrer;
- @Column(length = 64)
- private String ip;
- @Column(name = "user_agent", length = 512)
- private String userAgent;
- @Column(name = "created_at", updatable = false)
- private Instant createdAt;
- @PrePersist
- void onCreate() {
- if (createdAt == null) createdAt = Instant.now();
- }
- }
|