/
ledger_bundle.go
37 lines (31 loc) · 1.06 KB
/
ledger_bundle.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
package ingest
import (
"database/sql"
"github.com/digitalbitsorg/go/services/frontier/internal/db2/core"
"github.com/digitalbitsorg/go/support/db"
"github.com/digitalbitsorg/go/support/errors"
)
// Load runs queries against `core` to fill in the records of the bundle.
func (lb *LedgerBundle) Load(db *db.Session) error {
q := &core.Q{Session: db}
// Load Header
err := q.LedgerHeaderBySequence(&lb.Header, lb.Sequence)
if err != nil {
// Remove when Frontier is able to handle gaps in digitalbits-core DB.
// More info: https://github.com/stellar/go/issues/335
if err == sql.ErrNoRows {
return errors.New("Gap detected in digitalbits-core database. Please recreate Frontier DB.")
}
return errors.Wrap(err, "failed to load header")
}
// Load transactions
err = q.TransactionsByLedger(&lb.Transactions, lb.Sequence)
if err != nil {
return errors.Wrap(err, "failed to load transactions")
}
err = q.TransactionFeesByLedger(&lb.TransactionFees, lb.Sequence)
if err != nil {
return errors.Wrap(err, "failed to load transaction fees")
}
return nil
}