public async Task <AnswerCreateCommandResult> ExecuteAsync(AnswerCreateCommand command, SimpleQAIdentity user, CancellationToken cancel) { var result = await _channel.ExecuteAsync( "CreateAnswer {question} @qid @data", new { qid = command.QuestionId, data = GetAnswerData(command, command.QuestionId, user) }).ConfigureAwait(false); result = result[0].AsResults(); var aid = result[0].GetString(); var quesionData = result[1].GetStringArray(); var slug = quesionData[0]; var ownerId = quesionData[1]; if (ownerId != user.Id) { _channel.Dispatch("NotifyQuestionUpdate {user} @qid @uid", new { qid = command.QuestionId, uid = user.Id }); } return(new AnswerCreateCommandResult(command.QuestionId, slug, aid)); }
public Task SendMessageAsync(PushSubscriptionRequest request, CancellationToken cancel) { CheckInit(); var topic = GetRedisTopic(request.Topic); _channel.Dispatch("subscribe @topic", new { topic }); return(Task.FromResult <Object>(null)); }
public Task <EndSessionCommandResult> ExecuteAsync(EndSessionCommand command, SimpleQAIdentity user, CancellationToken cancel) { _channel.Dispatch("EndSession {user} @SessionId", new { command.SessionId }); return(Task.FromResult(EndSessionCommandResult.Instance)); }
public Task <VisitQuestionCommandResult> ExecuteAsync(VisitQuestionCommand command, SimpleQAIdentity user, CancellationToken cancel) { _channel.Dispatch("VisitQuestion {question} @QuestionId @Views", command); return(Task.FromResult(VisitQuestionCommandResult.Nothing)); }
/// <summary> /// Executes the given command without waiting. /// </summary> /// <param name="channel"><see cref="IRedisChannel"/></param> /// <param name="command">The Redis command.</param> public static void Dispatch(this IRedisChannel channel, String command) { channel.Dispatch <Object>(command, null); }