Files
pushy/Pushy.Silo/Grains/LinkGenerator.cs
2024-12-23 14:52:23 +00:00

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);
}
}
}