public Task ReplayMessagesAsync(string persistenceId, long fromSequenceNr, long toSequenceNr, long max, Action <IPersistentRepresentation> replayCallback) { // Limit(0) doesn't work... if (max == 0) { return(Task.Run(() => { })); } // Limit allows only integer var maxValue = max >= int.MaxValue ? int.MaxValue : (int)max; var sender = Context.Sender; String N1QLQueryString = "SELECT `" + _CBBucket.Name + "`.* FROM `" + _CBBucket.Name + "` WHERE PersistenceId = $PersistenceId AND SequenceNr >= $FromSequenceNr AND SequenceNr <= $ToSequenceNr ORDER BY SequenceNr ASC LIMIT $Maximum"; IQueryRequest N1QLQueryRequest = new QueryRequest() .Statement(N1QLQueryString) .AddNamedParameter("PersistenceId", persistenceId) .AddNamedParameter("FromSequenceNr", fromSequenceNr) .AddNamedParameter("ToSequenceNr", toSequenceNr) .AddNamedParameter("Maximum", maxValue) .AdHoc(false); Couchbase.N1QL.IQueryResult <JournalEntry> result = _CBBucket.Query <JournalEntry>(N1QLQueryRequest); return(result.Rows.ForEachAsync <JournalEntry>(je => replayCallback(ToPersistanceRepresentation(je, sender)))); }
public void AddXP(string userName, int xp) { var player = GetPlayer(userName); int newXP = player.xp + xp; var queryRequest = new QueryRequest() .Statement("UPDATE `FarmWorld` SET xp=$1 WHERE userName=$2 AND type='PLAYER'") .AddPositionalParameter(newXP) .AddPositionalParameter(userName); var result = _bucket.Query <dynamic>(queryRequest); if (!result.Success) { throw new Exception(String.Format("AddXP failed to find player {0}", userName)); } }