예제 #1
0
        public async Task <string> RegisterAsync(ITweetCash tweetCash)
        {
            var newItem = TweetCash.Create(tweetCash);
            await _tableStorage.InsertAsync(newItem);

            return(newItem.TweetId);
        }
예제 #2
0
 public Task SaveAsync(string clientId, string sessionId, string clientInfo)
 {
     return(Task.WhenAll(
                _tableStorage.InsertAsync(ClientSessionEntity.CreateByToken(clientId, sessionId, clientInfo)),
                _tableStorage.InsertAsync(ClientSessionEntity.CreateByClient(clientId, sessionId, clientInfo))
                ));
 }
예제 #3
0
        public async Task RegisterOrderAsync(OrderBase order)
        {
            var newEntity = OrderEntity.Create(order);
            await _tableStorage.InsertAsync(newEntity);

            newEntity.PartitionKey = OrderEntity.GeneratePartitionKey(order.TraderId);
            await _tableStorage.InsertAsync(newEntity);
        }
예제 #4
0
        public Task InsertAsync(HedgeLimitOrder hedgeLimitOrder)
        {
            var entity = new HedgeLimitOrderEntity(GetPartitionKey(hedgeLimitOrder.Id), GetRowKey(hedgeLimitOrder.Id));

            Mapper.Map(hedgeLimitOrder, entity);

            return(_storage.InsertAsync(entity));
        }
예제 #5
0
        public async Task SaveAsync(IBcnCredentialsRecord credsRecord)
        {
            var byClientEntity       = BcnCredentialsRecordEntity.ByClientId.Create(credsRecord);
            var byAssetAddressEntity = BcnCredentialsRecordEntity.ByAssetAddress.Create(credsRecord);

            await _tableStorage.InsertAsync(byClientEntity);

            await _tableStorage.InsertAsync(byAssetAddressEntity);
        }
예제 #6
0
        public async Task <IOffchainTransfer> CreateTransfer(string transactionId, string clientId, string assetId, decimal amount, OffchainTransferType type, string externalTransferId, string orderId, bool channelClosing = false)
        {
            var entity   = OffchainTransferEntity.ByCommon.Create(transactionId, clientId, assetId, amount, type, externalTransferId, orderId, channelClosing);
            var byClient = OffchainTransferEntity.ByClient.Create(entity);

            await Task.WhenAll(_storage.InsertAsync(entity), _storage.InsertAsync(byClient));

            return(entity);
        }
예제 #7
0
        public async Task CreateAsync(IMarketOrder marketOrder)
        {
            var byOrderEntity  = MarketOrderEntity.ByOrderId.Create(marketOrder);
            var byClientEntity = MarketOrderEntity.ByClientId.Create(marketOrder);

            await _tableStorage.InsertAsync(byOrderEntity);

            await _tableStorage.InsertAsync(byClientEntity);
        }
        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 InsertAsync(IEthereumTransactionRequest request, bool insertOrder = true)
        {
            var entityById = EthereumTransactionReqEntity.ById.Create(request);
            await _tableStorage.InsertAsync(entityById);

            if (insertOrder && !string.IsNullOrEmpty(request.OrderId))
            {
                var entitByOrder = EthereumTransactionReqEntity.ByOrderId.Create(request);
                await _tableStorage.InsertAsync(entitByOrder);
            }
        }
        private async Task <EmailTokenEntity> GenerateNewToken(string email)
        {
            var newEntity = EmailTokenEntity.Create(email);

            await _tableStorage.InsertAsync(newEntity);

            var newIndex = EmailTokenEntity.GenerateTokenIndex(newEntity);

            await _tableStorage.InsertAsync(newIndex);

            return(newEntity);
        }
        public async Task <IOffchainRequest> CreateRequest(string transferId, string clientId, string assetId, RequestType type, OffchainTransferType transferType)
        {
            var id = Guid.NewGuid().ToString();

            var byClient = OffchainRequestEntity.ByClient.Create(id, transferId, clientId, assetId, type, transferType);
            await _table.InsertAsync(byClient);

            var byRecord = OffchainRequestEntity.ByRecord.Create(id, transferId, clientId, assetId, type, transferType);
            await _table.InsertAsync(byRecord);

            return(byRecord);
        }
