#region Copyright (C) 2019 (OSS开源系列) 公众号:OSSCore
/***************************************************************************
* 文件功能描述:全局辅助类 - 序列数字编码生成辅助
*
* 创建人: Kevin
* 创建人Email:1985088337@qq.com
*
*
*****************************************************************************/
#endregion
namespace OSS.Tools.Num;
public static class SequenceNumHelper
{
///
/// 序列实现来源提供者
///
public static Func? SequenceProvider { get; set; }
///
/// 通过来源名称获取 序列编码 实例
///
///
///
public static ISequenceNumGenerator GetSequenceNumGenerator(string sourceName)
{
var sImpl = SequenceProvider?.Invoke(sourceName);
return sImpl ?? throw new NotImplementedException("并未发现有效的 ISequenceNumGenerate 接口实现,请检查SequenceProvider是否有正确配置或返回是否正确!");
}
///
/// 获取新的序列数(区间)
///
/// 序列主键
/// 来源
///
public static async Task New(string sequenceKey, string sourceName = "")
{
return (await GetSequenceNumGenerator(sourceName).New(sequenceKey, 1)).start;
}
///
/// 获取新的序列数(区间)
///
/// 序列主键
/// 获取个数
/// 来源
///
public static Task<(long start, long end)> New(string sequenceKey, int count, string sourceName = "")
{
return GetSequenceNumGenerator(sourceName).New(sequenceKey, count);
}
}