public async Task ReleaseAsync(DepositWalletKey key, Guid operationId) { var partitionKey = DepositWalletLockEntity.GetPartitionKey(key); var rowKey = DepositWalletLockEntity.GetRowKey(key); await _storage.DeleteIfExistAsync(partitionKey, rowKey, e => e.OperationId == operationId); }
public async Task <DepositWalletLock> LockAsync( DepositWalletKey key, decimal balance, long block, Func <Guid> operationIdFactory) { var partitionKey = DepositWalletLockEntity.GetPartitionKey(key); var rowKey = DepositWalletLockEntity.GetRowKey(key); var entity = await _storage.GetOrInsertAsync ( partitionKey, rowKey, // ReSharper disable once ImplicitlyCapturedClosure () => DepositWalletLockEntity.Create ( key, balance, block, operationIdFactory() ) ); return(DepositWalletLock.Create(key, entity.OperationId, entity.Balance, entity.Block)); }