package com.saas.tenant.entity;

import jakarta.persistence.*;
import lombok.*;

import java.time.LocalDateTime;

/**
 * Retell AI Call Entity (TENANT DATABASE)
 * 
 * Phase 4.2 - Retell AI Integration
 * - NO tenantId field (physical database isolation)
 * - Tracks Retell AI call sessions
 */
@Entity
@Table(name = "retell_calls")
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class RetellCall {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    
    @Column(name = "retell_call_id", unique = true, nullable = false)
    private String retellCallId;  // Retell's call UUID
    
    @Column(name = "agent_id")
    private Long agentId;  // FK to RetellAgent.id
    
    @Column(name = "phone_number")
    private String phoneNumber;
    
    @Column(name = "customer_number")
    private String customerNumber;
    
    @Column(name = "direction")
    private String direction;  // INBOUND, OUTBOUND
    
    @Column(name = "status")
    private String status;  // QUEUED, RINGING, IN_PROGRESS, ENDED, FAILED
    
    @Column(name = "start_time")
    private LocalDateTime startTime;
    
    @Column(name = "end_time")
    private LocalDateTime endTime;
    
    @Column(name = "duration_seconds")
    private Integer durationSeconds;
    
    @Column(name = "transcript", columnDefinition = "JSON")
    private String transcript;  // JSON array of messages
    
    @Column(name = "metadata", columnDefinition = "JSON")
    private String metadata;
    
    @Column(name = "created_at")
    private LocalDateTime createdAt;
    
    @PrePersist
    protected void onCreate() {
        createdAt = LocalDateTime.now();
    }
}
