github.com/stellar/stellar-etl@v1.0.1-0.20240312145900-4874b6bf2b89/internal/input/ledgers.go (about) 1 package input 2 3 import ( 4 "context" 5 6 "github.com/stellar/stellar-etl/internal/utils" 7 8 "github.com/stellar/go/historyarchive" 9 ) 10 11 // GetLedgers returns a slice of ledger close metas for the ledgers in the provided range (inclusive on both ends) 12 func GetLedgers(start, end uint32, limit int64, isTest bool, isFuturenet bool) ([]historyarchive.Ledger, error) { 13 env := utils.GetEnvironmentDetails(isTest, isFuturenet) 14 backend, err := utils.CreateBackend(start, end, env.ArchiveURLs) 15 if err != nil { 16 return []historyarchive.Ledger{}, err 17 } 18 19 ledgerSlice := []historyarchive.Ledger{} 20 ctx := context.Background() 21 for seq := start; seq <= end; seq++ { 22 ledger, err := backend.GetLedgerArchive(ctx, seq) 23 if err != nil { 24 return []historyarchive.Ledger{}, err 25 } 26 27 ledgerSlice = append(ledgerSlice, ledger) 28 if int64(len(ledgerSlice)) >= limit && limit >= 0 { 29 break 30 } 31 } 32 33 return ledgerSlice, nil 34 }