38 lines
1.0 KiB
C#
38 lines
1.0 KiB
C#
using Pushy.Domain;
|
|
|
|
namespace Pushy.Silo.Grains;
|
|
|
|
public sealed class LinkGenerator : IGrainBase, ILinkGenerator
|
|
{
|
|
private readonly ILogger<LinkGenerator> _logger;
|
|
private readonly IClusterClient _clusterClient;
|
|
|
|
public IGrainContext GrainContext { get; }
|
|
|
|
public LinkGenerator(
|
|
IGrainContext grainContext,
|
|
IClusterClient clusterClient,
|
|
ILogger<LinkGenerator> logger)
|
|
{
|
|
_clusterClient = clusterClient;
|
|
_logger = logger;
|
|
GrainContext = grainContext;
|
|
}
|
|
|
|
public async ValueTask<LinkResult> GenerateTextShare(string text)
|
|
{
|
|
string item = $"{Guid.CreateVersion7():N}"[9..];
|
|
var textGrain = _clusterClient.GetGrain<ITextItem>(item);
|
|
try
|
|
{
|
|
await textGrain.SetText(text);
|
|
return new LinkResult(textGrain);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
//TODO: Write log message of why it fails?
|
|
//Swallow small change of error
|
|
return await GenerateTextShare(text);
|
|
}
|
|
}
|
|
} |