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 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(); } }