package com.kt.event.analytics.entity;

import com.kt.event.common.entity.BaseTimeEntity;
import jakarta.persistence.*;
import lombok.*;

import java.time.LocalDateTime;

/**
 * 시간대별 데이터 엔티티
 *
 * 이벤트 기간 동안의 시간대별 참여 추이 데이터
 */
@Entity
@Table(name = "timeline_data", indexes = {
    @Index(name = "idx_event_timestamp", columnList = "event_id, timestamp")
})
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class TimelineData extends BaseTimeEntity {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    /**
     * 이벤트 ID
     */
    @Column(name = "event_id", nullable = false, length = 50)
    private String eventId;

    /**
     * 시간 (집계 기준 시간)
     */
    @Column(nullable = false)
    private LocalDateTime timestamp;

    /**
     * 참여자 수
     */
    @Column(nullable = false)
    @Builder.Default
    private Integer participants = 0;

    /**
     * 조회수
     */
    @Column(nullable = false)
    @Builder.Default
    private Integer views = 0;

    /**
     * 참여 행동 수
     */
    @Column(nullable = false)
    @Builder.Default
    private Integer engagement = 0;

    /**
     * 전환 수
     */
    @Column(nullable = false)
    @Builder.Default
    private Integer conversions = 0;

    /**
     * 누적 참여자 수
     */
    @Column(name = "cumulative_participants", nullable = false)
    @Builder.Default
    private Integer cumulativeParticipants = 0;
}