예제 #12
0
        public async Task InsertAsync(Order order)
        {
            var entity = new OrderEntity(GetPartitionKey(order.WalletId), GetRowKey(order.Id));

            Mapper.Map(order, entity);

            await _storage.InsertThrowConflictAsync(entity);

            var index = new AzureIndex(GetIndexPartitionKey(order.Status), GetIndexRowKey(order.Id), entity);

            await _indices.InsertAsync(index);
        }
예제 #13
0
        public async Task <Employee> InsertAsync(Employee employee)
        {
            var entity = new EmployeeEntity(GetPartitionKey(employee.MerchantId), CreateRowKey());

            Mapper.Map(employee, entity);

            await _storage.InsertAsync(entity);

            var emailIndex = AzureIndex.Create(GetEmailIndexPartitionKey(), GetEmailIndexRowKey(entity.Email), entity);

            await _indexStorage.InsertAsync(emailIndex);

            return(Mapper.Map <Employee>(entity));
        }
예제 #14
0
        public async Task ShouldGetAll()
        {
            var quotes = new[]
            {
                new FixQuoteEntity("rur", 1, 2, DateTime.Now, DateTime.Now.AddDays(1)),
                new FixQuoteEntity("usd", 1, 2, DateTime.Now, DateTime.Now.AddDays(1))
            };
            await _storage.InsertAsync(quotes);

            var resutl = await _repository.GetAllAsync(DateTime.Now);

            Assert.That(resutl.Count, Is.EqualTo(2));
            Assert.That(resutl.Count(s => s.AssetPair == _rur.AssetPair), Is.EqualTo(1));
            Assert.That(resutl.Count(s => s.AssetPair == _usd.AssetPair), Is.EqualTo(1));
        }
        public async Task AddAsync(
            Transaction transaction)
        {
            var(partitionKey, rowKey) = GetTransactionKeys(transaction.TransactionId);

            var transactionEntity = new TransactionEntity
            {
                Amount        = transaction.Amount,
                BlockNumber   = transaction.BlockNumber,
                BroadcastedOn = transaction.BroadcastedOn,
                BuiltOn       = transaction.BuiltOn,
                CompletedOn   = transaction.CompletedOn,
                Data          = transaction.Data,
                DeletedOn     = transaction.DeletedOn,
                Error         = transaction.Error,
                From          = transaction.From,
                GasAmount     = transaction.GasAmount,
                GasPrice      = transaction.GasPrice,
                Hash          = transaction.Hash,
                IncludeFee    = transaction.IncludeFee,
                SignedData    = transaction.SignedData,
                State         = transaction.State,
                To            = transaction.To,
                TransactionId = transaction.TransactionId,

                PartitionKey = partitionKey,
                RowKey       = rowKey
            };

            await _transactions.InsertAsync(transactionEntity);
        }
예제 #16
0
        public static async Task <T> ModifyOrCreateAsync <T>(this INoSQLTableStorage <T> tableStorage,
                                                             string partitionKey, string rowKey, Func <T> create, Action <T> update) where T : ITableEntity, new()
        {
            for (var i = 0; i < 15; i++)
            {
                try
                {
                    var entity = await tableStorage.ReplaceAsync(partitionKey, rowKey, itm =>
                    {
                        update(itm);
                        return(itm);
                    });

                    if (entity != null)
                    {
                        return(entity);
                    }

                    entity = create();
                    await tableStorage.InsertAsync(entity);

                    return(entity);
                }
                catch (Exception)
                {
                }
            }
            throw new Exception("Can not modify or update entity: " + PrintItem(create()));
        }
        public async Task <string> RegisterAsync(ITwitterAppAccount twitterAppAccount)
        {
            var newItem = TwitterAppAccount.Create(twitterAppAccount);
            await _tableStorage.InsertAsync(newItem);

            return(newItem.Id);
        }
