(ctx context.Context, balanceIDs []string)
| 1452 | } |
| 1453 | |
| 1454 | func (l *LedgerForge) loadBalancesForQueuedBatch(ctx context.Context, balanceIDs []string) (map[string]*model.Balance, []*model.Balance, error) { |
| 1455 | balancesByID := make(map[string]*model.Balance, len(balanceIDs)) |
| 1456 | |
| 1457 | if l.Config().Transaction.EnableQueuedChecks { |
| 1458 | for _, balanceID := range balanceIDs { |
| 1459 | balance, err := l.datasource.GetBalanceByID(balanceID, nil, true) |
| 1460 | if err != nil { |
| 1461 | return nil, nil, err |
| 1462 | } |
| 1463 | balancesByID[balanceID] = balance |
| 1464 | } |
| 1465 | } else { |
| 1466 | loaded, err := l.datasource.GetBalancesByIDsLite(ctx, balanceIDs) |
| 1467 | if err != nil { |
| 1468 | return nil, nil, err |
| 1469 | } |
| 1470 | for balanceID, balance := range loaded { |
| 1471 | balancesByID[balanceID] = balance |
| 1472 | } |
| 1473 | } |
| 1474 | |
| 1475 | orderedBalances := make([]*model.Balance, 0, len(balanceIDs)) |
| 1476 | for _, balanceID := range balanceIDs { |
| 1477 | balance, ok := balancesByID[balanceID] |
| 1478 | if !ok || balance == nil { |
| 1479 | return nil, nil, fmt.Errorf("failed to load balance %s for coalesced batch", balanceID) |
| 1480 | } |
| 1481 | orderedBalances = append(orderedBalances, balance) |
| 1482 | } |
| 1483 | |
| 1484 | return balancesByID, orderedBalances, nil |
| 1485 | } |
| 1486 | |
| 1487 | func coalescingBalancesForTransaction(balancesByID map[string]*model.Balance, txn *model.Transaction) (*model.Balance, *model.Balance, error) { |
| 1488 | sourceBalance, ok := balancesByID[txn.Source] |
no test coverage detected