public void Execute(DeleteResource cmd)
    {
        _repo.Delete(cmd.ResourceId);
        var evnt = cmd.ToEvent();

        _bus.Publish(evnt);
    }
예제 #2
0
        /// <summary>
        /// Stores the events using the specified action then publish them.
        /// If persisting throws a <see cref="DuplicateOperationException"/> it will use those events for publishing
        /// </summary>
        /// <param name="bus"></param>
        /// <param name="persistAction">Should throw <see cref="DuplicateOperationException"/> if a commit is duplicate</param>
        public static void PublishAfterStoring(this IDispatchMessages bus, Func <IEvent[]> persistAction)
        {
            persistAction.MustNotBeNull();
            IEvent[] events = Array.Empty <IEvent>();
            try
            {
                events = persistAction();
            }
            catch (DuplicateOperationException ex)
            {
                events = ex.Events;
            }

            bus.Publish(events);
        }
        public void StoreAndPublish(params DomainEvent[] events)
        {
            if (events.Length == 0)
            {
                return;
            }
            try
            {
                _appender.Append(events);
            }
            catch (DuplicateOperationException ex)
            {
                events = ex.Events;
            }

            _bus.Publish(events);
        }
예제 #4
0
 /// <summary>
 /// Publishes and clears events
 /// </summary>
 /// <param name="entity"></param>
 /// <param name="bus"></param>
 public static void PublishEvents(this IGenerateEvents entity, IDispatchMessages bus)
 {
     entity.MustNotBeNull();
     bus.Publish(entity.GetGeneratedEvents());
     entity.ClearEvents();
 }
예제 #5
0
 public static void PublishWith(this IEvent[] events, IDispatchMessages bus)
 => bus.Publish(events);
예제 #6
0
 /// <summary>
 /// Publishes and clears events
 /// </summary>
 /// <param name="entity"></param>
 /// <param name="bus"></param>
 public static void PublishEvents(this IGenerateEvents entity,IDispatchMessages bus)
 {
     entity.MustNotBeNull();
      bus.Publish(entity.GetGeneratedEvents());
     entity.ClearEvents();
 }