PromptEntity.java

package fr.tiogars.chat.domains.prompt.entities;

import jakarta.persistence.*;
import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import java.time.Instant;
import java.util.UUID;

/**
 * Entity for storing prompt history and configurations.
 */
@Entity
@Table(name = "prompts")
@EntityListeners(AuditingEntityListener.class)
@Getter
@Setter
public class PromptEntity {

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

    @Column(nullable = false, columnDefinition = "TEXT")
    private String prompt;

    @Column(columnDefinition = "TEXT")
    private String systemPrompt;

    @Column(columnDefinition = "TEXT")
    private String response;

    @Column(name = "model_used")
    private String modelUsed;

    @Column(name = "token_count")
    private Integer tokenCount;

    @Column(name = "processing_time_ms")
    private Long processingTimeMs;

    @Column(name = "finish_reason")
    private String finishReason;

    @CreatedDate
    @Column(name = "created_at", updatable = false)
    private Instant createdAt;

    @Column(name = "session_id")
    private String sessionId;

    @Column(name = "user_id")
    private UUID userId;

    public PromptEntity() {
    }

    public PromptEntity(String prompt, String systemPrompt, String response, 
                        String modelUsed, Integer tokenCount, Long processingTimeMs, 
                        String finishReason, String sessionId, UUID userId) {
        this.prompt = prompt;
        this.systemPrompt = systemPrompt;
        this.response = response;
        this.modelUsed = modelUsed;
        this.tokenCount = tokenCount;
        this.processingTimeMs = processingTimeMs;
        this.finishReason = finishReason;
        this.sessionId = sessionId;
        this.userId = userId;
    }
}