package com.saas.tenant.entity;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.CreationTimestamp;

import java.time.LocalDateTime;

@Entity
@Table(name = "tenant_error_logs")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class TenantErrorLog {

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

    @Column(name = "error_code")
    private String errorCode; // e.g., 500, 400, or status code

    @Column(name = "error_message", columnDefinition = "TEXT")
    private String errorMessage;

    @Column(name = "stack_trace", columnDefinition = "TEXT")
    private String stackTrace;

    @Column(nullable = false)
    private String path; // Request URI or Component Name

    private String method; // HTTP Method or Action Name

    @Column(nullable = false)
    private String source; // BACKEND or FRONTEND

    @Column(name = "user_principal")
    private String userPrincipal; // Authenticated user usually

    @CreationTimestamp
    @Column(nullable = false, updatable = false)
    private LocalDateTime timestamp;
}
