コード例 #1
0
ファイル: EventStore.cs プロジェクト: seanswalling/marten
        public async Task <T> AggregateStreamAsync <T>(Guid streamId, int version = 0, DateTime?timestamp = null,
                                                       T state = null, CancellationToken token            = new CancellationToken()) where T : class
        {
            var selector = _store.Events.EnsureAsGuidStorage(_session);

            var inner = new EventQueryHandler <Guid>(selector, streamId, version, timestamp, _store.Events.TenancyStyle, _tenant.TenantId);

            var events = await _session.ExecuteHandlerAsync(inner, token);

            if (!events.Any())
            {
                return(null);
            }

            var aggregator = _store.Events.Projections.AggregatorFor <T>();
            var aggregate  = await aggregator.BuildAsync(events, _session, state, token);

            if (aggregate == null)
            {
                return(null);
            }

            var assignment = _tenant.IdAssignmentFor <T>();

            assignment.Assign(_tenant, aggregate, streamId);

            return(aggregate);
        }
コード例 #2
0
ファイル: EventStore.cs プロジェクト: mthird/marten
        public Task <IList <IEvent> > FetchStreamAsync(Guid streamId, int version = 0, DateTime?timestamp = null,
                                                       CancellationToken token    = new CancellationToken())
        {
            var handler = new EventQueryHandler(_selector, streamId, version, timestamp);

            return(_connection.FetchAsync(handler, null, token));
        }
コード例 #3
0
ファイル: EventStore.cs プロジェクト: mthird/marten
        public T AggregateStream <T>(Guid streamId, int version = 0, DateTime?timestamp = null) where T : class, new()
        {
            var inner      = new EventQueryHandler(_selector, streamId, version, timestamp);
            var aggregator = _schema.Events.AggregateFor <T>();
            var handler    = new AggregationQueryHandler <T>(aggregator, inner);

            return(_connection.Fetch(handler, null));
        }
コード例 #4
0
ファイル: EventStore.cs プロジェクト: jmbledsoe/marten
        public IList <IEvent> FetchStream(Guid streamId, int version = 0, DateTime?timestamp = null)
        {
            _tenant.EnsureStorageExists(typeof(EventStream));

            var handler = new EventQueryHandler(_selector, streamId, version, timestamp);

            return(_connection.Fetch(handler, null, null, _tenant));
        }
コード例 #5
0
ファイル: EventStore.cs プロジェクト: mdissel/marten
        public IReadOnlyList <IEvent> FetchStream(string streamKey, int version = 0, DateTime?timestamp = null)
        {
            var selector = _store.Events.EnsureAsStringStorage(_session);

            var handler = new EventQueryHandler <string>(selector, streamKey, version, timestamp, _store.Events.TenancyStyle, _tenant.TenantId);

            return(_session.ExecuteHandler(handler));
        }
コード例 #6
0
ファイル: EventStore.cs プロジェクト: mdissel/marten
        public Task <IReadOnlyList <IEvent> > FetchStreamAsync(Guid streamId, int version = 0, DateTime?timestamp = null, CancellationToken token = default(CancellationToken))
        {
            var selector = _store.Events.EnsureAsGuidStorage(_session);

            var handler = new EventQueryHandler <Guid>(selector, streamId, version, timestamp, _store.Events.TenancyStyle, _tenant.TenantId);

            return(_session.ExecuteHandlerAsync(handler, token));
        }
コード例 #7
0
        public Task <IReadOnlyList <IEvent> > FetchStreamAsync(Guid streamId, int version = 0, DateTime?timestamp = null, CancellationToken token = default(CancellationToken))
        {
            ensureAsGuidStorage();

            var handler = new EventQueryHandler <Guid>(_selector, streamId, version, timestamp);

            return(_connection.FetchAsync(handler, null, null, _tenant, token));
        }
コード例 #8
0
        public IReadOnlyList <IEvent> FetchStream(Guid streamId, int version = 0, DateTime?timestamp = null)
        {
            ensureAsGuidStorage();

            var handler = new EventQueryHandler <Guid>(_selector, streamId, version, timestamp);

            return(_connection.Fetch(handler, null, null, _tenant));
        }
コード例 #9
0
        public IReadOnlyList <IEvent> FetchStream(string streamKey, int version = 0, DateTime?timestamp = null)
        {
            ensureAsStringStorage();

            var handler = new EventQueryHandler <string>(_selector, streamKey, version, timestamp, _store.Events.TenancyStyle, _tenant.TenantId);

            return(_connection.Fetch(handler, null, null, _tenant));
        }
