Search in sources :

Example 11 with TokenTransfer

use of com.hedera.mirror.common.domain.token.TokenTransfer in project hedera-mirror-node by hashgraph.

the class TransferTransactionPayerMigrationTest method persistTokenTransfers.

private void persistTokenTransfers(List<TokenTransfer> tokenTransfers) {
    for (TokenTransfer tokenTransfer : tokenTransfers) {
        var id = tokenTransfer.getId();
        jdbcOperations.update("insert into token_transfer (amount, account_id, consensus_timestamp, token_id)" + " values (?,?,?,?)", tokenTransfer.getAmount(), id.getAccountId().getId(), id.getConsensusTimestamp(), id.getTokenId().getId());
    }
}
Also used : TokenTransfer(com.hedera.mirror.common.domain.token.TokenTransfer)

Example 12 with TokenTransfer

use of com.hedera.mirror.common.domain.token.TokenTransfer in project hedera-mirror-node by hashgraph.

the class BatchUpserterTest method tokenDissociateTransfer.

@Test
void tokenDissociateTransfer() {
    // given
    EntityId accountId = EntityId.of("0.0.215", ACCOUNT);
    EntityId accountId2 = EntityId.of("0.0.216", ACCOUNT);
    Token nftClass1 = getDeletedNftClass(10L, 25L, EntityId.of("0.0.100", TOKEN));
    Token nftClass2 = getDeletedNftClass(11L, 24L, EntityId.of("0.0.101", TOKEN));
    EntityId tokenId1 = nftClass1.getTokenId().getTokenId();
    // already deleted, result of wipe
    Nft nft1 = getNft(tokenId1, accountId, 1L, 11L, 16L, true);
    Nft nft2 = getNft(tokenId1, accountId, 2L, 11L, 11L, false);
    Nft nft3 = getNft(tokenId1, accountId, 3L, 12L, 12L, false);
    // different account
    Nft nft4 = getNft(tokenId1, accountId2, 4L, 18L, 18L, false);
    Nft nft5 = getNft(nftClass2.getTokenId().getTokenId(), accountId, 1L, 15L, 15L, false);
    nftRepository.saveAll(List.of(nft1, nft2, nft3, nft4, nft5));
    tokenRepository.saveAll(List.of(nftClass1, nftClass2));
    long consensusTimestamp = 30L;
    EntityId ftId = EntityId.of("0.0.217", TOKEN);
    EntityId payerId = EntityId.of("0.0.2002", ACCOUNT);
    TokenTransfer fungibleTokenTransfer = domainBuilder.tokenTransfer().customize(t -> t.amount(-10).id(new TokenTransfer.Id(consensusTimestamp, ftId, accountId)).isApproval(false).payerAccountId(payerId).tokenDissociate(true)).get();
    TokenTransfer nonFungibleTokenTransfer = domainBuilder.tokenTransfer().customize(t -> t.amount(-2).id(new TokenTransfer.Id(consensusTimestamp, tokenId1, accountId)).isApproval(false).payerAccountId(payerId).tokenDissociate(true)).get();
    List<TokenTransfer> tokenTransfers = List.of(fungibleTokenTransfer, nonFungibleTokenTransfer);
    // when
    persist(tokenDissociateTransferBatchUpserter, tokenTransfers);
    // then
    assertThat(nftRepository.findAll()).containsExactlyInAnyOrder(nft1, getNft(tokenId1, accountId, 2L, 11L, 30L, true), getNft(tokenId1, accountId, 3L, 12L, 30L, true), nft4, nft5);
    NftTransfer serial2Transfer = getNftTransfer(tokenId1, accountId, 2L, consensusTimestamp);
    serial2Transfer.setPayerAccountId(payerId);
    NftTransfer serial3Transfer = getNftTransfer(tokenId1, accountId, 3L, consensusTimestamp);
    serial3Transfer.setPayerAccountId(payerId);
    assertThat(nftTransferRepository.findAll()).containsExactlyInAnyOrder(serial2Transfer, serial3Transfer);
    assertThat(tokenTransferRepository.findAll()).usingElementComparatorIgnoringFields("tokenDissociate").containsOnly(fungibleTokenTransfer);
}
Also used : EntityId(com.hedera.mirror.common.domain.entity.EntityId) CryptoAllowanceRepository(com.hedera.mirror.importer.repository.CryptoAllowanceRepository) SneakyThrows(lombok.SneakyThrows) EntityId(com.hedera.mirror.common.domain.entity.EntityId) ContractRepository(com.hedera.mirror.importer.repository.ContractRepository) Assertions.assertThat(org.assertj.core.api.Assertions.assertThat) ScheduleRepository(com.hedera.mirror.importer.repository.ScheduleRepository) EntityType(com.hedera.mirror.common.domain.entity.EntityType) TOKEN(com.hedera.mirror.common.domain.entity.EntityType.TOKEN) NftTransfer(com.hedera.mirror.common.domain.token.NftTransfer) TokenSupplyTypeEnum(com.hedera.mirror.common.domain.token.TokenSupplyTypeEnum) NftAllowanceRepository(com.hedera.mirror.importer.repository.NftAllowanceRepository) Token(com.hedera.mirror.common.domain.token.Token) TokenId(com.hedera.mirror.common.domain.token.TokenId) TokenRepository(com.hedera.mirror.importer.repository.TokenRepository) TokenFreezeStatusEnum(com.hedera.mirror.common.domain.token.TokenFreezeStatusEnum) Collection(java.util.Collection) TOKEN_DISSOCIATE_BATCH_PERSISTER(com.hedera.mirror.importer.config.MirrorImporterConfiguration.TOKEN_DISSOCIATE_BATCH_PERSISTER) Resource(javax.annotation.Resource) CryptoAllowance(com.hedera.mirror.common.domain.entity.CryptoAllowance) TokenPauseStatusEnum(com.hedera.mirror.common.domain.token.TokenPauseStatusEnum) StandardCharsets(java.nio.charset.StandardCharsets) NftAllowance(com.hedera.mirror.common.domain.entity.NftAllowance) ByteString(com.google.protobuf.ByteString) Test(org.junit.jupiter.api.Test) List(java.util.List) Nft(com.hedera.mirror.common.domain.token.Nft) EntityRepository(com.hedera.mirror.importer.repository.EntityRepository) TransactionOperations(org.springframework.transaction.support.TransactionOperations) TokenAccountRepository(com.hedera.mirror.importer.repository.TokenAccountRepository) NftTransferId(com.hedera.mirror.common.domain.token.NftTransferId) TokenAccount(com.hedera.mirror.common.domain.token.TokenAccount) ACCOUNT(com.hedera.mirror.common.domain.entity.EntityType.ACCOUNT) Schedule(com.hedera.mirror.common.domain.schedule.Schedule) TokenTypeEnum(com.hedera.mirror.common.domain.token.TokenTypeEnum) NftId(com.hedera.mirror.common.domain.token.NftId) Contract(com.hedera.mirror.common.domain.contract.Contract) Hex(org.apache.commons.codec.binary.Hex) ArrayList(java.util.ArrayList) DomainBuilder(com.hedera.mirror.common.domain.DomainBuilder) NftTransferRepository(com.hedera.mirror.importer.repository.NftTransferRepository) NftRepository(com.hedera.mirror.importer.repository.NftRepository) TokenAllowanceRepository(com.hedera.mirror.importer.repository.TokenAllowanceRepository) Tuple(org.assertj.core.groups.Tuple) TokenTransferRepository(com.hedera.mirror.importer.repository.TokenTransferRepository) Entity(com.hedera.mirror.common.domain.entity.Entity) IntegrationTest(com.hedera.mirror.importer.IntegrationTest) Key(com.hederahashgraph.api.proto.java.Key) TokenKycStatusEnum(com.hedera.mirror.common.domain.token.TokenKycStatusEnum) TokenAllowance(com.hedera.mirror.common.domain.entity.TokenAllowance) TokenTransfer(com.hedera.mirror.common.domain.token.TokenTransfer) NftTransfer(com.hedera.mirror.common.domain.token.NftTransfer) Token(com.hedera.mirror.common.domain.token.Token) TokenTransfer(com.hedera.mirror.common.domain.token.TokenTransfer) EntityId(com.hedera.mirror.common.domain.entity.EntityId) TokenId(com.hedera.mirror.common.domain.token.TokenId) NftTransferId(com.hedera.mirror.common.domain.token.NftTransferId) NftId(com.hedera.mirror.common.domain.token.NftId) Nft(com.hedera.mirror.common.domain.token.Nft) Test(org.junit.jupiter.api.Test) IntegrationTest(com.hedera.mirror.importer.IntegrationTest)

