1 package fr.tiogars.chat.domains.lmstudio.entities;
2
3 import fr.tiogars.chat.domains.lmstudio.models.LmStudioSettings;
4 import jakarta.persistence.Column;
5 import jakarta.persistence.Entity;
6 import jakarta.persistence.Id;
7 import jakarta.persistence.Table;
8
9 @Entity
10 @Table(name = "lmstudio_settings")
11 public class LmStudioSettingsEntity {
12
13 public static final Long GLOBAL_ID = 1L;
14
15 @Id
16 private Long id = GLOBAL_ID;
17
18 @Column(nullable = false, length = 2048)
19 private String baseUrl;
20
21 @Column(nullable = false)
22 private String model;
23
24 @Column(nullable = false)
25 private int timeoutSeconds;
26
27 @Column(length = 4096)
28 private String token;
29
30 protected LmStudioSettingsEntity() {
31 }
32
33 public LmStudioSettingsEntity(LmStudioSettings settings) {
34 update(settings);
35 }
36
37 public void update(LmStudioSettings settings) {
38 this.baseUrl = settings.baseUrl();
39 this.model = settings.model();
40 this.timeoutSeconds = settings.timeoutSeconds();
41 if (settings.token() != null) {
42 this.token = settings.token().isEmpty() ? null : settings.token();
43 }
44 }
45
46 public LmStudioSettings toSettings() {
47 return new LmStudioSettings(baseUrl, model, timeoutSeconds, token);
48 }
49 }