Example #1
0
        public CommittedEventStream Commit(UncommittedEventStream uncommittedEventStream)
        {
            foreach (var @event in uncommittedEventStream)
            {
                var eventSourceName = Type.GetType(@event.EventSource).Name;
                var eventPath       = GetPathFor(eventSourceName, @event.EventSourceId);

                @event.Id = GetNextEventId();

                var json = _serializer.ToJson(new EventHolder
                {
                    Type    = @event.GetType(),
                    Version = @event.Version,
                    Event   = _serializer.ToJson(@event)
                });

                var path = Path.Combine(eventPath, $"{@event.Version.Commit}.{@event.Version.Sequence}");
                File.WriteAllText(path, json);
            }

            var committedEventStream = new CommittedEventStream(uncommittedEventStream.EventSourceId);

            committedEventStream.Append(uncommittedEventStream);
            return(committedEventStream);
        }
Example #2
0
        public CommittedEventStream GetForEventSource(EventSource eventSource, Guid eventSourceId)
        {
            var eventStream = new CommittedEventStream(eventSourceId);

            if (_aggregatedRootEvents.ContainsKey(eventSourceId))
            {
                eventStream.Append(_aggregatedRootEvents[eventSourceId]);
            }
            return(eventStream);
        }
Example #3
0
        public CommittedEventStream Commit(UncommittedEventStream uncommittedEventStream)
        {
            var events                 = uncommittedEventStream.Select(e => e).ToArray();
            var parameters             = new List <OracleParameter>();
            var insertStatementBuilder = new StringBuilder();

            insertStatementBuilder.Append("BEGIN ");
            for (var position = 0; position < events.Length; position++)
            {
                insertStatementBuilder.Append(GetParameterizedInsertStatement(position));
                parameters.AddRange(_eventParameters.BuildFromEvent(position, events[position]));
            }
            insertStatementBuilder.Append(" END;");

            Tuple <int, long>[] returnedIds;

            try
            {
                OpenConnection();
                var transaction = _connection.BeginTransaction();
                try
                {
                    using (var command = _connection.CreateCommand())
                    {
                        command.Transaction = transaction;
                        command.CommandText = insertStatementBuilder.ToString();
                        command.Parameters.AddRange(parameters.ToArray());
                        command.BindByName = true;
                        command.ExecuteNonQuery();

                        returnedIds = ExtractReturnedIds(parameters);
                        transaction.Commit();
                    }
                }
                catch (Exception)
                {
                    transaction.Rollback();
                    throw;
                }
            }
            finally
            {
                EnsureConnectionClosed(_connection);
            }

            PopulateEventId(returnedIds, events);

            var committedEventStream = new CommittedEventStream(uncommittedEventStream.EventSourceId);

            if (events.Any())
            {
                committedEventStream.Append(events);
            }
            return(committedEventStream);
        }
Example #4
0
        public CommittedEventStream Commit(UncommittedEventStream uncommittedEventStream)
        {
            if (!_aggregatedRootEvents.ContainsKey(uncommittedEventStream.EventSourceId))
            {
                _aggregatedRootEvents[uncommittedEventStream.EventSourceId] = new List <IEvent>();
            }

            _aggregatedRootEvents[uncommittedEventStream.EventSourceId].AddRange(uncommittedEventStream);

            var committedEventStream = new CommittedEventStream(uncommittedEventStream.EventSourceId);

            committedEventStream.Append(uncommittedEventStream);
            return(committedEventStream);
        }
Example #5
0
        public CommittedEventStream GetForEventSource(EventSource eventSource, Guid eventSourceId)
        {
            var eventSourceType = eventSource.GetType();
            var query           = Query.And(
                Query.EQ("EventSourceId", eventSourceId),
                Query.EQ("EventSource", eventSourceType.AssemblyQualifiedName)
                );

            var cursor    = _collection.FindAs <BsonDocument>(query);
            var documents = cursor.ToArray();
            var events    = ToEvents(documents);
            var stream    = new CommittedEventStream(eventSourceId);

            stream.Append(events);
            return(stream);
        }
Example #6
0
        public CommittedEventStream GetForEventSource(EventSource eventSource, Guid eventSourceId)
        {
            var committedEventStream = new CommittedEventStream(eventSourceId);

            var eventSourceParam = new OracleParameter(EventParameters.EVENTSOURCE, OracleDbType.NVarchar2, 512);

            eventSourceParam.Value = eventSource.GetType().AssemblyQualifiedName;

            var eventSourceIdParam = new OracleParameter(EventParameters.EVENTSOURCEID, OracleDbType.Raw, 16);

            eventSourceIdParam.Value = eventSourceId.ToByteArray();

            var eventDtos = new List <EventDto>();

            try
            {
                OpenConnection();
                using (var command = _connection.CreateCommand())
                {
                    command.CommandText = READ_STATEMENT_FOR_EVENTS_BY_AGGREGATE_ROOT;
                    command.Parameters.Add(eventSourceIdParam);
                    command.Parameters.Add(eventSourceParam);
                    command.BindByName = true;
                    var reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        eventDtos.Add(MapReaderToEventDto(reader));
                    }
                }
            }
            finally
            {
                EnsureConnectionClosed(_connection);
            }

            var retrievedEvents = eventDtos.Select(BuildEventInstanceFromDto)
                                  .Select(@event => _eventMigratorManager.Migrate(@event))
                                  .ToList();

            if (retrievedEvents.Any())
            {
                committedEventStream.Append(retrievedEvents);
            }

            return(committedEventStream);
        }