예제 #18
0
        public async Task <IAssetAvailabilityByMerchant> SetAsync(string paymentAssets, string settlementAssets, string merchantId)
        {
            string partitionKey = AssetAvailabilityByMerchantEntity.GeneratePartitionKey(merchantId);
            string rowKey       = AssetAvailabilityByMerchantEntity.GenerateRowKey(merchantId);

            AssetAvailabilityByMerchantEntity exItem = await _tableStorage.GetDataAsync(partitionKey, rowKey);

            if (exItem != null && string.IsNullOrEmpty(settlementAssets) && string.IsNullOrEmpty(paymentAssets))
            {
                await _tableStorage.DeleteAsync(exItem);

                return(null);
            }
            if (exItem != null)
            {
                exItem.PaymentAssets    = paymentAssets;
                exItem.SettlementAssets = settlementAssets;
                await _tableStorage.InsertOrMergeAsync(exItem);

                return(exItem);
            }
            var newItem = AssetAvailabilityByMerchantEntity.Create(new AssetAvailabilityByMerchant
            {
                MerchantId       = merchantId,
                PaymentAssets    = paymentAssets,
                SettlementAssets = settlementAssets
            });

            await _tableStorage.InsertAsync(newItem);

            return(newItem);
        }
        public async Task AddIfMissingMultipleAsync(IEnumerable <ITrade> trades)
        {
            if (trades == null || !trades.Any())
            {
                return;
            }

            var tradesToWrite = new List <ITrade>();

            foreach (var trade in trades)
            {
                if (await GetAsync(trade.Id) == null)
                {
                    tradesToWrite.Add(trade);
                }
            }

            if (!tradesToWrite.Any())
            {
                return;
            }

            var entities = tradesToWrite.Select(TradeLogEntity.Create).ToArray();

            await _tableStorage.InsertAsync(entities);

            await _idIndexStorage.InsertAsync(entities.Select(t => AzureIndex.Create(IndexId, t.Id, t.PartitionKey, t.RowKey)));
        }
        public async Task InsertAsync(InvoiceDispute invoiceDispute)
        {
            var entity = new InvoiceDisputeEntity(GetPartitionKey(invoiceDispute.InvoiceId), GetRowKey(invoiceDispute.CreatedAt));

            Mapper.Map(invoiceDispute, entity);
            await _storage.InsertAsync(entity);
        }
예제 #21
0
        public static async Task <T> InsertOrModifyAsync <T>(this INoSQLTableStorage <T> tableStorage, string partitionKey,
                                                             string rowKey, Func <T> createNew, Func <T, T> modify)
            where T : class, ITableEntity, new()
        {
            for (var i = 0; i < 100; i++)
            {
                try
                {
                    var result = await tableStorage.ReplaceAsync(partitionKey,
                                                                 rowKey, modify);

                    if (result != null)
                    {
                        return(result);
                    }

                    result = createNew();
                    await tableStorage.InsertAsync(result);

                    return(result);
                }
                catch
                {
                }
            }

            throw new Exception("Can not insert or modify entity");
        }
        public async Task <IEmailVerificationCode> CreateAsync(string email, string partnerId, bool generateRealCode)
        {
            var entity = _emailVerificationCodeFactory.CreateEmailVerificationCode(email, partnerId, generateRealCode);
            await _tableStorage.InsertAsync(entity);

            return(entity);
        }
        public async Task <IOffchainOrder> CreateOrder(string clientId, string asset, string assetPair, decimal volume, bool straight)
        {
            var entity = OffchainOrder.Create(clientId, asset, assetPair, volume, straight);
            await _storage.InsertAsync(entity);

            return(entity);
        }
        public async Task <string> SaveAsync(IProjectData projectData)
        {
            var newEntity = ProjectEntity.Create(projectData);
            await _projectsTableStorage.InsertAsync(newEntity);

            return(newEntity.Id);
        }
