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
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 }