private void Add(StoredEvent @event) { DeserializedEventStore.TryAdd(@event); _queue.QueueBackgroundWorkItem(async token => { var payload = SerializeObject(DeserializedEventStore .GetStoredEvents().Concat(new StoredEvent[1] { @event })); File.WriteAllText($@"{Environment.CurrentDirectory}\storedEvents.json", payload); await Task.CompletedTask; }); }
public T Query <T>(Guid id) where T : AggregateRoot { var list = new List <DomainEvent>(); foreach (var storedEvent in DeserializedEventStore.Get()) { if (storedEvent.StreamId == id) { list.Add(storedEvent.Data as DomainEvent); } } return(Load <T>(list)); }
public TAggregateRoot Query <TAggregateRoot>(string propertyName, string value) where TAggregateRoot : AggregateRoot { var type = typeof(TAggregateRoot); var prop = type.GetProperty(propertyName); if (prop == null) { return(null); } foreach (var deserializedStoredEvent in DeserializedEventStore.Get()) { if ($"{prop.GetValue(deserializedStoredEvent.Data, null)}" == value) { return(Query <TAggregateRoot>(deserializedStoredEvent.StreamId) as TAggregateRoot); } } return(null); }
public IEnumerable <TAggregateRoot> Query <TAggregateRoot>() where TAggregateRoot : AggregateRoot { var aggregates = new List <TAggregateRoot>(); var streamIds = new List <Guid>(); var name = typeof(TAggregateRoot).Name; foreach (var @event in DeserializedEventStore.Get()) { if (@event.Aggregate == name && !streamIds.Contains(@event.StreamId)) { streamIds.Add(@event.StreamId); } } foreach (var streamId in streamIds) { aggregates.Add(Query <TAggregateRoot>(streamId)); } return(aggregates); }