コード例 #10
0
        public Task <IReadOnlyList <IEvent> > FetchStreamAsync(string streamKey, int version = 0, DateTime?timestamp = null, CancellationToken token = default(CancellationToken))
        {
            ensureAsStringStorage();

            var handler = new EventQueryHandler <string>(_selector, streamKey, version, timestamp, _store.Events.TenancyStyle, _tenant.TenantId);

            return(_connection.FetchAsync(handler, null, null, _tenant, token));
        }
コード例 #11
0
ファイル: EventStore.cs プロジェクト: srasch/marten
        public IReadOnlyList <IEvent> FetchStream(Guid streamId, int version = 0, DateTime?timestamp = null)
        {
            ensureAsGuidStorage();

            var handler = new EventQueryHandler <Guid>(_selector, streamId, version, timestamp, _store.Events.TenancyStyle, _tenant.TenantId);

            return(_session.ExecuteHandler(handler));
        }
コード例 #12
0
ファイル: EventStore.cs プロジェクト: mdissel/marten
        public IReadOnlyList <IEvent> FetchStream(Guid streamId, int version = 0, DateTime?timestamp = null)
        {
            // TODO -- do this later by just delegating to Load<StreamState>(streamId)
            var selector = _store.Events.EnsureAsGuidStorage(_session);

            var handler = new EventQueryHandler <Guid>(selector, streamId, version, timestamp, _store.Events.TenancyStyle, _tenant.TenantId);

            return(_session.ExecuteHandler(handler));
        }
コード例 #13
0
ファイル: EventStore.cs プロジェクト: mthird/marten
        public Task <T> AggregateStreamAsync <T>(Guid streamId, int version = 0, DateTime?timestamp = null,
                                                 CancellationToken token    = new CancellationToken()) where T : class, new()
        {
            var inner      = new EventQueryHandler(_selector, streamId, version, timestamp);
            var aggregator = _schema.Events.AggregateFor <T>();
            var handler    = new AggregationQueryHandler <T>(aggregator, inner);

            return(_connection.FetchAsync(handler, null, token));
        }
コード例 #14
0
ファイル: EventStore.cs プロジェクト: jmbledsoe/marten
        public Task <IList <IEvent> > FetchStreamAsync(Guid streamId, int version = 0, DateTime?timestamp = null,
                                                       CancellationToken token    = new CancellationToken())
        {
            _tenant.EnsureStorageExists(typeof(EventStream));

            var handler = new EventQueryHandler(_selector, streamId, version, timestamp);

            return(_connection.FetchAsync(handler, null, null, _tenant, token));
        }
コード例 #15
0
        public T AggregateStream <T>(string streamKey, int version = 0, DateTime?timestamp = null, T state = null) where T : class
        {
            ensureAsStringStorage();

            var inner      = new EventQueryHandler <string>(_selector, streamKey, version, timestamp, _store.Events.TenancyStyle, _tenant.TenantId);
            var aggregator = _store.Events.AggregateFor <T>();
            var handler    = new AggregationQueryHandler <T>(aggregator, inner, _session, state);

            var aggregate = _connection.Fetch(handler, null, null, _tenant);

            var assignment = _tenant.IdAssignmentFor <T>();

            assignment.Assign(_tenant, aggregate, streamKey);

            return(aggregate);
        }
コード例 #16
0
        public async Task <T> AggregateStreamAsync <T>(Guid streamId, int version = 0, DateTime?timestamp = null,
                                                       CancellationToken token    = new CancellationToken()) where T : class, new()
        {
            var inner      = new EventQueryHandler(_selector, streamId, version, timestamp);
            var aggregator = _schema.Events.AggregateFor <T>();
            var handler    = new AggregationQueryHandler <T>(aggregator, inner, _session);

            var aggregate = await _connection.FetchAsync(handler, null, token).ConfigureAwait(false);

            var assignment = _schema.IdAssignmentFor <T>();

            assignment.Assign(aggregate, streamId);


            return(aggregate);
        }
コード例 #17
0
ファイル: EventStore.cs プロジェクト: mdissel/marten
        public T AggregateStream <T>(Guid streamId, int version = 0, DateTime?timestamp = null, T state = null) where T : class
        {
            var selector = _store.Events.EnsureAsGuidStorage(_session);

            var inner      = new EventQueryHandler <Guid>(selector, streamId, version, timestamp, _store.Events.TenancyStyle, _tenant.TenantId);
            var aggregator = _store.Events.AggregateFor <T>();
            var handler    = new AggregationQueryHandler <T>(aggregator, inner, _session, state);

            var aggregate = _session.ExecuteHandler(handler);

            var assignment = _tenant.IdAssignmentFor <T>();

            assignment.Assign(_tenant, aggregate, streamId);

            return(aggregate);
        }
