Filter for use with scan and query operations
Exemple #1
0
        private static void SplitQueryFilter(Filter filter, Table targetTable, string indexName, out Dictionary<string, Condition> keyConditions, out Dictionary<string, Condition> filterConditions)
        {
            QueryFilter queryFilter = filter as QueryFilter;
            if (queryFilter == null) throw new InvalidOperationException("Filter is not of type QueryFilter");

            keyConditions = new Dictionary<string, Condition>();
            filterConditions = new Dictionary<string, Condition>();

            var conditions = filter.ToConditions(targetTable.Conversion);
            foreach (var kvp in conditions)
            {
                string attributeName = kvp.Key;
                Condition condition = kvp.Value;

                // depending on whether the attribute is key, place either in keyConditions or filterConditions
                if (IsKeyAttribute(targetTable, indexName, attributeName))
                    keyConditions[attributeName] = condition;
                else
                    filterConditions[attributeName] = condition;
            }
        }
Exemple #2
0
 /// <summary>
 /// Creates a Filter from a conditions map
 /// </summary>
 /// <param name="conditions">Map from attribute name to condition</param>
 /// <returns>Equivalent Filter</returns>
 public static Filter FromConditions(Dictionary<string, Condition> conditions)
 {
     Filter ret = new Filter();
     ret.Conditions = conditions;
     return ret;
 }
Exemple #3
0
 /// <summary>
 /// Creates a Filter from a conditions map
 /// </summary>
 /// <param name="conditions">Map from attribute name to condition</param>
 /// <returns>Equivalent Filter</returns>
 public static Filter FromConditions(Dictionary<string, Condition> conditions)
 {
     Filter ret = new Filter();
     foreach(var kvp in conditions)
     {
         string name = kvp.Key;
         Condition condition = kvp.Value;
         ret.Conditions.Add(name, new FilterCondition(condition));
     }
     return ret;
 }