public async Task <bool> TryDeleteObservationAsync(string address)
        {
            // delete wallet if exists
            var existed = await _walletStorage.DeleteIfExistAsync(DepositWalletEntity.Partition(address), DepositWalletEntity.Row());

            // if not deleted earlier then delete balances
            if (existed)
            {
                string continuation = null;

                do
                {
                    var query = new TableQuery <DepositWalletBalanceEntity>().Where($"PartitionKey eq '{DepositWalletBalanceEntity.Partition(address)}'");
                    var chunk = await _walletBalanceStorage.GetDataWithContinuationTokenAsync(query, 100, continuation);

                    var batch = new TableBatchOperation();

                    continuation = chunk.ContinuationToken;

                    foreach (var balance in chunk.Entities)
                    {
                        batch.Delete(balance);
                    }

                    if (batch.Any())
                    {
                        await _walletBalanceStorage.DoBatchAsync(batch);
                    }
                } while (!string.IsNullOrEmpty(continuation));
            }

            return(existed);
        }
예제 #2
0
        private static async Task DeleteCodesInRepository <T>(string partnerId, string phoneNum,
                                                              INoSQLTableStorage <T> storage) where T : ITableEntity, new()
        {
            var batchOperation   = new TableBatchOperation();
            var entitiesToDelete =
                (await storage.GetDataAsync(SmsVerificationCodeEntity.GeneratePartitionKey(partnerId, phoneNum)))
                .ToArray();

            if (entitiesToDelete.Any())
            {
                foreach (var e in entitiesToDelete)
                {
                    batchOperation.Delete(e);
                }
                await storage.DoBatchAsync(batchOperation);
            }
        }
 public async Task DoBatchAsync(TableBatchOperation batch)
 {
     await _retryService.RetryAsync(async() => await _impl.DoBatchAsync(batch), _onModificationsRetryCount);
 }
        public async Task DoBatchAsync(TableBatchOperation batch)
        {
            await _table.DoBatchAsync(batch);

            await _cache.DoBatchAsync(batch);
        }
예제 #5
0
 public Task DoBatchAsync(TableBatchOperation batch)
 => WrapAsync(() => _impl.DoBatchAsync(batch), nameof(DoBatchAsync));