prepareTransactionForQueue prepares a transaction for queueing by setting status, metadata, and resolving source/destination balances.
(ctx context.Context, transaction *model.Transaction)
| 1747 | // prepareTransactionForQueue prepares a transaction for queueing by setting status, metadata, |
| 1748 | // and resolving source/destination balances. |
| 1749 | func (l *LedgerForge) prepareTransactionForQueue(ctx context.Context, transaction *model.Transaction) (*model.Transaction, error) { |
| 1750 | ctx, span := tracer.Start(ctx, "PrepareTransactionForQueue") |
| 1751 | defer span.End() |
| 1752 | |
| 1753 | setTransactionStatus(transaction) |
| 1754 | setTransactionMetadata(transaction) |
| 1755 | |
| 1756 | // Get and update source/destination |
| 1757 | sourceBalance, destinationBalance, err := l.getSourceAndDestination(ctx, transaction) |
| 1758 | if err != nil { |
| 1759 | span.RecordError(err) |
| 1760 | return nil, fmt.Errorf("failed to get source/destination balances: %w", err) |
| 1761 | } |
| 1762 | |
| 1763 | transaction.Source = sourceBalance.BalanceID |
| 1764 | transaction.Destination = destinationBalance.BalanceID |
| 1765 | |
| 1766 | if err := hotpairs.AssignQueueLane(ctx, l.hotPairs, l.datasource, transaction); err != nil { |
| 1767 | span.RecordError(err) |
| 1768 | return nil, fmt.Errorf("failed to assign queue lane: %w", err) |
| 1769 | } |
| 1770 | |
| 1771 | return transaction, nil |
| 1772 | } |
| 1773 | |
| 1774 | // QueueTransaction processes and queues a transaction for execution. |
| 1775 | // It handles both single transactions and split transactions, preparing them for processing |
no test coverage detected