Inheritance: TimeSpanQueryValue
 public static RelativeTimeSpanQueryValue RelativeToNow (DateTime since)
 {
     RelativeTimeSpanQueryValue qv = new RelativeTimeSpanQueryValue ();
     qv.SetRelativeValue ((since - DateTime.Now).TotalSeconds, TimeFactor.Second);
     qv.DetermineFactor ();
     return qv;
 }
        public static RelativeTimeSpanQueryValue RelativeToNow(DateTime since)
        {
            var qv = new RelativeTimeSpanQueryValue();

            qv.SetRelativeValue((since - DateTime.Now).TotalSeconds, TimeFactor.Second);
            qv.DetermineFactor();
            return(qv);
        }
Beispiel #3
0
        public void QueryValueSql ()
        {
            QueryValue qv;

            qv = new DateQueryValue (); qv.ParseUserQuery ("2007-03-9");
            Assert.AreEqual (new DateTime (2007, 3, 9), qv.Value);
            Assert.AreEqual ("2007-03-09", qv.ToUserQuery ());
            Assert.AreEqual ("1173420000", qv.ToSql ());

            qv = new StringQueryValue (); qv.ParseUserQuery ("foo 'bar'");
            Assert.AreEqual ("foo 'bar'", qv.Value);
            Assert.AreEqual ("foo 'bar'", qv.ToUserQuery ());
            Assert.AreEqual ("foo bar", qv.ToSql ());

            qv = new StringQueryValue (); qv.ParseUserQuery ("Foo Baño");
            Assert.AreEqual ("Foo Baño", qv.Value);
            Assert.AreEqual ("Foo Baño", qv.ToUserQuery ());
            Assert.AreEqual ("foo bano", qv.ToSql ());

            qv = new ExactStringQueryValue (); qv.ParseUserQuery ("foo 'bar'");
            Assert.AreEqual ("foo 'bar'", qv.Value);
            Assert.AreEqual ("foo 'bar'", qv.ToUserQuery ());
            Assert.AreEqual ("foo ''bar''", qv.ToSql ());

            qv = new IntegerQueryValue (); qv.ParseUserQuery ("22");
            Assert.AreEqual (22, qv.Value);
            Assert.AreEqual ("22", qv.ToUserQuery ());
            Assert.AreEqual ("22", qv.ToSql ());

            qv = new FileSizeQueryValue (); qv.ParseUserQuery ("2048 KB");
            Assert.AreEqual (2097152, qv.Value);
            Assert.AreEqual ("2.048 KB", qv.ToUserQuery ());
            Assert.AreEqual ("2097152", qv.ToSql ());

            // TODO this will break once an it_IT translation for "days ago" etc is committed
            qv = new RelativeTimeSpanQueryValue (); qv.ParseUserQuery ("2 days ago");
            Assert.AreEqual (-172800, qv.Value);
            Assert.AreEqual ("2 days ago", qv.ToUserQuery ());

            // TODO this will break once an it_IT translation for "minutes" etc is committed
            qv = new TimeSpanQueryValue (); qv.ParseUserQuery ("4 minutes");
            Assert.AreEqual (240, qv.Value);
            Assert.AreEqual ("4 minutes", qv.ToUserQuery ());
            Assert.AreEqual ("240000", qv.ToSql ());
        }
        private void ParseRelativeDateCondition (QueryTermNode term, string val, QueryField field, string op)
        {
            string new_op = op.Replace ('>', '^');
            new_op = new_op.Replace ('<', '>');
            new_op = new_op.Replace ('^', '<');

            RelativeTimeSpanQueryValue date_value = new RelativeTimeSpanQueryValue ();

            // Have to flip the operator b/c of how we used to construct the SQL query
            term.Operator = date_value.OperatorSet [new_op];

            // Have to negate the value b/c of how we used to constuct the SQL query
            date_value.SetRelativeValue (Convert.ToInt64 (val), TimeFactor.Second);
            term.Value = date_value;
        }