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))));
        }
Example #2
0
        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));
            }
        }