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);
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;
}
}
}