using Pushy.Domain; namespace Pushy.Silo.Grains; public sealed class LinkGenerator : IGrainBase, ILinkGenerator { private readonly ILogger _logger; private readonly IClusterClient _clusterClient; public IGrainContext GrainContext { get; } public LinkGenerator( IGrainContext grainContext, IClusterClient clusterClient, ILogger logger) { _clusterClient = clusterClient; _logger = logger; GrainContext = grainContext; } public async ValueTask GenerateTextShare(string text) { string item = $"{Guid.CreateVersion7():N}"[9..]; var textGrain = _clusterClient.GetGrain(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); } } }