コード例 #1
0
        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));
        }
コード例 #2
0
        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.")));
            }
        }