Example #7
0
        public CommittedEventStream GetForEventSource(EventSource eventSource, Guid eventSourceId)
        {
            using (var session = _documentStore.OpenSession())
            {
                var eventSourceType = eventSource.GetType();

                var events = session.Query <IEvent>()
                             .Where(
                    e => e.EventSourceId == eventSourceId &&
                    e.EventSource == eventSourceType.AssemblyQualifiedName
                    ).ToArray();

                var stream = new CommittedEventStream(eventSourceId);
                stream.Append(events);
                return(stream);
            }
        }
Example #8
0
        public CommittedEventStream Commit(UncommittedEventStream uncommittedEventStream)
        {
            var committedEventStream = new CommittedEventStream(uncommittedEventStream.EventSourceId);

            foreach (var @event in uncommittedEventStream)
            {
                var serialized = _serializer.ToJson(@event, SerializationExtensions.SerializationOptions);
                _client
                .ExecuteStoredProcedureAsync <long>(_insertEventStoredProcedure.SelfLink, serialized)
                .ContinueWith(t => @event.Id = t.Result)
                .Wait();

                committedEventStream.Append(@event);
            }

            return(committedEventStream);
        }
Example #9
0
        public CommittedEventStream Commit(UncommittedEventStream uncommittedEventStream)
        {
            using (var session = _documentStore.OpenSession())
            {
                var eventArray = uncommittedEventStream.ToArray();
                for (var eventIndex = 0; eventIndex < eventArray.Length; eventIndex++)
                {
                    var @event = eventArray[eventIndex];
                    //session.Advanced.
                    session.Store(@event);
                }

                session.SaveChanges();
                var committedEventStream = new CommittedEventStream(uncommittedEventStream.EventSourceId);
                committedEventStream.Append(uncommittedEventStream);
                return(committedEventStream);
            }
        }
Example #10
0
        public CommittedEventStream Commit(UncommittedEventStream uncommittedEventStream)
        {
            var eventArray = uncommittedEventStream.ToArray();

            for (var eventIndex = 0; eventIndex < eventArray.Length; eventIndex++)
            {
                var @event = eventArray[eventIndex];
                @event.Id = GetNextEventId();
                var eventDocument = @event.ToBsonDocument();
                AddMetaData(@event, eventDocument);
                _collection.Insert(eventDocument);
            }

            var committedEventStream = new CommittedEventStream(uncommittedEventStream.EventSourceId);

            committedEventStream.Append(uncommittedEventStream);
            return(committedEventStream);
        }
Example #11
0
#pragma warning disable 1591 // Xml Comments
        public CommittedEventStream GetForEventSource(EventSource eventSource, Guid eventSourceId)
        {
            var eventPath = GetPathFor(eventSource.GetType().Name, eventSourceId);
            var files = Directory.GetFiles(eventPath).OrderBy(f => f);

            var stream = new CommittedEventStream(eventSourceId);

            var target = new EventHolder
            {
                Type = typeof(string),
                Version = EventSourceVersion.Zero,
                Event = string.Empty
            };

            foreach (var file in files)
            {
                var json = File.ReadAllText(file);
                _serializer.FromJson(target, json);

                var @event = _serializer.FromJson(target.Type, json) as IEvent;
                stream.Append(new[] { @event });
            }
            return stream;
        }
Example #12
0
#pragma warning disable 1591 // Xml Comments
        public CommittedEventStream GetForEventSource(EventSource eventSource, Guid eventSourceId)
        {
            var eventPath = GetPathFor(eventSource.GetType().Name, eventSourceId);
            var files     = Directory.GetFiles(eventPath).OrderBy(f => f);

            var stream = new CommittedEventStream(eventSourceId);

            var target = new EventHolder
            {
                Type    = typeof(string),
                Version = EventSourceVersion.Zero,
                Event   = string.Empty
            };

            foreach (var file in files)
            {
                var json = File.ReadAllText(file);
                _serializer.FromJson(target, json);

                var @event = _serializer.FromJson(target.Type, json) as IEvent;
                stream.Append(new[] { @event });
            }
            return(stream);
        }
Example #13
0
        public CommittedEventStream Commit(UncommittedEventStream uncommittedEventStream)
        {
            foreach (var @event in uncommittedEventStream)
            {
                var eventSourceName = Type.GetType(@event.EventSource).Name;
                var eventPath = GetPathFor(eventSourceName, @event.EventSourceId);

                @event.Id = GetNextEventId();

                var json = _serializer.ToJson(new EventHolder
                {
                    Type = @event.GetType(),
                    Version = @event.Version,
                    Event = _serializer.ToJson(@event)
                });


                File.WriteAllText(string.Format("{0}\\{1}.{2}",eventPath,@event.Version.Commit, @event.Version.Sequence), json);
            }

            var committedEventStream = new CommittedEventStream(uncommittedEventStream.EventSourceId);
            committedEventStream.Append(uncommittedEventStream);
            return committedEventStream;
        }