예제 #1
0
        public IEnumerable <ISourcedEvent> GetAllEventsSinceVersion(Guid id, long version)
        {
            var res = new List <SourcedEvent>();

            _context.WithConnection(connection =>
            {
                using (var cmd = new SQLiteCommand(Query.SelectAllEventsQuery, connection))
                {
                    cmd.AddParam("EventSourceId", id).AddParam("EventSourceVersion", version);

                    using (var reader = cmd.ExecuteReader())
                    {
                        var formatter = new BinaryFormatter();
                        while (reader.Read())
                        {
                            var rawData = (Byte[])reader["Data"];

                            using (var dataStream = new MemoryStream(rawData))
                            {
                                var bag  = (PropertyBag)formatter.Deserialize(dataStream);
                                var evnt = (SourcedEvent)_converter.Convert(bag);
                                res.Add(evnt);
                            }
                        }
                    }
                }
            });

            return(res);
        }
예제 #2
0
        /// <summary>
        /// Get all events provided by an specified event source for a particular version, since an earlier version.
        /// </summary>
        /// <param name="eventSourceId">The id of the event source that owns the events.</param>
        /// <param name="fromVersion"></param>
        /// <param name="version"></param>
        /// <returns>All the events from the event source.</returns>
        public IEnumerable <IEvent> GetAllEventsForVersionSince(Guid eventSourceId, long fromVersion, long version)
        {
            using (var ctx = new EventStoreContext())
            {
                var q = from evt in ctx.Events
                        where (evt.AggregateId == eventSourceId) && (evt.Version > fromVersion) && (evt.Version <= version)
                        orderby evt.Version ascending
                        select evt.Data;

                return(q.ToList().Select(data => converter.Convert(FromBinary(data))).Cast <IEvent>().ToArray());
            }
        }
예제 #3
0
        private IEnumerable <CommittedEvent> ReadEvents(SQLiteCommand cmd, Guid id)
        {
            using (var reader = cmd.ExecuteReader())
            {
                var formatter = new BinaryFormatter();
                while (reader.Read())
                {
                    var rawData = (Byte[])reader["Data"];

                    using (var dataStream = new MemoryStream(rawData))
                    {
                        var bag           = (PropertyBag)formatter.Deserialize(dataStream);
                        var evnt          = _converter.Convert(bag);
                        var dummyCommitId = Guid.Empty;
                        var sequence      = (long)reader["Sequence"];
                        var timeStamp     = (long)reader["TimeStamp"];
                        var eventId       = (Guid)reader["EventId"];
                        yield return(new CommittedEvent(dummyCommitId, eventId, id, sequence, new DateTime(timeStamp), evnt, /*TODO*/ new Version(1, 0)));
                    }
                }
            }
        }