public static string KeyToWhere(IDataStoreKey key, MySqlParameterCollection parameters)
{
string where = null;
if (key is CounterDataStoreKey)
{
where = "T1.COUNTER = ?CTR";
var par = new MySqlParameter();
par.ParameterName = "?CTR";
par.Value = ((CounterDataStoreKey)key).Counter;
parameters.Add(par);
}
else
if (key is GDID)
{
where = "T1.GDID = ?CTR";
var par = new MySqlParameter();
par.ParameterName = "?CTR";
par.Value = key;
parameters.Add(par);
}
else
if (key is NameValueDataStoreKey)
{
var dict = key as NameValueDataStoreKey;
var s = new StringBuilder();
var idx = 0;
foreach (var e in dict)
{
s.AppendFormat(" (T1.`{0}` = ?P{1}) AND", e.Key, idx);
var par = new MySqlParameter();
par.ParameterName = "?P" + idx.ToString();
par.Value = e.Value;
parameters.Add(par);
idx++;
}
if (s.Length > 0) s.Remove(s.Length - 3, 3);//cut "AND"
where = s.ToString();
}
else
throw new MySQLDataAccessException(StringConsts.INVALID_KEY_TYPE_ERROR);
return where;
}