Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }