protected override Task<SelectedSnapshot> LoadAsync(string persistenceId, SnapshotSelectionCriteria criteria)
{
// Create a Query with dynamic parameters
string N1QLQueryString = "select `" + _CBBucket.Name + "`.* from `" + _CBBucket.Name + "` where DocumentType = 'SnapshotEntry' AND PersistenceId = $PersistenceId ";
IQueryRequest N1QLQueryRequest = new QueryRequest()
.AddNamedParameter("PersistenceId", persistenceId);
string N1QLQueryOrderByClauseString = "ORDER BY SequenceNr DESC";
if (criteria.MaxSequenceNr > 0 && criteria.MaxSequenceNr < long.MaxValue)
{
N1QLQueryString += "AND SequenceNr <= $limit ";
N1QLQueryOrderByClauseString = "ORDER BY SequenceNr DESC,";
N1QLQueryRequest.AddNamedParameter("limit",criteria.MaxSequenceNr);
}
if (criteria.MaxTimeStamp != DateTime.MinValue && criteria.MaxTimeStamp != DateTime.MaxValue)
{
N1QLQueryString += " AND Timestamp <= $timelimit ";
N1QLQueryOrderByClauseString = "ORDER BY Timestamp DESC,";
N1QLQueryRequest.AddNamedParameter("timelimit", criteria.MaxTimeStamp.Ticks.ToString());
}
N1QLQueryString += N1QLQueryOrderByClauseString.TrimEnd(',') + " LIMIT 1";
N1QLQueryRequest.Statement(N1QLQueryString).AdHoc(false);
return taskLoadAsync(N1QLQueryRequest);
}