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!"); } }
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"); } }