using LMS.Repository.DB;
using Microsoft.EntityFrameworkCore;
namespace LMS.DAO.OptionDAO
{
public class OptionGlobalDAO(ApplicationDbContext dbContext)
{
private readonly ApplicationDbContext _dbContext = dbContext;
///
/// 根据配置键查找并返回指定类型的配置值
///
/// 返回值类型
/// 配置键
/// 配置值,如果不存在或转换失败则返回默认值
public async Task FindAndReturnOption(string optionKey)
{
// 参数验证
if (string.IsNullOrWhiteSpace(optionKey))
{
return default(T);
}
var options = await _dbContext.Options
.Where(x => x.Key == optionKey)
.FirstOrDefaultAsync();
if (options == null) return default;
// 直接返回转换结果,GetValueObject内部应该处理null情况
return options.GetValueObject() ?? default;
}
///
/// 检查配置是否存在
///
/// 配置键
/// 是否存在
public async Task OptionExists(string optionKey)
{
if (string.IsNullOrWhiteSpace(optionKey))
{
return false;
}
return await _dbContext.Options
.AnyAsync(x => x.Key == optionKey);
}
///
/// 获取多个配置
///
/// 配置键列表
/// 配置字典
public async Task> GetMultipleOptions(params string[] optionKeys)
{
if (optionKeys == null || optionKeys.Length == 0)
{
return new Dictionary();
}
var options = await _dbContext.Options
.Where(x => optionKeys.Contains(x.Key))
.ToListAsync();
return options.ToDictionary(x => x.Key, x => x);
}
}
}