コード例 #18
0
ファイル: EventStore.cs プロジェクト: mdissel/marten
        public async Task <T> AggregateStreamAsync <T>(Guid streamId, int version = 0, DateTime?timestamp = null,
                                                       T state = null, CancellationToken token            = new CancellationToken()) where T : class
        {
            var selector = _store.Events.EnsureAsGuidStorage(_session);

            var inner      = new EventQueryHandler <Guid>(selector, streamId, version, timestamp, _store.Events.TenancyStyle, _tenant.TenantId);
            var aggregator = _store.Events.AggregateFor <T>();
            var handler    = new AggregationQueryHandler <T>(aggregator, inner, _session, state);

            var aggregate = await _session.ExecuteHandlerAsync(handler, token).ConfigureAwait(false);

            var assignment = _tenant.IdAssignmentFor <T>();

            assignment.Assign(_tenant, aggregate, streamId);

            return(aggregate);
        }
コード例 #19
0
        public async Task <T> AggregateStreamAsync <T>(string streamKey, int version = 0, DateTime?timestamp = null,
                                                       T state = null, CancellationToken token = new CancellationToken()) where T : class
        {
            ensureAsStringStorage();

            var inner      = new EventQueryHandler <string>(_selector, streamKey, version, timestamp, _store.Events.TenancyStyle, _tenant.TenantId);
            var aggregator = _store.Events.AggregateFor <T>();
            var handler    = new AggregationQueryHandler <T>(aggregator, inner, _session, state);

            var aggregate = await _connection.FetchAsync(handler, null, null, _tenant, token).ConfigureAwait(false);

            var assignment = _tenant.IdAssignmentFor <T>();

            assignment.Assign(_tenant, aggregate, streamKey);

            return(aggregate);
        }
コード例 #20
0
ファイル: EventStore.cs プロジェクト: jmbledsoe/marten
        public T AggregateStream <T>(Guid streamId, int version = 0, DateTime?timestamp = null) where T : class, new()
        {
            _tenant.EnsureStorageExists(typeof(EventStream));

            var inner      = new EventQueryHandler(_selector, streamId, version, timestamp);
            var aggregator = _store.Events.AggregateFor <T>();
            var handler    = new AggregationQueryHandler <T>(aggregator, inner, _session);

            var aggregate = _connection.Fetch(handler, null, null, _tenant);

            var assignment = _tenant.IdAssignmentFor <T>();

            assignment.Assign(_tenant, aggregate, streamId);


            return(aggregate);
        }
コード例 #21
0
ファイル: EventStore.cs プロジェクト: seanswalling/marten
        public T AggregateStream <T>(string streamKey, int version = 0, DateTime?timestamp = null, T state = null) where T : class
        {
            var selector = _store.Events.EnsureAsStringStorage(_session);

            var inner = new EventQueryHandler <string>(selector, streamKey, version, timestamp, _store.Events.TenancyStyle, _tenant.TenantId);

            var events = _session.ExecuteHandler(inner);

            if (!events.Any())
            {
                return(null);
            }

            var aggregator = _store.Events.Projections.AggregatorFor <T>();
            var aggregate  = aggregator.Build(events, _session, state);

            var assignment = _tenant.IdAssignmentFor <T>();

            assignment.Assign(_tenant, aggregate, streamKey);

            return(aggregate);
        }
コード例 #22
0
ファイル: EventStore.cs プロジェクト: mthird/marten
        public IList <IEvent> FetchStream(Guid streamId, int version = 0, DateTime?timestamp = null)
        {
            var handler = new EventQueryHandler(_selector, streamId, version, timestamp);

            return(_connection.Fetch(handler, null));
        }
コード例 #23
0
 public AggregationQueryHandler(IAggregator <T> aggregator, EventQueryHandler inner, IDocumentSession session = null)
 {
     _aggregator = aggregator;
     _inner      = inner;
     _session    = session;
 }
コード例 #24
0
 public AggregationQueryHandler(Aggregator <T> aggregator, EventQueryHandler inner)
 {
     _aggregator = aggregator;
     _inner      = inner;
 }