public TransactionInputOutputDto(TransactionInputOutput txIo)
 {
     AddressId   = txIo.AddressId;
     AddressHash = txIo.Address?.Hash ?? null;
     Amount      = txIo.Amount;
     TransactionInputOutputType = txIo.TransactionInputOutputType;
 }
Beispiel #2
0
        private async Task UpdateOrInsertAggregateAsync(IDbConnection sqlCon, IDbTransaction trans, TransactionInputOutput txIo, int blockHeight)
        {
            AddressAggregate addAgg;

            if (_addressAggregates.ContainsKey(txIo.AddressId))
            {
                addAgg = _addressAggregates[txIo.AddressId];

                addAgg.ModifyAggregateProperties(txIo.TransactionInputOutputType, txIo.Amount, blockHeight);

                await UpdateOrInsertAggregateAsync(sqlCon, trans, addAgg, false);
            }
            else
            {
                var response = (await sqlCon.QueryAsync <AddressAggregate>(AddressAggregateSelectSql, new { txIo.AddressId }, trans)).ToList();

                var isNew = !response.Any();

                addAgg = isNew
                    ? new AddressAggregate {
                    AddressId = txIo.AddressId
                }
                    : response.First();

                addAgg.ModifyAggregateProperties(txIo.TransactionInputOutputType, txIo.Amount, blockHeight);

                await UpdateOrInsertAggregateAsync(sqlCon, trans, addAgg, isNew);

                _addressAggregates.Add(addAgg.AddressId, addAgg);
            }
        }