Exemplo n.º 1
0
        public async Task UpdateTitle(string id, string title)
        {
            var @event = await CreateEvent(id, EventTypes.TitleUpdated, title);

            var titleUpdated = TitleUpdated.Create(@event, id, title);

            messageQueue.Publish(titleUpdated);
        }
Exemplo n.º 2
0
 void OnTitleUpdated(TitleUpdated titleUpdated)
 {
     lock (lock_)
     {
         if (CheckMessageSanity(titleUpdated))
         {
             if (data.ContainsKey(titleUpdated.ProductId))
             {
                 var entry = data[titleUpdated.ProductId];
                 entry.Title = titleUpdated.Title;
             }
         }
     }
 }
Exemplo n.º 3
0
 protected override IEnumerable <CommandDefinition> GetCommand(object evt)
 {
     return(evt switch
     {
         ArticlePublished e => ArrayOf(new ArticleInsertCommand(e).Command, new TagBatchInsert(e).Command),
         ArticleDeleted e => ArrayOf(
             new CommandDefinition("delete from Tags where ArticleId=@ArticleId", e),
             new CommandDefinition("delete from Favorites where ArticleId=@ArticleId", e),
             new CommandDefinition("delete from Articles where ArticleId=@ArticleId", e)),
         ArticleFavorited e => ArrayOf(
             new CommandDefinition("insert into Favorites (ArticleId, UserId) values (@ArticleId, @UserId)", e),
             new CommandDefinition("update Articles set FavoriteCount=FavoriteCount+1 where ArticleId=@ArticleId", e)),
         ArticleUnfavorited e => ArrayOf(
             new CommandDefinition("delete from Favorites where ArticleId=@ArticleId and UserId=@UserId", e),
             new CommandDefinition("update Articles set FavoriteCount=FavoriteCount-1 where ArticleId=@ArticleId", e)),
         BodyUpdated e => ArrayOf(new CommandDefinition("update Articles set Body=@Body, UpdatedDate=@UpdatedAt where ArticleId=@ArticleId", e)),
         DescriptionUpdated e => ArrayOf(new CommandDefinition("update Articles set Description=@Description, UpdatedDate=@UpdatedAt where ArticleId=@ArticleId", e)),
         TitleUpdated e => ArrayOf(new CommandDefinition("update Articles set Title=@Title, TitleSlug=@TitleSlug, UpdatedDate=@UpdatedAt where ArticleId=@ArticleId", e)),
         _ => Array.Empty <CommandDefinition>()
     });
Exemplo n.º 4
0
        IMessage <object> ConstructMessage <T>(Event @event)
        {
            var data = @event.Data;

            if (data == null)
            {
                throw new ArgumentNullException(nameof(@event.Data));
            }

            switch (data.Type)
            {
            case EventTypes.AmountUpdated:
                var amount = data.Payload as int?;
                if (amount != null)
                {
                    return((IMessage <object>)AmountUpdated.Create(@event, data.Id, amount.Value));
                }
                break;

            case EventTypes.ProductCreated:
                if (data.Payload is Product product)
                {
                    return((IMessage <object>)ProductCreated.Create(@event, product));
                }
                break;

            case EventTypes.ProductDeleted:
                return((IMessage <object>)ProductDeleted.Create(@event, data.Id));

            case EventTypes.TitleUpdated:
                var title = data.Payload as string;
                return((IMessage <object>)TitleUpdated.Create(@event, data.Id, title));

            default:
                break;
            }

            throw new ArgumentException($"InvalidEvent data: {data.Id}, " +
                                        $"{data.Type}, {data.Payload}");
        }