using System;
using System.Threading;
using System.Threading.Tasks;
using xCommons.Extensions;
using xDataService.Interfaces;
using xModels.Base;
namespace xDataService.Providers
{
///
/// Default Guid Key Generator ...
///
///
public class XStringKeyGenerator : XKeyGenerator, IXKeyGenerator
where TEntity : XBaseEntity
{
private readonly IXSequentialGuid sequentialGuid;
public XStringKeyGenerator(IXSequentialGuid sequentialGuid = null)
{
this.sequentialGuid = sequentialGuid;
}
public override async Task GenerateKey(
IXBaseRepository repository,
CancellationToken cancellationToken = default
)
{
//
await Task.CompletedTask;
//
if (sequentialGuid.IsNull())
{
return Guid.NewGuid().ToString();
}
else
{
return sequentialGuid.Next().ToString();
}
}
public override bool IsEmpty(string id)
{
return id.IsNullOrEmpty();
}
}
}