Aggregations

TokenTransfer (com.hedera.mirror.common.domain.token.TokenTransfer)12 EntityId (com.hedera.mirror.common.domain.entity.EntityId)7 Test (org.junit.jupiter.api.Test)7 IntegrationTest (com.hedera.mirror.importer.IntegrationTest)5 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)5 EntityType (com.hedera.mirror.common.domain.entity.EntityType)4 Token (com.hedera.mirror.common.domain.token.Token)4 Entity (com.hedera.mirror.common.domain.entity.Entity)3 TOKEN (com.hedera.mirror.common.domain.entity.EntityType.TOKEN)3 NftTransferId (com.hedera.mirror.common.domain.token.NftTransferId)3 TokenAccount (com.hedera.mirror.common.domain.token.TokenAccount)3 Resource (javax.annotation.Resource)3 ByteString (com.google.protobuf.ByteString)2 DomainBuilder (com.hedera.mirror.common.domain.DomainBuilder)2 EntityIdEndec (com.hedera.mirror.common.domain.entity.EntityIdEndec)2 ACCOUNT (com.hedera.mirror.common.domain.entity.EntityType.ACCOUNT)2 Nft (com.hedera.mirror.common.domain.token.Nft)2 NftId (com.hedera.mirror.common.domain.token.NftId)2 NftTransfer (com.hedera.mirror.common.domain.token.NftTransfer)2 TokenFreezeStatusEnum (com.hedera.mirror.common.domain.token.TokenFreezeStatusEnum)2