Merge pull request #3 from StewKI/hotfix-async-domain
Whiteboard code unique async generation in domain
This commit is contained in:
@@ -18,15 +18,7 @@ public class CreateWhiteboardCommandHandler : ICommandHandler<CreateWhiteboardCo
|
||||
|
||||
public async Task<WhiteboardId> Handle(CreateWhiteboardCommand command, CancellationToken cancellationToken = default)
|
||||
{
|
||||
WhiteboardCode whiteboardCode;
|
||||
bool codeExists;
|
||||
|
||||
do
|
||||
{
|
||||
whiteboardCode = GenerateUniqueWhiteboardCode();
|
||||
|
||||
codeExists = await _whiteboardRepository.WhiteboardCodeExists(whiteboardCode);
|
||||
} while (codeExists);
|
||||
var whiteboardCode = await WhiteboardCode.GenerateUniqueAsync(_whiteboardRepository);
|
||||
|
||||
var whiteboard = Domain.Models.Whiteboard.Whiteboard.Create(command.OwnerId, whiteboardCode.CodeValue, command.Title);
|
||||
|
||||
@@ -35,18 +27,4 @@ public class CreateWhiteboardCommandHandler : ICommandHandler<CreateWhiteboardCo
|
||||
|
||||
return whiteboard.Id;
|
||||
}
|
||||
|
||||
// TRENUTNO SAMO, CE SE NAPRAVI KO SERVIS IL KAKO VEC KASNIJE
|
||||
private static WhiteboardCode GenerateUniqueWhiteboardCode()
|
||||
{
|
||||
var rng = new Random();
|
||||
char[] result = new char[8];
|
||||
|
||||
for (int i = 0; i < result.Length; i++)
|
||||
{
|
||||
result[i] = (char)('0' + rng.Next(0, 10));
|
||||
}
|
||||
|
||||
return new WhiteboardCode(new string(result));
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
using AipsCore.Domain.Abstract.Rule;
|
||||
using AipsCore.Domain.Abstract.ValueObject;
|
||||
using AipsCore.Domain.Common.Validation.Rules;
|
||||
using AipsCore.Domain.Models.Whiteboard.External;
|
||||
using AipsCore.Domain.Models.Whiteboard.Validation;
|
||||
|
||||
namespace AipsCore.Domain.Models.Whiteboard.ValueObjects;
|
||||
@@ -25,4 +26,32 @@ public record WhiteboardCode : AbstractValueObject
|
||||
new WhiteboardCodeCharsetRule(CodeValue)
|
||||
];
|
||||
}
|
||||
|
||||
public async static Task<WhiteboardCode> GenerateUniqueAsync(IWhiteboardRepository whiteboardRepository)
|
||||
{
|
||||
WhiteboardCode whiteboardCode;
|
||||
bool codeExists;
|
||||
|
||||
do
|
||||
{
|
||||
whiteboardCode = Generate();
|
||||
|
||||
codeExists = await whiteboardRepository.WhiteboardCodeExists(whiteboardCode);
|
||||
} while (codeExists);
|
||||
|
||||
return whiteboardCode;
|
||||
}
|
||||
|
||||
public static WhiteboardCode Generate()
|
||||
{
|
||||
var rng = new Random();
|
||||
char[] result = new char[8];
|
||||
|
||||
for (int i = 0; i < result.Length; i++)
|
||||
{
|
||||
result[i] = (char)('0' + rng.Next(0, 10));
|
||||
}
|
||||
|
||||
return new WhiteboardCode(new string(result));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user