public override Task <TagsView> PublishCollection(PublishTags command, ServerCallContext context) { var tagViews = new List <TagView>(); foreach (var tag in command.Names) { var tagId = Guid.NewGuid(); var entity = new Tag { Id = tagId, Name = tag, ArticleTags = new HashSet <ArticleTag> { new ArticleTag { TagId = tagId, ArticleId = Guid.Parse(command.ArticleId) } } }; _repository.AddOrDefault(entity); var view = new TagView { Id = tagId.ToString(), Name = tag }; tagViews.Add(view); } var result = new TagsView { Tags = { tagViews } }; return(Task.FromResult(result)); }
private static async Task <Option <TagsView, Error> > PublishAsyncOrError( TagService.TagServiceClient client, PublishTags command) { try { var result = await client.PublishCollectionAsync(command); return(result.Some <TagsView, Error>()); } catch (RpcException) { return(Option.None <TagsView, Error>( Error.Critical("An unhandled exception occured while publishing the article's tags."))); } }