/// <summary>
        /// Matches repositories with regards to the <param name="dateTime"/>.
        /// We will use the <param name="op"/> to see what operator will be applied to the date qualifier
        /// </summary>
        public DateRange(DateTimeOffset dateTime, SearchQualifierOperator op)
        {
            switch (op)
            {
            case SearchQualifierOperator.GreaterThan:
                query = dateTime.ToString($">{DateTimePattern}", CultureInfo.InvariantCulture);
                break;

            case SearchQualifierOperator.LessThan:
                query = dateTime.ToString($"<{DateTimePattern}", CultureInfo.InvariantCulture);
                break;

            case SearchQualifierOperator.LessThanOrEqualTo:
                query = dateTime.ToString($"<={DateTimePattern}", CultureInfo.InvariantCulture);
                break;

            case SearchQualifierOperator.GreaterThanOrEqualTo:
                query = dateTime.ToString($">={DateTimePattern}", CultureInfo.InvariantCulture);
                break;
            }
        }
        /// <summary>
        /// Matches repositories with regards to the <param name="date"/>.
        /// We will use the <param name="op"/> to see what operator will be applied to the date qualifier
        /// </summary>
        public DateRange(DateTime date, SearchQualifierOperator op)
        {
            switch (op)
            {
            case SearchQualifierOperator.GreaterThan:
                query = string.Format(CultureInfo.InvariantCulture, ">{0:yyyy-MM-dd}", date);
                break;

            case SearchQualifierOperator.LessThan:
                query = string.Format(CultureInfo.InvariantCulture, "<{0:yyyy-MM-dd}", date);
                break;

            case SearchQualifierOperator.LessThanOrEqualTo:
                query = string.Format(CultureInfo.InvariantCulture, "<={0:yyyy-MM-dd}", date);
                break;

            case SearchQualifierOperator.GreaterThanOrEqualTo:
                query = string.Format(CultureInfo.InvariantCulture, ">={0:yyyy-MM-dd}", date);
                break;
            }
        }
        /// <summary>
        /// Matches repositories with regards to the size <param name="size"/>
        /// We will use the <param name="op"/> to see what operator will be applied to the size qualifier
        /// </summary>
        public Range(int size, SearchQualifierOperator op)
        {
            switch (op)
            {
            case SearchQualifierOperator.GreaterThan:
                query = string.Format(CultureInfo.InvariantCulture, ">{0}", size);
                break;

            case SearchQualifierOperator.LessThan:
                query = string.Format(CultureInfo.InvariantCulture, "<{0}", size);
                break;

            case SearchQualifierOperator.LessThanOrEqualTo:
                query = string.Format(CultureInfo.InvariantCulture, "<={0}", size);
                break;

            case SearchQualifierOperator.GreaterThanOrEqualTo:
                query = string.Format(CultureInfo.InvariantCulture, ">={0}", size);
                break;
            }
        }
        public DateRange(DateTime date, SearchQualifierOperator op)
        {
            switch (op)
            {
            case SearchQualifierOperator.GreaterThan:
                query = string.Format(">{0}", date.ToString("yyyy-MM-dd"));
                break;

            case SearchQualifierOperator.LessThan:
                query = string.Format("<{0}", date.ToString("yyyy-MM-dd"));
                break;

            case SearchQualifierOperator.LessThanOrEqualTo:
                query = string.Format("<={0}", date.ToString("yyyy-MM-dd"));
                break;

            case SearchQualifierOperator.GreaterThanOrEqualTo:
                query = string.Format(">={0}", date.ToString("yyyy-MM-dd"));
                break;

            default:
                break;
            }
        }
        public Range(int size, SearchQualifierOperator op)
        {
            switch (op)
            {
            case SearchQualifierOperator.GreaterThan:
                query = string.Format(">{0}", size.ToString());
                break;

            case SearchQualifierOperator.LessThan:
                query = string.Format("<{0}", size.ToString());
                break;

            case SearchQualifierOperator.LessThanOrEqualTo:
                query = string.Format("<={0}", size.ToString());
                break;

            case SearchQualifierOperator.GreaterThanOrEqualTo:
                query = string.Format(">={0}", size.ToString());
                break;

            default:
                break;
            }
        }
 /// <summary>
 /// Matches repositories with regards to the <param name="date"/>.
 /// We will use the <param name="op"/> to see what operator will be applied to the date qualifier
 /// </summary>
 public DateRange(DateTime date, SearchQualifierOperator op)
 {
     switch (op)
     {
         case SearchQualifierOperator.GreaterThan:
             query = string.Format(CultureInfo.InvariantCulture, ">{0:yyyy-MM-dd}", date);
             break;
         case SearchQualifierOperator.LessThan:
             query = string.Format(CultureInfo.InvariantCulture, "<{0:yyyy-MM-dd}", date);
             break;
         case SearchQualifierOperator.LessThanOrEqualTo:
             query = string.Format(CultureInfo.InvariantCulture, "<={0:yyyy-MM-dd}", date);
             break;
         case SearchQualifierOperator.GreaterThanOrEqualTo:
             query = string.Format(CultureInfo.InvariantCulture, ">={0:yyyy-MM-dd}", date);
             break;
     }
 }
 /// <summary>
 /// Matches repositories with regards to the size <param name="size"/> 
 /// We will use the <param name="op"/> to see what operator will be applied to the size qualifier
 /// </summary>
 public Range(int size, SearchQualifierOperator op)
 {
     switch (op)
     {
         case SearchQualifierOperator.GreaterThan:
             query = string.Format(CultureInfo.InvariantCulture, ">{0}", size);
             break;
         case SearchQualifierOperator.LessThan:
             query = string.Format(CultureInfo.InvariantCulture, "<{0}", size);
             break;
         case SearchQualifierOperator.LessThanOrEqualTo:
             query = string.Format(CultureInfo.InvariantCulture, "<={0}", size);
             break;
         case SearchQualifierOperator.GreaterThanOrEqualTo:
             query = string.Format(CultureInfo.InvariantCulture, ">={0}", size);
             break;
     }
 }
 public DateRange(DateTime date, SearchQualifierOperator op)
 {
     switch (op)
     {
         case SearchQualifierOperator.GreaterThan:
             query = string.Format(">{0}", date.ToString("yyyy-MM-dd"));
             break;
         case SearchQualifierOperator.LessThan:
             query = string.Format("<{0}", date.ToString("yyyy-MM-dd"));
             break;
         case SearchQualifierOperator.LessThanOrEqualTo:
             query = string.Format("<={0}", date.ToString("yyyy-MM-dd"));
             break;
         case SearchQualifierOperator.GreaterThanOrEqualTo:
             query = string.Format(">={0}", date.ToString("yyyy-MM-dd"));
             break;
         default:
             break;
     }
 }
 public Range(int size, SearchQualifierOperator op)
 {
     switch (op)
     {
         case SearchQualifierOperator.GreaterThan:
             query = string.Format(">{0}", size.ToString());
             break;
         case SearchQualifierOperator.LessThan:
             query = string.Format("<{0}", size.ToString());
             break;
         case SearchQualifierOperator.LessThanOrEqualTo:
             query = string.Format("<={0}", size.ToString());
             break;
         case SearchQualifierOperator.GreaterThanOrEqualTo:
             query = string.Format(">={0}", size.ToString());
             break;
         default:
             break;
     }
 }
 /// <summary>
 /// Create a range that compares the specified value using the specified operator.
 /// </summary>
 /// <param name="value">The value to compare.</param>
 /// <param name="op">The operator used to compare the value.</param>
 /// <returns>A range that compares the specified value using the specified operator.</returns>
 protected override Range CreateRange(int value, SearchQualifierOperator op) =>
 new Range(value, op);