Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions internal/data/accounts.go
Original file line number Diff line number Diff line change
Expand Up @@ -154,23 +154,23 @@ func (m *AccountModel) IsAccountFeeBumpEligible(ctx context.Context, address str
return exists, nil
}

// BatchGetByTxHashes gets the accounts that are associated with the given transaction hashes.
func (m *AccountModel) BatchGetByTxHashes(ctx context.Context, txHashes []string, columns string) ([]*types.AccountWithTxHash, error) {
// BatchGetByToIDs gets the accounts that are associated with the given transaction ToIDs.
func (m *AccountModel) BatchGetByToIDs(ctx context.Context, toIDs []int64, columns string) ([]*types.AccountWithToID, error) {
query := `
SELECT account_id AS stellar_address, tx_hash
SELECT account_id AS stellar_address, tx_to_id
FROM transactions_accounts
WHERE tx_hash = ANY($1)`
var accounts []*types.AccountWithTxHash
WHERE tx_to_id = ANY($1)`
var accounts []*types.AccountWithToID
start := time.Now()
err := m.DB.SelectContext(ctx, &accounts, query, pq.Array(txHashes))
err := m.DB.SelectContext(ctx, &accounts, query, pq.Array(toIDs))
duration := time.Since(start).Seconds()
m.MetricsService.ObserveDBQueryDuration("BatchGetByTxHashes", "accounts", duration)
m.MetricsService.ObserveDBBatchSize("BatchGetByTxHashes", "accounts", len(txHashes))
m.MetricsService.ObserveDBQueryDuration("BatchGetByToIDs", "accounts", duration)
m.MetricsService.ObserveDBBatchSize("BatchGetByToIDs", "accounts", len(toIDs))
if err != nil {
m.MetricsService.IncDBQueryError("BatchGetByTxHashes", "accounts", utils.GetDBErrorType(err))
return nil, fmt.Errorf("getting accounts by transaction hashes: %w", err)
m.MetricsService.IncDBQueryError("BatchGetByToIDs", "accounts", utils.GetDBErrorType(err))
return nil, fmt.Errorf("getting accounts by transaction ToIDs: %w", err)
}
m.MetricsService.IncDBQuery("BatchGetByTxHashes", "accounts")
m.MetricsService.IncDBQuery("BatchGetByToIDs", "accounts")
return accounts, nil
}

Expand Down
38 changes: 19 additions & 19 deletions internal/data/accounts_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -230,17 +230,17 @@ func TestAccountModelGet(t *testing.T) {
assert.Equal(t, address, account.StellarAddress)
}

func TestAccountModelBatchGetByTxHashes(t *testing.T) {
func TestAccountModelBatchGetByToIDs(t *testing.T) {
dbt := dbtest.Open(t)
defer dbt.Close()
dbConnectionPool, err := db.OpenDBConnectionPool(dbt.DSN)
require.NoError(t, err)
defer dbConnectionPool.Close()

mockMetricsService := metrics.NewMockMetricsService()
mockMetricsService.On("ObserveDBQueryDuration", "BatchGetByTxHashes", "accounts", mock.Anything).Return()
mockMetricsService.On("IncDBQuery", "BatchGetByTxHashes", "accounts").Return()
mockMetricsService.On("ObserveDBBatchSize", "BatchGetByTxHashes", "accounts", mock.Anything).Return().Maybe()
mockMetricsService.On("ObserveDBQueryDuration", "BatchGetByToIDs", "accounts", mock.Anything).Return()
mockMetricsService.On("IncDBQuery", "BatchGetByToIDs", "accounts").Return()
mockMetricsService.On("ObserveDBBatchSize", "BatchGetByToIDs", "accounts", mock.Anything).Return().Maybe()
defer mockMetricsService.AssertExpectations(t)

m := &AccountModel{
Expand All @@ -251,33 +251,33 @@ func TestAccountModelBatchGetByTxHashes(t *testing.T) {
ctx := context.Background()
address1 := keypair.MustRandom().Address()
address2 := keypair.MustRandom().Address()
txHash1 := "tx1"
txHash2 := "tx2"
toID1 := int64(1)
toID2 := int64(2)

// Insert test accounts
_, err = m.DB.ExecContext(ctx, "INSERT INTO accounts (stellar_address) VALUES ($1), ($2)", address1, address2)
require.NoError(t, err)

// Insert test transactions first
_, err = m.DB.ExecContext(ctx, "INSERT INTO transactions (hash, to_id, envelope_xdr, fee_charged, result_code, meta_xdr, ledger_number, ledger_created_at) VALUES ($1, 1, 'env1', 100, 'TransactionResultCodeTxSuccess', 'meta1', 1, NOW()), ($2, 2, 'env2', 200, 'TransactionResultCodeTxSuccess', 'meta2', 2, NOW())", txHash1, txHash2)
_, err = m.DB.ExecContext(ctx, "INSERT INTO transactions (hash, to_id, envelope_xdr, fee_charged, result_code, meta_xdr, ledger_number, ledger_created_at) VALUES ('tx1', $1, 'env1', 100, 'TransactionResultCodeTxSuccess', 'meta1', 1, NOW()), ('tx2', $2, 'env2', 200, 'TransactionResultCodeTxSuccess', 'meta2', 2, NOW())", toID1, toID2)
require.NoError(t, err)

// Insert test transactions_accounts links
_, err = m.DB.ExecContext(ctx, "INSERT INTO transactions_accounts (tx_hash, account_id) VALUES ($1, $2), ($3, $4)", txHash1, address1, txHash2, address2)
_, err = m.DB.ExecContext(ctx, "INSERT INTO transactions_accounts (tx_to_id, account_id) VALUES ($1, $2), ($3, $4)", toID1, address1, toID2, address2)
require.NoError(t, err)

// Test BatchGetByTxHash function
accounts, err := m.BatchGetByTxHashes(ctx, []string{txHash1, txHash2}, "")
// Test BatchGetByToIDs function
accounts, err := m.BatchGetByToIDs(ctx, []int64{toID1, toID2}, "")
require.NoError(t, err)
assert.Len(t, accounts, 2)

// Verify accounts are returned with correct tx_hash
addressSet := make(map[string]string)
// Verify accounts are returned with correct to_id
addressSet := make(map[string]int64)
for _, acc := range accounts {
addressSet[acc.StellarAddress] = acc.TxHash
addressSet[acc.StellarAddress] = acc.ToID
}
assert.Equal(t, txHash1, addressSet[address1])
assert.Equal(t, txHash2, addressSet[address2])
assert.Equal(t, toID1, addressSet[address1])
assert.Equal(t, toID2, addressSet[address2])
}

func TestAccountModelBatchGetByOperationIDs(t *testing.T) {
Expand Down Expand Up @@ -313,7 +313,7 @@ func TestAccountModelBatchGetByOperationIDs(t *testing.T) {
require.NoError(t, err)

// Insert test operations first
_, err = m.DB.ExecContext(ctx, "INSERT INTO operations (id, tx_hash, operation_type, operation_xdr, result_code, successful, ledger_number, ledger_created_at) VALUES ($1, 'tx1', 'payment', 'xdr1', 'op_success', true, 1, NOW()), ($2, 'tx2', 'payment', 'xdr2', 'op_success', true, 2, NOW())", operationID1, operationID2)
_, err = m.DB.ExecContext(ctx, "INSERT INTO operations (id, tx_hash, operation_type, operation_xdr, result_code, successful, ledger_number, ledger_created_at) VALUES ($1, 'tx1', 'PAYMENT', 'xdr1', 'op_success', true, 1, NOW()), ($2, 'tx2', 'PAYMENT', 'xdr2', 'op_success', true, 2, NOW())", operationID1, operationID2)
require.NoError(t, err)

// Insert test operations_accounts links
Expand Down Expand Up @@ -404,7 +404,7 @@ func TestAccountModelBatchGetByStateChangeIDs(t *testing.T) {
require.NoError(t, err)

// Insert test operations first
_, err = m.DB.ExecContext(ctx, "INSERT INTO operations (id, tx_hash, operation_type, operation_xdr, result_code, successful, ledger_number, ledger_created_at) VALUES (1, 'tx1', 'payment', 'xdr1', 'op_success', true, 1, NOW()), (2, 'tx2', 'payment', 'xdr2', 'op_success', true, 2, NOW())")
_, err = m.DB.ExecContext(ctx, "INSERT INTO operations (id, tx_hash, operation_type, operation_xdr, result_code, successful, ledger_number, ledger_created_at) VALUES (1, 'tx1', 'PAYMENT', 'xdr1', 'op_success', true, 1, NOW()), (2, 'tx2', 'PAYMENT', 'xdr2', 'op_success', true, 2, NOW())")
require.NoError(t, err)

// Insert test state changes that reference the accounts
Expand All @@ -413,8 +413,8 @@ func TestAccountModelBatchGetByStateChangeIDs(t *testing.T) {
to_id, state_change_order, state_change_category, ledger_created_at,
ledger_number, account_id, operation_id, tx_hash
) VALUES
($1, $2, 'CREDIT', NOW(), 1, $3, 1, 'tx1'),
($4, $5, 'DEBIT', NOW(), 2, $6, 2, 'tx2')
($1, $2, 'BALANCE', NOW(), 1, $3, 1, 'tx1'),
($4, $5, 'BALANCE', NOW(), 2, $6, 2, 'tx2')
`, toID1, stateChangeOrder1, address1, toID2, stateChangeOrder2, address2)
require.NoError(t, err)

Expand Down
60 changes: 30 additions & 30 deletions internal/data/operations_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,9 @@ func Test_OperationModel_BatchInsert(t *testing.T) {
sqlxDB, err := dbConnectionPool.SqlxDB(ctx)
require.NoError(t, err)
txModel := &TransactionModel{DB: dbConnectionPool, MetricsService: metrics.NewMetricsService(sqlxDB)}
_, err = txModel.BatchInsert(ctx, nil, []*types.Transaction{&tx1, &tx2}, map[string]set.Set[string]{
tx1.Hash: set.NewSet(kp1.Address()),
tx2.Hash: set.NewSet(kp2.Address()),
_, err = txModel.BatchInsert(ctx, nil, []*types.Transaction{&tx1, &tx2}, map[int64]set.Set[string]{
tx1.ToID: set.NewSet(kp1.Address()),
tx2.ToID: set.NewSet(kp2.Address()),
})
require.NoError(t, err)

Expand Down Expand Up @@ -278,9 +278,9 @@ func Test_OperationModel_BatchCopy(t *testing.T) {
sqlxDB, err := dbConnectionPool.SqlxDB(ctx)
require.NoError(t, err)
txModel := &TransactionModel{DB: dbConnectionPool, MetricsService: metrics.NewMetricsService(sqlxDB)}
_, err = txModel.BatchInsert(ctx, nil, []*types.Transaction{&tx1, &tx2}, map[string]set.Set[string]{
tx1.Hash: set.NewSet(kp1.Address()),
tx2.Hash: set.NewSet(kp2.Address()),
_, err = txModel.BatchInsert(ctx, nil, []*types.Transaction{&tx1, &tx2}, map[int64]set.Set[string]{
tx1.ToID: set.NewSet(kp1.Address()),
tx2.ToID: set.NewSet(kp2.Address()),
})
require.NoError(t, err)

Expand Down Expand Up @@ -518,9 +518,9 @@ func TestOperationModel_GetAll(t *testing.T) {
_, err = dbConnectionPool.ExecContext(ctx, `
INSERT INTO operations (id, tx_hash, operation_type, operation_xdr, result_code, successful, ledger_number, ledger_created_at)
VALUES
(1, 'tx1', 'payment', 'xdr1', 'op_success', true, 1, $1),
(2, 'tx2', 'create_account', 'xdr2', 'op_success', true, 2, $1),
(3, 'tx3', 'payment', 'xdr3', 'op_success', true, 3, $1)
(1, 'tx1', 'PAYMENT', 'xdr1', 'op_success', true, 1, $1),
(2, 'tx2', 'CREATE_ACCOUNT', 'xdr2', 'op_success', true, 2, $1),
(3, 'tx3', 'PAYMENT', 'xdr3', 'op_success', true, 3, $1)
`, now)
require.NoError(t, err)

Expand Down Expand Up @@ -565,12 +565,12 @@ func TestOperationModel_BatchGetByTxHashes(t *testing.T) {
_, err = dbConnectionPool.ExecContext(ctx, `
INSERT INTO operations (id, tx_hash, operation_type, operation_xdr, result_code, successful, ledger_number, ledger_created_at)
VALUES
(1, 'tx1', 'payment', 'xdr1', 'op_success', true, 1, $1),
(2, 'tx2', 'create_account', 'xdr2', 'op_success', true, 2, $1),
(3, 'tx1', 'payment', 'xdr3', 'op_success', true, 3, $1),
(4, 'tx1', 'manage_offer', 'xdr4', 'op_success', true, 4, $1),
(5, 'tx2', 'payment', 'xdr5', 'op_success', true, 5, $1),
(6, 'tx3', 'trust_line', 'xdr6', 'op_success', true, 6, $1)
(1, 'tx1', 'PAYMENT', 'xdr1', 'op_success', true, 1, $1),
(2, 'tx2', 'CREATE_ACCOUNT', 'xdr2', 'op_success', true, 2, $1),
(3, 'tx1', 'PAYMENT', 'xdr3', 'op_success', true, 3, $1),
(4, 'tx1', 'MANAGE_SELL_OFFER', 'xdr4', 'op_success', true, 4, $1),
(5, 'tx2', 'PAYMENT', 'xdr5', 'op_success', true, 5, $1),
(6, 'tx3', 'CHANGE_TRUST', 'xdr6', 'op_success', true, 6, $1)
`, now)
require.NoError(t, err)

Expand Down Expand Up @@ -752,9 +752,9 @@ func TestOperationModel_BatchGetByTxHash(t *testing.T) {
_, err = dbConnectionPool.ExecContext(ctx, `
INSERT INTO operations (id, tx_hash, operation_type, operation_xdr, result_code, successful, ledger_number, ledger_created_at)
VALUES
(1, 'tx1', 'payment', 'xdr1', 'op_success', true, 1, $1),
(2, 'tx2', 'create_account', 'xdr2', 'op_success', true, 2, $1),
(3, 'tx1', 'payment', 'xdr3', 'op_success', true, 3, $1)
(1, 'tx1', 'PAYMENT', 'xdr1', 'op_success', true, 1, $1),
(2, 'tx2', 'CREATE_ACCOUNT', 'xdr2', 'op_success', true, 2, $1),
(3, 'tx1', 'PAYMENT', 'xdr3', 'op_success', true, 3, $1)
`, now)
require.NoError(t, err)

Expand Down Expand Up @@ -806,9 +806,9 @@ func TestOperationModel_BatchGetByAccountAddresses(t *testing.T) {
_, err = dbConnectionPool.ExecContext(ctx, `
INSERT INTO operations (id, tx_hash, operation_type, operation_xdr, result_code, successful, ledger_number, ledger_created_at)
VALUES
(1, 'tx1', 'payment', 'xdr1', 'op_success', true, 1, $1),
(2, 'tx2', 'create_account', 'xdr2', 'op_success', true, 2, $1),
(3, 'tx3', 'payment', 'xdr3', 'op_success', true, 3, $1)
(1, 'tx1', 'PAYMENT', 'xdr1', 'op_success', true, 1, $1),
(2, 'tx2', 'CREATE_ACCOUNT', 'xdr2', 'op_success', true, 2, $1),
(3, 'tx3', 'PAYMENT', 'xdr3', 'op_success', true, 3, $1)
`, now)
require.NoError(t, err)

Expand Down Expand Up @@ -853,8 +853,8 @@ func TestOperationModel_GetByID(t *testing.T) {
_, err = dbConnectionPool.ExecContext(ctx, `
INSERT INTO operations (id, tx_hash, operation_type, operation_xdr, result_code, successful, ledger_number, ledger_created_at)
VALUES
(1, 'tx1', 'payment', 'xdr1', 'op_success', true, 1, $1),
(2, 'tx2', 'create_account', 'xdr2', 'op_success', true, 2, $1)
(1, 'tx1', 'PAYMENT', 'xdr1', 'op_success', true, 1, $1),
(2, 'tx2', 'CREATE_ACCOUNT', 'xdr2', 'op_success', true, 2, $1)
`, now)
require.NoError(t, err)

Expand Down Expand Up @@ -917,19 +917,19 @@ func TestOperationModel_BatchGetByStateChangeIDs(t *testing.T) {
_, err = dbConnectionPool.ExecContext(ctx, `
INSERT INTO operations (id, tx_hash, operation_type, operation_xdr, result_code, successful, ledger_number, ledger_created_at)
VALUES
(1, 'tx1', 'payment', 'xdr1', 'op_success', true, 1, $1),
(2, 'tx2', 'create_account', 'xdr2', 'op_success', true, 2, $1),
(3, 'tx3', 'payment', 'xdr3', 'op_success', true, 3, $1)
(1, 'tx1', 'PAYMENT', 'xdr1', 'op_success', true, 1, $1),
(2, 'tx2', 'CREATE_ACCOUNT', 'xdr2', 'op_success', true, 2, $1),
(3, 'tx3', 'PAYMENT', 'xdr3', 'op_success', true, 3, $1)
`, now)
require.NoError(t, err)

// Create test state changes
_, err = dbConnectionPool.ExecContext(ctx, `
INSERT INTO state_changes (to_id, state_change_order, state_change_category, ledger_created_at, ledger_number, account_id, operation_id, tx_hash)
VALUES
(1, 1, 'credit', $1, 1, $2, 1, 'tx1'),
(2, 1, 'debit', $1, 2, $2, 2, 'tx2'),
(3, 1, 'credit', $1, 3, $2, 1, 'tx3')
VALUES
(1, 1, 'BALANCE', $1, 1, $2, 1, 'tx1'),
(2, 1, 'BALANCE', $1, 2, $2, 2, 'tx2'),
(3, 1, 'BALANCE', $1, 3, $2, 1, 'tx3')
`, now, address)
require.NoError(t, err)

Expand Down
52 changes: 26 additions & 26 deletions internal/data/statechanges_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,9 +107,9 @@ func TestStateChangeModel_BatchInsert(t *testing.T) {
sqlxDB, err := dbConnectionPool.SqlxDB(ctx)
require.NoError(t, err)
txModel := &TransactionModel{DB: dbConnectionPool, MetricsService: metrics.NewMetricsService(sqlxDB)}
_, err = txModel.BatchInsert(ctx, nil, []*types.Transaction{&tx1, &tx2}, map[string]set.Set[string]{
tx1.Hash: set.NewSet(kp1.Address()),
tx2.Hash: set.NewSet(kp2.Address()),
_, err = txModel.BatchInsert(ctx, nil, []*types.Transaction{&tx1, &tx2}, map[int64]set.Set[string]{
tx1.ToID: set.NewSet(kp1.Address()),
tx2.ToID: set.NewSet(kp2.Address()),
})
require.NoError(t, err)

Expand Down Expand Up @@ -265,9 +265,9 @@ func TestStateChangeModel_BatchCopy(t *testing.T) {
sqlxDB, err := dbConnectionPool.SqlxDB(ctx)
require.NoError(t, err)
txModel := &TransactionModel{DB: dbConnectionPool, MetricsService: metrics.NewMetricsService(sqlxDB)}
_, err = txModel.BatchInsert(ctx, nil, []*types.Transaction{&tx1, &tx2}, map[string]set.Set[string]{
tx1.Hash: set.NewSet(kp1.Address()),
tx2.Hash: set.NewSet(kp2.Address()),
_, err = txModel.BatchInsert(ctx, nil, []*types.Transaction{&tx1, &tx2}, map[int64]set.Set[string]{
tx1.ToID: set.NewSet(kp1.Address()),
tx2.ToID: set.NewSet(kp2.Address()),
})
require.NoError(t, err)

Expand Down Expand Up @@ -503,9 +503,9 @@ func TestStateChangeModel_BatchGetByAccountAddress(t *testing.T) {
_, err = dbConnectionPool.ExecContext(ctx, `
INSERT INTO state_changes (to_id, state_change_order, state_change_category, ledger_created_at, ledger_number, account_id, operation_id, tx_hash)
VALUES
(1, 1, 'credit', $1, 1, $2, 123, 'tx1'),
(2, 1, 'debit', $1, 2, $2, 456, 'tx2'),
(3, 1, 'credit', $1, 3, $3, 789, 'tx3')
(1, 1, 'BALANCE', $1, 1, $2, 123, 'tx1'),
(2, 1, 'BALANCE', $1, 2, $2, 456, 'tx2'),
(3, 1, 'BALANCE', $1, 3, $3, 789, 'tx3')
`, now, address1, address2)
require.NoError(t, err)

Expand Down Expand Up @@ -807,9 +807,9 @@ func TestStateChangeModel_GetAll(t *testing.T) {
_, err = dbConnectionPool.ExecContext(ctx, `
INSERT INTO state_changes (to_id, state_change_order, state_change_category, ledger_created_at, ledger_number, account_id, operation_id, tx_hash)
VALUES
(1, 1, 'credit', $1, 1, $2, 123, 'tx1'),
(2, 1, 'debit', $1, 2, $2, 456, 'tx2'),
(3, 1, 'credit', $1, 3, $2, 789, 'tx3')
(1, 1, 'BALANCE', $1, 1, $2, 123, 'tx1'),
(2, 1, 'BALANCE', $1, 2, $2, 456, 'tx2'),
(3, 1, 'BALANCE', $1, 3, $2, 789, 'tx3')
`, now, address)
require.NoError(t, err)

Expand Down Expand Up @@ -854,13 +854,13 @@ func TestStateChangeModel_BatchGetByTxHashes(t *testing.T) {
_, err = dbConnectionPool.ExecContext(ctx, `
INSERT INTO state_changes (to_id, state_change_order, state_change_category, ledger_created_at, ledger_number, account_id, operation_id, tx_hash)
VALUES
(1, 1, 'credit', $1, 1, $2, 123, 'tx1'),
(2, 1, 'debit', $1, 2, $2, 456, 'tx2'),
(3, 1, 'credit', $1, 3, $2, 789, 'tx1'),
(4, 1, 'debit', $1, 4, $2, 101, 'tx1'),
(5, 1, 'credit', $1, 5, $2, 102, 'tx2'),
(6, 1, 'debit', $1, 6, $2, 103, 'tx3'),
(7, 1, 'credit', $1, 7, $2, 104, 'tx2')
(1, 1, 'BALANCE', $1, 1, $2, 123, 'tx1'),
(2, 1, 'BALANCE', $1, 2, $2, 456, 'tx2'),
(3, 1, 'BALANCE', $1, 3, $2, 789, 'tx1'),
(4, 1, 'BALANCE', $1, 4, $2, 101, 'tx1'),
(5, 1, 'BALANCE', $1, 5, $2, 102, 'tx2'),
(6, 1, 'BALANCE', $1, 6, $2, 103, 'tx3'),
(7, 1, 'BALANCE', $1, 7, $2, 104, 'tx2')
`, now, address)
require.NoError(t, err)

Expand Down Expand Up @@ -1066,9 +1066,9 @@ func TestStateChangeModel_BatchGetByOperationIDs(t *testing.T) {
_, err = dbConnectionPool.ExecContext(ctx, `
INSERT INTO state_changes (to_id, state_change_order, state_change_category, ledger_created_at, ledger_number, account_id, operation_id, tx_hash)
VALUES
(1, 1, 'credit', $1, 1, $2, 123, 'tx1'),
(2, 1, 'debit', $1, 2, $2, 456, 'tx2'),
(3, 1, 'credit', $1, 3, $2, 123, 'tx3')
(1, 1, 'BALANCE', $1, 1, $2, 123, 'tx1'),
(2, 1, 'BALANCE', $1, 2, $2, 456, 'tx2'),
(3, 1, 'BALANCE', $1, 3, $2, 123, 'tx3')
`, now, address)
require.NoError(t, err)

Expand Down Expand Up @@ -1125,10 +1125,10 @@ func TestStateChangeModel_BatchGetByTxHash(t *testing.T) {
_, err = dbConnectionPool.ExecContext(ctx, `
INSERT INTO state_changes (to_id, state_change_order, state_change_category, ledger_created_at, ledger_number, account_id, operation_id, tx_hash)
VALUES
(1, 1, 'credit', $1, 1, $2, 123, 'tx1'),
(2, 1, 'debit', $1, 2, $2, 124, 'tx1'),
(3, 1, 'credit', $1, 3, $2, 125, 'tx1'),
(4, 1, 'debit', $1, 4, $2, 456, 'tx2')
(1, 1, 'BALANCE', $1, 1, $2, 123, 'tx1'),
(2, 1, 'BALANCE', $1, 2, $2, 124, 'tx1'),
(3, 1, 'BALANCE', $1, 3, $2, 125, 'tx1'),
(4, 1, 'BALANCE', $1, 4, $2, 456, 'tx2')
`, now, address)
require.NoError(t, err)

Expand Down
Loading
Loading