Exemplo n.º 1
0
        T IQueryExecutor.ExecuteScalar <T>(QueryModel queryModel)
        {
            var mapping       = _schema.MappingFor(queryModel.SelectClause.Selector.Type);
            var documentQuery = new DocumentQuery(mapping, queryModel, _serializer);

            _schema.EnsureStorageExists(mapping.DocumentType);

            if (queryModel.ResultOperators.OfType <AnyResultOperator>().Any())
            {
                var anyCommand = new NpgsqlCommand();
                documentQuery.ConfigureForAny(anyCommand);

                return(_runner.Execute(anyCommand, c => (T)c.ExecuteScalar()));
            }

            if (queryModel.ResultOperators.OfType <CountResultOperator>().Any())
            {
                var countCommand = new NpgsqlCommand();
                documentQuery.ConfigureForCount(countCommand);

                return(_runner.Execute(countCommand, c =>
                {
                    var returnValue = c.ExecuteScalar();
                    return Convert.ToInt32(returnValue).As <T>();
                }));
            }

            throw new NotSupportedException();
        }
Exemplo n.º 2
0
        public IQueryHandler <T> HandlerForScalarQuery <T>(QueryModel model, IIncludeJoin[] joins,
                                                           QueryStatistics statistics)
        {
            _schema.EnsureStorageExists(model.SourceType());

            return(tryFindScalarQuery <T>(model, joins, statistics));
        }
Exemplo n.º 3
0
        public void Append(Guid stream, params object[] events)
        {
            _schema.EnsureStorageExists(typeof(EventStream));

            if (_unitOfWork.HasStream(stream))
            {
                _unitOfWork.StreamFor(stream).AddEvents(events.Select(EventStream.ToEvent));
            }
            else
            {
                var eventStream = new EventStream(stream, events.Select(EventStream.ToEvent).ToArray(), false);

                _unitOfWork.StoreStream(eventStream);
            }
        }
Exemplo n.º 4
0
        T IQueryExecutor.ExecuteScalar <T>(QueryModel queryModel)
        {
            var mapping       = _schema.MappingFor(queryModel.SelectClause.Selector.Type);
            var documentQuery = new DocumentQuery(mapping, queryModel);

            _schema.EnsureStorageExists(mapping.DocumentType);

            if (queryModel.ResultOperators.OfType <AnyResultOperator>().Any())
            {
                var anyCommand = documentQuery.ToAnyCommand();

                return(_runner.Execute(conn =>
                {
                    anyCommand.Connection = conn;
                    return (T)anyCommand.ExecuteScalar();
                }));
            }

            if (queryModel.ResultOperators.OfType <CountResultOperator>().Any())
            {
                var countCommand = documentQuery.ToCountCommand();

                return(_runner.Execute(conn =>
                {
                    countCommand.Connection = conn;
                    var returnValue = countCommand.ExecuteScalar();
                    return Convert.ToInt32(returnValue).As <T>();
                }));
            }

            throw new NotSupportedException();
        }
Exemplo n.º 5
0
        private DocumentQuery toDocumentQuery <TDoc>(Func <IQueryable <TDoc>, IQueryable <TDoc> > query)
        {
            var queryable  = _parent.Query <TDoc>();
            var expression = query(queryable).Expression;

            var model = _parser.GetParsedQuery(expression);

            _schema.EnsureStorageExists(typeof(TDoc));

            return(new DocumentQuery(_schema.MappingFor(typeof(TDoc)), model, _serializer));
        }
Exemplo n.º 6
0
        public Task <T> AddItem <T>(IQueryHandler <T> handler)
        {
            _schema.EnsureStorageExists(handler.SourceType);

            var item = new BatchQueryItem <T>(handler);

            _items.Add(item);

            item.Configure(_schema, _command);

            return(item.Result);
        }
Exemplo n.º 7
0
        public void LoadProjections(string directory)
        {
            _schema.EnsureStorageExists(typeof(EventStream));

            var files = new FileSystem();

            using (var connection = new ManagedConnection(_connectionFactory))
            {
                files.FindFiles(directory, FileSet.Deep("*.js")).Each(file =>
                {
                    var body = files.ReadStringFromFile(file);
                    var name = Path.GetFileNameWithoutExtension(file);

                    connection.Execute(cmd =>
                    {
                        cmd.CallsSproc(LoadProjectionBodyFunction)
                        .With("proj_name", name)
                        .With("body", body)
                        .ExecuteNonQuery();
                    });
                });
            }
        }
Exemplo n.º 8
0
        public IQueryHandler <T> HandlerForScalarQuery <T>(QueryModel model)
        {
            _schema.EnsureStorageExists(model.SourceType());

            return(tryFindScalarQuery <T>(model));
        }