public override void ModifyQueryDescription(QueryDescriptionBuilder queryDescription, Type resultType)
        {
            var relationTypeExpr = FirstParameter as ConstantExpression;
            var parentIdsExpr = ExcludeParentIds as ConstantExpression;

            if (relationTypeExpr == null || parentIdsExpr == null)
                return;

            var relationType = (relationTypeExpr.Value as RelationType) ?? FixedRelationTypes.DefaultRelationType;
            var parentIds = (parentIdsExpr.Value as IEnumerable<HiveId>) ?? Enumerable.Empty<HiveId>();

            if (parentIds.Any())
            {
                queryDescription.From.ExcludeParentIds = parentIds;
            }
        }
 public override void ModifyQueryDescription(QueryDescriptionBuilder queryDescription, Type resultType)
 {
     var constant = FirstParameter as ConstantExpression;
     queryDescription.From.RevisionStatusType = (RevisionStatusType)(constant.Value);
 }
        /// <summary>
        /// Visits the <paramref name="queryModel"/> and generates a <see cref="QueryDescription"/>.
        /// </summary>
        /// <param name="queryModel">The query model.</param>
        /// <returns></returns>
        /// <remarks></remarks>
        public QueryDescription VisitAndGenerateQueryDescription(Remotion.Linq.QueryModel queryModel)
        {
            // Reset description builder
            _queryDescription = new QueryDescriptionBuilder();

            VisitQueryModel(queryModel);

            // If we haven't found any result operators then add one just saying sequence
            if (!_queryDescription.ResultFilters.Any())
                _queryDescription.AddResultFilter(GetResultType(queryModel), ResultFilterType.Sequence, -1);

            return _queryDescription;
        }
 public override void ModifyQueryDescription(QueryDescriptionBuilder queryDescription, Type resultType)
 {
     var constant = FirstParameter as ConstantExpression;
     //queryDescription.From.RequiredEntityIds = (IEnumerable<HiveId>)(constant.Value);
 }
        /// <summary>
        /// Visits the <paramref name="queryModel"/> and generates a <see cref="QueryDescription"/>.
        /// </summary>
        /// <param name="queryModel">The query model.</param>
        /// <returns></returns>
        /// <remarks></remarks>
        public QueryDescription VisitAndGenerateQueryDescription(Remotion.Linq.QueryModel queryModel)
        {
            // Reset description builder
            _queryDescription = new QueryDescriptionBuilder();

            VisitQueryModel(queryModel);

            return _queryDescription;
        }
        public override void ModifyQueryDescription(QueryDescriptionBuilder queryDescription, Type resultType)
        {
            var pageNumberExpr = FirstParameter as ConstantExpression;
            var pageSizeExpr = PageSize as ConstantExpression;

            if (pageNumberExpr == null || pageSizeExpr == null)
                return;

            int? pageNumber = pageNumberExpr.Value as int?;
            int? pageSize = pageSizeExpr.Value as int?;

            if (pageNumber.HasValue && pageSize.HasValue)
            {
                queryDescription.AddSkipResultFilter(resultType, pageSize.Value * (pageNumber.Value - 1));
                queryDescription.AddTakeResultFilter(resultType, pageSize.Value);
            }
        }