public TransactionInputOutputDto(TransactionInputOutput txIo) { AddressId = txIo.AddressId; AddressHash = txIo.Address?.Hash ?? null; Amount = txIo.Amount; TransactionInputOutputType = txIo.TransactionInputOutputType; }
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); } }