public async Task <string> AddAsync(SmsMessage message)
        {
            var entity = SmsMessageEntity.Create(message);
            await _tableStorage.TryInsertAsync(entity);

            var indexEntity = AzureIndex.Create(IdIndex, entity.Id, entity);
            await _index.InsertAsync(indexEntity);

            return(entity.Id);
        }
        public async Task DeleteAsync(string id, string messageId)
        {
            var entity = await GetAsync(id);

            if (entity == null)
            {
                return;
            }

            await _tableStorage.DeleteIfExistAsync(SmsMessageEntity.GeneratePartitionKey(entity.Created), SmsMessageEntity.GenerateRowKey(id));

            await _index.DeleteIfExistAsync(IdIndex, id);

            if (!string.IsNullOrEmpty(messageId))
            {
                await _index.DeleteIfExistAsync(MessageIdIndex, messageId);
            }
        }
        public async Task SetMessageIdAsync(string messageId, string id)
        {
            var entity = await _tableStorage.GetDataAsync(_index, IdIndex, id);

            if (!string.IsNullOrEmpty(entity.MessageId))
            {
                await _tableStorage.DeleteIfExistAsync(MessageIdIndex, entity.MessageId);
            }

            await _tableStorage.MergeAsync(SmsMessageEntity.GeneratePartitionKey(entity.Created), SmsMessageEntity.GenerateRowKey(id), messageEntity =>
            {
                messageEntity.MessageId = messageId;
                return(messageEntity);
            });

            var indexEntity = AzureIndex.Create(MessageIdIndex, messageId, entity);
            await _index.InsertAsync(indexEntity);
        }