View Javadoc
1   package fr.tiogars.chat.domains.prompt.entities;
2   
3   import jakarta.persistence.*;
4   import lombok.Getter;
5   import lombok.Setter;
6   import org.springframework.data.annotation.CreatedDate;
7   import org.springframework.data.jpa.domain.support.AuditingEntityListener;
8   
9   import java.time.Instant;
10  import java.util.UUID;
11  
12  /**
13   * Entity for storing prompt history and configurations.
14   */
15  @Entity
16  @Table(name = "prompts")
17  @EntityListeners(AuditingEntityListener.class)
18  @Getter
19  @Setter
20  public class PromptEntity {
21  
22      @Id
23      @GeneratedValue(strategy = GenerationType.UUID)
24      private UUID id;
25  
26      @Column(nullable = false, columnDefinition = "TEXT")
27      private String prompt;
28  
29      @Column(columnDefinition = "TEXT")
30      private String systemPrompt;
31  
32      @Column(columnDefinition = "TEXT")
33      private String response;
34  
35      @Column(name = "model_used")
36      private String modelUsed;
37  
38      @Column(name = "token_count")
39      private Integer tokenCount;
40  
41      @Column(name = "processing_time_ms")
42      private Long processingTimeMs;
43  
44      @Column(name = "finish_reason")
45      private String finishReason;
46  
47      @CreatedDate
48      @Column(name = "created_at", updatable = false)
49      private Instant createdAt;
50  
51      @Column(name = "session_id")
52      private String sessionId;
53  
54      @Column(name = "user_id")
55      private UUID userId;
56  
57      public PromptEntity() {
58      }
59  
60      public PromptEntity(String prompt, String systemPrompt, String response, 
61                          String modelUsed, Integer tokenCount, Long processingTimeMs, 
62                          String finishReason, String sessionId, UUID userId) {
63          this.prompt = prompt;
64          this.systemPrompt = systemPrompt;
65          this.response = response;
66          this.modelUsed = modelUsed;
67          this.tokenCount = tokenCount;
68          this.processingTimeMs = processingTimeMs;
69          this.finishReason = finishReason;
70          this.sessionId = sessionId;
71          this.userId = userId;
72      }
73  }