Esempio n. 1
0
        public void WhereIn(string fieldName, IEnumerable <object> values)
        {
            AppendSpaceIfNeeded(queryText.Length > 0 && char.IsWhiteSpace(queryText[queryText.Length - 1]) == false);
            NegateIfNeeded();

            var whereParams = new WhereParams
            {
                FieldName = fieldName
            };

            fieldName = EnsureValidFieldName(whereParams);

            var list = UnpackEnumerable(values).ToList();

            if (list.Count == 0)
            {
                queryText.Append("@emptyIn<")
                .Append(RavenQuery.EscapeField(fieldName))
                .Append(">:(no-results)");
                return;
            }

            queryText.Append("@in<")
            .Append(RavenQuery.EscapeField(fieldName))
            .Append(">:(");

            var first = true;

            AddItemToInClause(whereParams, list, first);
            queryText.Append(") ");
        }
Esempio n. 2
0
        private void WhereEquals(WhereParams whereParams, bool isReversed)
        {
            var fieldName             = EnsureValidFieldName(whereParams, isReversed);
            var transformToEqualValue = TransformToEqualValue(whereParams, isReversed);

            lastEquality = new KeyValuePair <string, string>(fieldName, transformToEqualValue);

            AppendSpaceIfNeeded(queryText.Length > 0 && queryText[queryText.Length - 1] != '(');
            NegateIfNeeded();

            queryText.Append(RavenQuery.EscapeField(fieldName));
            queryText.Append(":");

            if (fieldName.EndsWith("_numeric"))
            {
                var transformToRangeValue = TransformToRangeValue(new WhereParams
                {
                    Value = whereParams.Value, FieldName = whereParams.FieldName
                });

                queryText.Append("[");
                queryText.Append(transformToRangeValue);
                queryText.Append(" TO ");
                queryText.Append(transformToRangeValue);
                queryText.Append("]");
            }
            else
            {
                queryText.Append(transformToEqualValue);
            }
        }
Esempio n. 3
0
        /// <summary>
        ///   Matches fields where the value is between the specified start and end, inclusive
        /// </summary>
        /// <param name = "fieldName">Name of the field.</param>
        /// <param name = "start">The start.</param>
        /// <param name = "end">The end.</param>
        /// <returns></returns>
        public void WhereBetweenOrEqual(string fieldName, object start, object end)
        {
            AppendSpaceIfNeeded(queryText.Length > 0);

            NegateIfNeeded();

            fieldName = GetFieldNameForRangeQueries(fieldName, start, end);

            queryText.Append(RavenQuery.EscapeField(fieldName)).Append(":[");
            queryText.Append(start == null ? "*" : TransformToRangeValue(new WhereParams {
                Value = start, FieldName = fieldName
            }));
            queryText.Append(" TO ");
            queryText.Append(end == null ? "NULL" : TransformToRangeValue(new WhereParams {
                Value = end, FieldName = fieldName
            }));
            queryText.Append("]");
        }