LmStudioSettingsEntity.java

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

import fr.tiogars.chat.domains.lmstudio.models.LmStudioSettings;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;

@Entity
@Table(name = "lmstudio_settings")
public class LmStudioSettingsEntity {

    public static final Long GLOBAL_ID = 1L;

    @Id
    private Long id = GLOBAL_ID;

    @Column(nullable = false, length = 2048)
    private String baseUrl;

    @Column(nullable = false)
    private String model;

    @Column(nullable = false)
    private int timeoutSeconds;

    @Column(length = 4096)
    private String token;

    protected LmStudioSettingsEntity() {
    }

    public LmStudioSettingsEntity(LmStudioSettings settings) {
        update(settings);
    }

    public void update(LmStudioSettings settings) {
        this.baseUrl = settings.baseUrl();
        this.model = settings.model();
        this.timeoutSeconds = settings.timeoutSeconds();
        if (settings.token() != null) {
            this.token = settings.token().isEmpty() ? null : settings.token();
        }
    }

    public LmStudioSettings toSettings() {
        return new LmStudioSettings(baseUrl, model, timeoutSeconds, token);
    }
}