Exemple #1
0
        public async Task <AsyncResult <IEnumerable <IDomainEvent> > > GetAllAggregateStoredEventsSinceAsync(
            string aggregateRootId,
            string aggregateRootTypeName,
            int sequence)
        {
            Assert.NotNullOrEmpty(aggregateRootId, nameof(aggregateRootId));
            Assert.NotNullOrEmpty(aggregateRootTypeName, nameof(aggregateRootTypeName));

            var sql = string.Format(SelectSql, GetShardTableName(aggregateRootId), "`AggregateRootId`=@AggregateRootId AND `AggregateRootTypeName`=@AggregateRootTypeName AND `EventSequence`>@EventSequence");

            try
            {
                using (var connection = new MySqlConnection(_options.ConnectionString))
                {
                    var storedEvents = await connection.QueryAsync <StoredDomainEvent>(sql, new
                    {
                        AggregateRootId       = aggregateRootId,
                        AggregateRootTypeName = aggregateRootTypeName,
                        EventSequence         = sequence
                    });

                    var events = storedEvents.Select(it => DomainEventAdapter.ToDomainEvent(it, _serializer));

                    return(new AsyncResult <IEnumerable <IDomainEvent> >(AsyncStatus.Success, events));
                }
            }
            catch (MySqlException ex)
            {
                _logger.LogError($"the {nameof(GetAllAggregateStoredEventsSinceAsync)} has a sql excetiopn, aggregateRootId: {aggregateRootId},aggregateRootTypeName: {aggregateRootTypeName},EventSequence: {sequence}", ex);

                return(new AsyncResult <IEnumerable <IDomainEvent> >(AsyncStatus.Failed));
            }
            catch (Exception ex)
            {
                _logger.LogError($"the {nameof(GetAllAggregateStoredEventsSinceAsync)} has a unknown excetiopn, aggregateRootId: {aggregateRootId},aggregateRootTypeName: {aggregateRootTypeName},EventSequence: {sequence}", ex);

                return(new AsyncResult <IEnumerable <IDomainEvent> >(AsyncStatus.Failed));
            }
        }
Exemple #2
0
 public static NodeTestFixture UseAdaper <TFrom, TTo>(this NodeTestFixture fixture, DomainEventAdapter <TFrom, TTo> adapter) where TFrom : DomainEvent
     where TTo : DomainEvent
 {
     fixture.OnNodeCreatedEvent += (sender, node) => node.EventsAdaptersCatalog.Register(adapter);
     return(fixture);
 }
Exemple #3
0
 public Task Handle(DomainEventAdapter <DeniedHeadRotateEvent> notification, CancellationToken cancellationToken)
 {
     //TODO: Inventar alguma coisa funcional
     return(Task.Run(() =>
                     Debug.WriteLine($"Evento de Rotação Limitada para a {notification.DomainEvent._direction}")));
 }