using Dpz.Core.Public.ViewModel;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;

namespace Dpz.Core.Backup;

public class BackupService(IConfiguration configuration, ILoggerFactory loggerFactory)
    : IBackupService
{
    public async Task<VmBackupRecord?> BackupAsync(
        string? connectionString,
        Dictionary<string, string>? filter = null
    )
    {
        var backupKey = configuration["BackupKey"] ?? throw new Exception("backup key is null");
        using var backupManager = new BackupManager(connectionString, backupKey, loggerFactory);
        var result = await backupManager.BackupAsync(filter);
        return await UploadAsync(result);
    }

    public Func<BackupResult, Task<VmBackupRecord?>> UploadAsync { get; set; } =
        _ =>
        {
            var logger = loggerFactory.CreateLogger<BackupService>();
            logger.LogWarning("upload async not implemented.");
            return Task.FromResult<VmBackupRecord?>(null);
        };
}
评论加载中...