43 lines
1.1 KiB
C#
43 lines
1.1 KiB
C#
using System;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using xCommons.Extensions;
|
|
using xDataService.Interfaces;
|
|
using xModels.Base;
|
|
|
|
namespace xDataService.Providers
|
|
{
|
|
public class XStringKeyGenerator : IXKeyGenerator<XBaseEntity<string>, string>
|
|
{
|
|
private readonly IXSequentialGuid sequentialGuid;
|
|
|
|
public XStringKeyGenerator(IXSequentialGuid sequentialGuid = null)
|
|
{
|
|
this.sequentialGuid = sequentialGuid;
|
|
}
|
|
|
|
public async Task<string> GenerateKey(
|
|
IXBaseRepository<XBaseEntity<string>, string> repository,
|
|
CancellationToken cancellationToken = default
|
|
)
|
|
{
|
|
//
|
|
await Task.CompletedTask;
|
|
|
|
//
|
|
if (sequentialGuid.IsNull())
|
|
{
|
|
return Guid.NewGuid().ToString();
|
|
}
|
|
else
|
|
{
|
|
return sequentialGuid.Next().ToString();
|
|
}
|
|
}
|
|
|
|
public bool IsEmpty(string id)
|
|
{
|
|
return id.IsNullOrEmpty();
|
|
}
|
|
}
|
|
} |