コード例 #1
0
        private async Task <ResultConversations> ExecuteConversationQueryAndConvert(
            TableQuery <UserConversationsTimeRowEntity> rangeQuery)
        {
            try
            {
                var tableQuerySegment = await userConversationsTable.ExecuteQuerySegmentedAsync(rangeQuery, null);

                var entities  = tableQuerySegment.Results;
                var converter = new Converter <UserConversationsTimeRowEntity, Conversation>(entity =>
                                                                                             new Conversation(entity.Id, new List <string> {
                    entity.PartitionKey, entity.Recipient
                },
                                                                                                              ConversationUtils.ParseDateTime(entity.RowKey)));
                var conversations = new List <Conversation>(entities.ConvertAll(converter));

                if (conversations.Count == 0)
                {
                    return(new ResultConversations(conversations, null, null));
                }

                return(new ResultConversations(conversations,
                                               ConversationUtils.DateTimeToRowKey(conversations.First().LastModifiedDateUtc),
                                               ConversationUtils.DateTimeToRowKey(conversations.Last().LastModifiedDateUtc)));
            }
            catch (StorageException)
            {
                throw new StorageUnavailableException("Failed to reach storage!");
            }
        }
コード例 #2
0
        private async Task <ResultMessages> ExecuteMessageQueryAndConvert(TableQuery <MessagesTableEntity> rangeQuery)
        {
            try
            {
                var resultEntities = await messageTable.ExecuteQuerySegmentedAsync(rangeQuery, null);

                var entities  = resultEntities.Results;
                var converter = new Converter <MessagesTableEntity, Message>(entity =>
                                                                             new Message(entity.Text, entity.SenderUsername,
                                                                                         ConversationUtils.ParseDateTime(entity.RowKey)));
                var messages = new List <Message>(entities.ConvertAll(converter));
                if (messages.Count == 0)
                {
                    return(new ResultMessages(messages, null, null));
                }

                return(new ResultMessages(messages, ConversationUtils.DateTimeToRowKey(messages.First().UtcTime),
                                          ConversationUtils.DateTimeToRowKey(messages.Last().UtcTime)));
            }
            catch (StorageException)
            {
                throw new StorageUnavailableException("Failed to get messages");
            }
        }