Esempio n. 1
0
        /// <summary>
        ///     Crate o query of the type "where IndexKey oper value"
        /// </summary>
        /// <param name="keyName"></param>
        /// <param name="value"></param>
        /// <param name="oper"></param>
        /// <returns></returns>
        public OrQuery GetMany(string keyName, object value, QueryOperator oper = QueryOperator.Eq)
        {
            var keyValue = _typeDescription.MakeIndexKeyValue(keyName, value);

            var query    = new OrQuery(_typeDescription.FullTypeName);
            var andQuery = new AndQuery();

            query.Elements.Add(andQuery);
            andQuery.Elements.Add(new AtomicQuery(keyValue, oper));

            return(query);
        }
        public void GetManyOnOrderedIndexes()
        {
            var item = new CacheableTypeOk(1, 1001, "AHA", new DateTime(2010, 10, 01), 9);

            _dataStore.InternalAddNew(CachedObject.Pack(item), false);

            item = new CacheableTypeOk(2, 1002, "AHA", new DateTime(2010, 10, 01), 8);
            _dataStore.InternalAddNew(CachedObject.Pack(item), false);

            item = new CacheableTypeOk(3, 1003, "AHA", new DateTime(2010, 10, 02), 8);
            _dataStore.InternalAddNew(CachedObject.Pack(item), false);

            item = new CacheableTypeOk(4, 1004, "BBB", new DateTime(2010, 9, 01), 5);
            _dataStore.InternalAddNew(CachedObject.Pack(item), false);

            item = new CacheableTypeOk(5, 1005, "BBB", new DateTime(2010, 10, 01), 4);
            _dataStore.InternalAddNew(CachedObject.Pack(item), false);

            item = new CacheableTypeOk(6, 1006, "BBA", new DateTime(2010, 10, 01), 1);
            _dataStore.InternalAddNew(CachedObject.Pack(item), false);

            var result =
                _dataStore.InternalGetMany(
                    _typeDescription.MakeIndexKeyValue("IndexKeyDate", new DateTime(2010, 10, 01)),
                    QueryOperator.Le);

            Assert.AreEqual(result.Count, 5);

            result = _dataStore.InternalGetMany(_typeDescription.MakeIndexKeyValue("IndexKeyValue", 8),
                                                QueryOperator.Ge);
            Assert.AreEqual(result.Count, 3);

            _dataStore.RemoveByPrimaryKey(_typeDescription.MakePrimaryKeyValue(2));

            result = _dataStore.InternalGetMany(
                _typeDescription.MakeIndexKeyValue("IndexKeyDate", new DateTime(2010, 10, 01)),
                QueryOperator.Le);
            Assert.AreEqual(result.Count, 4);

            result = _dataStore.InternalGetMany(_typeDescription.MakeIndexKeyValue("IndexKeyValue", 8),
                                                QueryOperator.Ge);
            Assert.AreEqual(result.Count, 2);
        }