예제 #25
0
        public async Task <IVirtualWallet> CreateAsync(IVirtualWallet wallet)
        {
            VirtualWalletEntity entity = VirtualWalletEntity.ByMerchantId.Create(wallet);

            await _tableStorage.InsertAsync(entity);

            AzureIndex indexByWalletId = VirtualWalletEntity.IndexByWalletId.Create(entity);

            await _walletIdIndexStorage.InsertAsync(indexByWalletId);

            AzureIndex indexByDueDate = VirtualWalletEntity.IndexByDueDate.Create(entity);

            await _dueDateIndexStorage.InsertAsync(indexByDueDate);

            return(Mapper.Map <VirtualWallet>(entity));
        }
        public async Task <string> InsertRequestAsync <T>(ICashOutRequest request, PaymentSystem paymentSystem, T paymentFields, CashOutRequestTradeSystem tradeSystem)
        {
            var entity = CashOutAttemptEntity.PendingRecords.Create(request, paymentSystem, paymentFields, tradeSystem);
            await _tableStorage.InsertAsync(entity);

            return(entity.RowKey);
        }
예제 #27
0
        public async Task <ISmsVerificationCode> CreateAsync(string partnerId, string phoneNum, bool generateRealCode)
        {
            var entity = _smsVerificationCodeFactory.CreateSmsVerificationCode(phoneNum, partnerId, generateRealCode);
            await _tableStorage.InsertAsync(entity);

            return(entity);
        }
예제 #28
0
        public async Task <IKycDocument> AddAsync(IKycDocument kycDocument)
        {
            var newDocument = KycDocumentEntity.Create(kycDocument);
            await _tableStorage.InsertAsync(newDocument);

            return(newDocument);
        }
예제 #29
0
        public async Task AddAsync(IExpiryEntry entry)
        {
            var alreadyExisted = !await
                                 _tableStorage.TryInsertAsync(
                new ExpiryEntryEntity
            {
                PartitionKey   = ExpiryEntryEntity.ByClient.GeneratePartitionKey(entry.ClientId),
                RowKey         = ExpiryEntryEntity.ByClient.GenerateRowKey(entry.RequestId),
                ClientId       = entry.ClientId,
                RequestId      = entry.RequestId,
                ExpiryDateTime = entry.ExpiryDateTime
            });

            if (!alreadyExisted)
            {
                await _tableStorage.InsertAsync(
                    new ExpiryEntryEntity
                {
                    PartitionKey   = ExpiryEntryEntity.ByDateTime.GeneratePartitionKey(),
                    RowKey         = ExpiryEntryEntity.ByDateTime.GenerateRowKey(entry.ExpiryDateTime, entry.RequestId),
                    ClientId       = entry.ClientId,
                    RequestId      = entry.RequestId,
                    ExpiryDateTime = entry.ExpiryDateTime
                });
            }
        }
예제 #30
0
        public async Task <IEnumerable <IAccountAssetPair> > AddAssetPairs(string tradingConditionId, string baseAssetId,
                                                                           IEnumerable <string> assetPairsIds, AccountAssetsSettings defaults)
        {
            var entitiesToAdd = assetPairsIds.Select(x => AccountAssetPairEntity.Create(
                                                         new AccountAssetPair
            {
                BaseAssetId         = baseAssetId,
                TradingConditionId  = tradingConditionId,
                Instrument          = x,
                CommissionLong      = defaults.CommissionLong,
                CommissionLot       = defaults.CommissionLot,
                CommissionShort     = defaults.CommissionShort,
                DealLimit           = defaults.DealLimit,
                DeltaAsk            = defaults.DeltaAsk,
                DeltaBid            = defaults.DeltaBid,
                LeverageInit        = defaults.LeverageInit,
                LeverageMaintenance = defaults.LeverageMaintenance,
                PositionLimit       = defaults.PositionLimit,
                SwapLong            = defaults.SwapLong,
                SwapShort           = defaults.SwapShort,
                OvernightSwapLong   = defaults.OvernightSwapLong,
                OvernightSwapShort  = defaults.OvernightSwapShort
            })).ToArray();
            await _tableStorage.InsertAsync(entitiesToAdd);

            return(entitiesToAdd);
        }