Add server configuration service and repo
This commit is contained in:
33
RecNet.Application/Services/Configuration/ConfigService.cs
Normal file
33
RecNet.Application/Services/Configuration/ConfigService.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using System.Text.Json;
|
||||
using RecNet.Domain.Repositories;
|
||||
|
||||
namespace RecNet.Application.Services.Configuration;
|
||||
|
||||
public class ConfigService(IServerConfigRepository repository) : IConfigService
|
||||
{
|
||||
private static readonly JsonSerializerOptions JsonOptions = new(JsonSerializerDefaults.Web);
|
||||
|
||||
public async Task<T?> GetAsync<T>(
|
||||
string key,
|
||||
T? defaultValue = default,
|
||||
CancellationToken ct = default)
|
||||
{
|
||||
var config = await repository.GetAsync(key, ct);
|
||||
if (config == null)
|
||||
return defaultValue;
|
||||
|
||||
return JsonSerializer.Deserialize<T>(config.Value, JsonOptions);
|
||||
}
|
||||
|
||||
public async Task SetAsync<T>(
|
||||
string key,
|
||||
T value,
|
||||
CancellationToken ct = default)
|
||||
{
|
||||
var json = JsonSerializer.Serialize(value, JsonOptions);
|
||||
|
||||
await repository.SetAsync(key, json, ct);
|
||||
|
||||
await repository.SaveChangesAsync(ct);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user