I am trying to connect to dynamoDB and fetching data. This is how my code looks. I tried catching the exception. It says
Unable to determine range key from index name.
CustomerManager.cs
public async Task<List<CustomerResponse>> GetCustomers()
{
var myCustomers = await m_CustomerEngine.GetSitesWithClientDetails();
if (myCustomers == null) return null;
var siteMonitors = new List<Monitor>();
var names = new List<string>
{
"SITE"
};
var running = await m_MonitorEngine.QueryIndexItems("SITE:RUNNING", QueryOperator.BeginsWith, names, "GSI-Reverse").ConfigureAwait(false);
var notRunning = await m_MonitorEngine.QueryIndexItems("SITE:NOTRUNNING", QueryOperator.BeginsWith, names, "GSI-Reverse").ConfigureAwait(false);
if (running != null && running.Count > 0) siteMonitors.AddRange(running);
if (notRunning != null && notRunning.Count > 0) siteMonitors.AddRange(notRunning);
// return MapDynamoCustomerStatus(dCustomers, siteMonitors);
return MapMySqlCustomerStatus(myCustomers, siteMonitors);
}
Data Model
[DynamoDBTable("xyz")]
public class Monitor
{
[DynamoDBHashKey("PK")]
public string Site { get; set; }
[DynamoDBRangeKey("SK")]
public string Service { get; set; }
[DynamoDBProperty("_rawData")]
public string RawData { get; set; }
}
MonitorRepository.cs
public AsyncSearch<Monitor> QueryIndexItems(string hashKey, QueryOperator queryOperator, IEnumerable<object> values, string indexName)
{
try
{
var tableName = m_Configuration["DynamoDbTables:Monitor"] ?? "ClientMonitoring-qa";
DynamoDBOperationConfig config = new DynamoDBOperationConfig
{
OverrideTableName = tableName,
IndexName = indexName
};
var data = m_MonitorContext.QueryItems(hashKey, queryOperator, values, config);
return data;
}
catch (Exception ex)
{
throw new Exception($"Amazon error in MonitorRepository.QueryItems table operation! Error: {ex}");
}
}
DynamoDBRepository.cs
public AsyncSearch<T> QueryItems(string hashKey, QueryOperator queryOperator, IEnumerable<object> values, DynamoDBOperationConfig config)
{
var data = base.QueryAsync<T>(hashKey, queryOperator, values, config);
return data;
}