41 lines
1.3 KiB
C#
41 lines
1.3 KiB
C#
|
|
using JobsMedical.Web.Data;
|
||
|
|
using JobsMedical.Web.Models;
|
||
|
|
using Microsoft.EntityFrameworkCore;
|
||
|
|
|
||
|
|
namespace JobsMedical.Web.Services.Scraping;
|
||
|
|
|
||
|
|
/// <summary>Loads/creates the single platform-settings row (Id=1).</summary>
|
||
|
|
public class SettingsService
|
||
|
|
{
|
||
|
|
private readonly AppDbContext _db;
|
||
|
|
public SettingsService(AppDbContext db) => _db = db;
|
||
|
|
|
||
|
|
public async Task<AppSetting> GetAsync()
|
||
|
|
{
|
||
|
|
var s = await _db.AppSettings.FirstOrDefaultAsync(x => x.Id == 1);
|
||
|
|
if (s is null)
|
||
|
|
{
|
||
|
|
s = new AppSetting { Id = 1 };
|
||
|
|
_db.AppSettings.Add(s);
|
||
|
|
await _db.SaveChangesAsync();
|
||
|
|
}
|
||
|
|
return s;
|
||
|
|
}
|
||
|
|
|
||
|
|
public async Task SaveAsync(AppSetting incoming)
|
||
|
|
{
|
||
|
|
var s = await GetAsync();
|
||
|
|
s.Mode = incoming.Mode;
|
||
|
|
s.AutoPublishMinConfidence = Math.Clamp(incoming.AutoPublishMinConfidence, 0, 100);
|
||
|
|
s.AiEnabled = incoming.AiEnabled;
|
||
|
|
s.AiEndpoint = incoming.AiEndpoint?.Trim();
|
||
|
|
s.AiApiKey = incoming.AiApiKey?.Trim();
|
||
|
|
s.AiModel = incoming.AiModel?.Trim();
|
||
|
|
s.AiSystemPrompt = string.IsNullOrWhiteSpace(incoming.AiSystemPrompt)
|
||
|
|
? AppSetting.DefaultPrompt : incoming.AiSystemPrompt;
|
||
|
|
s.AiAutoApprove = incoming.AiAutoApprove;
|
||
|
|
s.UpdatedAt = DateTime.UtcNow;
|
||
|
|
await _db.SaveChangesAsync();
|
||
|
|
}
|
||
|
|
}
|