public override IEnumerable <T> DoQuery(NoSqlQuery <T> queryFilters)
        {
            CheckOpenedConnection();

            IExpression whereExpression = Expression.Property("collection").EqualTo(Expression.String(CollectionName));

            // Interpret Linq query to expression
            if (queryFilters.Filter != null)
            {
                var wherePreFilterExpression = Linq2CouchbaseLiteExpression.GenerateFromExpression(queryFilters.Filter);
                if (wherePreFilterExpression != null)
                {
                    whereExpression = whereExpression.And(wherePreFilterExpression);
                }
            }

            var queryBuilder = QueryBuilder.Select(SelectResult.Expression(Meta.ID))
                               .From(DataSource.Database(database))
                               .Where(whereExpression)
                               .Limit(queryFilters.Limit > 0 ? Expression.Int(queryFilters.Limit) : Expression.Int(int.MaxValue));

            IList <string> ids = null;

            using (var query = queryBuilder)
            {
                ids = query.Execute().Select(row => row.GetString("id")).ToList();
            }

            var resultSet = ids.Select(e => GetById(e));

            return(resultSet);
        }
        public override IEnumerable <T> DoQuery(NoSqlQuery <T> queryFilters)
        {
            var query = localDb.Values.Select(e => e);

            // Filters :
            if (queryFilters.Filter != null)
            {
                var filterFunction = queryFilters.Filter.Compile();
                query = query.Where(e => filterFunction.Invoke(e));
            }
            if (queryFilters.Skip > 0)
            {
                query = query.Skip(queryFilters.Skip);
            }
            if (queryFilters.Limit > 0)
            {
                query = query.Take(queryFilters.Limit);
            }

            return(query);
        }
Ejemplo n.º 3
0
 public override IEnumerable <T> DoQuery(NoSqlQuery <T> queryFilters)
 {
     throw new NotImplementedException();
 }
 public abstract IEnumerable <T> DoQuery(NoSqlQuery <T> queryFilters);