private void apply() { var transform = _session.Tenant.TransformFor(StoreOptions.PatchDoc); var storage = _session.StorageFor(typeof(T)); ISqlFragment where; if (_filter == null) { var statement = new StatementOperation(storage, null); statement.ApplyFiltering(_session, _filterExpression); where = statement.Where; } else { where = storage.FilterDocuments(null, _filter); } var operation = new PatchOperation(transform, storage, where, Patch, _session.Serializer) { PossiblyPolymorhpic = PossiblyPolymorphic }; _session.QueueOperation(operation); }
private void apply() { var transform = _session.Tenant.TransformFor(StoreOptions.PatchDoc); var storage = _session.StorageFor(typeof(T)); var where = storage.FilterDocuments(null, _fragment); var operation = new PatchOperation(transform, storage.QueryableDocument, where, Patch, _session.Serializer); _session.QueueOperation(operation); }
public T AggregateStream <T>(Guid streamId, long version = 0, DateTime?timestamp = null, T state = null) where T : class { var events = FetchStream(streamId, version, timestamp); var aggregator = _store.Events.Projections.AggregatorFor <T>(); if (!events.Any()) { return(null); } var aggregate = aggregator.Build(events, _session, state); var storage = _session.StorageFor <T>(); if (storage is IDocumentStorage <T, Guid> s) { s.SetIdentity(aggregate, streamId); } return(aggregate); }