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); }
/// <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()); } }
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))); } } } }