diff --git a/go.mod b/go.mod index f9745b16..16231996 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/stellar/wallet-backend -go 1.24 +go 1.24.0 toolchain go1.24.2 @@ -9,6 +9,7 @@ require ( github.com/alitto/pond v1.9.2 github.com/avast/retry-go/v4 v4.6.1 github.com/aws/aws-sdk-go v1.55.7 + github.com/basemachina/gqlgen-complexity-reporter v0.1.2 github.com/deckarep/golang-set/v2 v2.8.0 github.com/dlmiddlecote/sqlstats v1.0.2 github.com/getsentry/sentry-go v0.34.1 diff --git a/go.sum b/go.sum index 64eb6e5e..9c49e6ef 100644 --- a/go.sum +++ b/go.sum @@ -102,6 +102,8 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.34.0 h1:NFOJ/NXEGV4Rq//71Hs1jC/NvPs1 github.com/aws/aws-sdk-go-v2/service/sts v1.34.0/go.mod h1:7ph2tGpfQvwzgistp2+zga9f+bCjlQJPkPUmMgDSD7w= github.com/aws/smithy-go v1.22.4 h1:uqXzVZNuNexwc/xrh6Tb56u89WDlJY6HS+KC0S4QSjw= github.com/aws/smithy-go v1.22.4/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= +github.com/basemachina/gqlgen-complexity-reporter v0.1.2 h1:5Wo50343AYXnFtC3AkW7Pcspw5fIh/hW/UEEIDiWVe4= +github.com/basemachina/gqlgen-complexity-reporter v0.1.2/go.mod h1:BLfr/j6OSC5MxitkCpdqyJJFVQ/O8PAX+REdldyh4mQ= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= diff --git a/gqlgen.yml b/gqlgen.yml index 48472203..678505e3 100644 --- a/gqlgen.yml +++ b/gqlgen.yml @@ -170,6 +170,33 @@ models: StateChange: model: - github.com/stellar/wallet-backend/internal/indexer/types.StateChange + StandardBalanceChange: + model: + - github.com/stellar/wallet-backend/internal/indexer/types.StandardBalanceStateChangeModel + AccountChange: + model: + - github.com/stellar/wallet-backend/internal/indexer/types.AccountStateChangeModel + SignerChange: + model: + - github.com/stellar/wallet-backend/internal/indexer/types.SignerStateChangeModel + SignerThresholdsChange: + model: + - github.com/stellar/wallet-backend/internal/indexer/types.SignerThresholdsStateChangeModel + MetadataChange: + model: + - github.com/stellar/wallet-backend/internal/indexer/types.MetadataStateChangeModel + FlagsChange: + model: + - github.com/stellar/wallet-backend/internal/indexer/types.FlagsStateChangeModel + TrustlineChange: + model: + - github.com/stellar/wallet-backend/internal/indexer/types.TrustlineStateChangeModel + BalanceAuthorizationChange: + model: + - github.com/stellar/wallet-backend/internal/indexer/types.BalanceAuthorizationStateChangeModel + ReservesChange: + model: + - github.com/stellar/wallet-backend/internal/indexer/types.ReservesStateChangeModel OperationType: model: - github.com/stellar/wallet-backend/internal/indexer/types.OperationType diff --git a/internal/data/accounts.go b/internal/data/accounts.go index f991d61c..e434803f 100644 --- a/internal/data/accounts.go +++ b/internal/data/accounts.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "strings" "time" "github.com/lib/pq" @@ -146,3 +147,34 @@ func (m *AccountModel) BatchGetByOperationIDs(ctx context.Context, operationIDs m.MetricsService.IncDBQuery("SELECT", "accounts") return accounts, nil } + +// BatchGetByStateChangeIDs gets the accounts that are associated with the given state change IDs. +func (m *AccountModel) BatchGetByStateChangeIDs(ctx context.Context, scToIDs []int64, scOrders []int64, columns string) ([]*types.AccountWithStateChangeID, error) { + columns = prepareColumnsWithID(columns, types.Account{}, "accounts", "stellar_address") + + // Build tuples for the IN clause. Since (to_id, state_change_order) is the primary key of state_changes, + // it will be faster to search on this tuple. + tuples := make([]string, len(scOrders)) + for i := range scOrders { + tuples[i] = fmt.Sprintf("(%d, %d)", scToIDs[i], scOrders[i]) + } + + query := fmt.Sprintf(` + SELECT %s, CONCAT(state_changes.to_id, '-', state_changes.state_change_order) AS state_change_id + FROM accounts + INNER JOIN state_changes ON accounts.stellar_address = state_changes.account_id + WHERE (state_changes.to_id, state_changes.state_change_order) IN (%s) + ORDER BY accounts.created_at DESC + `, columns, strings.Join(tuples, ", ")) + + var accountsWithStateChanges []*types.AccountWithStateChangeID + start := time.Now() + err := m.DB.SelectContext(ctx, &accountsWithStateChanges, query) + duration := time.Since(start).Seconds() + m.MetricsService.ObserveDBQueryDuration("SELECT", "accounts", duration) + if err != nil { + return nil, fmt.Errorf("getting accounts by state change IDs: %w", err) + } + m.MetricsService.IncDBQuery("SELECT", "accounts") + return accountsWithStateChanges, nil +} diff --git a/internal/data/accounts_test.go b/internal/data/accounts_test.go index 00c257ec..74407e3c 100644 --- a/internal/data/accounts_test.go +++ b/internal/data/accounts_test.go @@ -293,3 +293,67 @@ func TestAccountModelIsAccountFeeBumpEligible(t *testing.T) { require.NoError(t, err) assert.True(t, isFeeBumpEligible) } + +func TestAccountModelBatchGetByStateChangeIDs(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", "SELECT", "accounts", mock.Anything).Return() + mockMetricsService.On("IncDBQuery", "SELECT", "accounts").Return() + defer mockMetricsService.AssertExpectations(t) + + m := &AccountModel{ + DB: dbConnectionPool, + MetricsService: mockMetricsService, + } + + ctx := context.Background() + address1 := keypair.MustRandom().Address() + address2 := keypair.MustRandom().Address() + toID1 := int64(100) + toID2 := int64(200) + stateChangeOrder1 := int64(1) + stateChangeOrder2 := int64(1) + + // 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, result_xdr, meta_xdr, ledger_number, ledger_created_at) VALUES ('tx1', 1, 'env1', 'res1', 'meta1', 1, NOW()), ('tx2', 2, 'env2', 'res2', 'meta2', 2, NOW())") + require.NoError(t, err) + + // Insert test operations first + _, err = m.DB.ExecContext(ctx, "INSERT INTO operations (id, tx_hash, operation_type, operation_xdr, ledger_number, ledger_created_at) VALUES (1, 'tx1', 'payment', 'xdr1', 1, NOW()), (2, 'tx2', 'payment', 'xdr2', 2, NOW())") + require.NoError(t, err) + + // Insert test state changes that reference the accounts + _, err = m.DB.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, $2, 'CREDIT', NOW(), 1, $3, 1, 'tx1'), + ($4, $5, 'DEBIT', NOW(), 2, $6, 2, 'tx2') + `, toID1, stateChangeOrder1, address1, toID2, stateChangeOrder2, address2) + require.NoError(t, err) + + // Test BatchGetByStateChangeIDs function + scToIDs := []int64{toID1, toID2} + scOrders := []int64{stateChangeOrder1, stateChangeOrder2} + accounts, err := m.BatchGetByStateChangeIDs(ctx, scToIDs, scOrders, "") + require.NoError(t, err) + assert.Len(t, accounts, 2) + + // Verify accounts are returned with correct state_change_id + addressSet := make(map[string]string) + for _, acc := range accounts { + addressSet[acc.StellarAddress] = acc.StateChangeID + } + assert.Equal(t, "100-1", addressSet[address1]) + assert.Equal(t, "200-1", addressSet[address2]) +} diff --git a/internal/indexer/processors/effects.go b/internal/indexer/processors/effects.go index c1fd4149..0df4ea9c 100644 --- a/internal/indexer/processors/effects.go +++ b/internal/indexer/processors/effects.go @@ -183,7 +183,7 @@ func (p *EffectsProcessor) ProcessOperation(_ context.Context, opWrapper *operat effects.EffectSignerSponsorshipCreated, effects.EffectSignerSponsorshipRemoved, effects.EffectSignerSponsorshipUpdated, effects.EffectTrustlineSponsorshipCreated, effects.EffectTrustlineSponsorshipRemoved, effects.EffectTrustlineSponsorshipUpdated: - sponsorshipChanges, err := p.processSponsorshipEffect(effectType, effect, changeBuilder.Clone(), changes) + sponsorshipChanges, err := p.processSponsorshipEffect(effectType, effect, changeBuilder.Clone()) if err != nil { log.Debugf("processor: %s: failed to process sponsorship effect: effectType: %s, address: %s, txHash: %s, opID: %d, err: %v", p.Name(), effect.TypeString, effect.Address, txHash, opWrapper.ID(), err) continue @@ -202,11 +202,10 @@ func (p *EffectsProcessor) ProcessOperation(_ context.Context, opWrapper *operat // processSponsorshipEffect handles sponsorship-related effects and creates appropriate state changes. // Sponsorship in Stellar allows one account to pay the base reserves for another account's ledger entries. // This function creates state changes for both the sponsor and the sponsored account/entry. -func (p *EffectsProcessor) processSponsorshipEffect(effectType effects.EffectType, effect effects.EffectOutput, baseBuilder *StateChangeBuilder, changes []ingest.Change) ([]types.StateChange, error) { - baseBuilder = baseBuilder.WithCategory(types.StateChangeCategorySponsorship) +func (p *EffectsProcessor) processSponsorshipEffect(effectType effects.EffectType, effect effects.EffectOutput, baseBuilder *StateChangeBuilder) ([]types.StateChange, error) { + baseBuilder = baseBuilder.WithCategory(types.StateChangeCategoryReserves) var sponsorChanges []types.StateChange - var targetChange types.StateChange // Handle different sponsorship effect types and create appropriate state changes //exhaustive:ignore @@ -218,8 +217,10 @@ func (p *EffectsProcessor) processSponsorshipEffect(effectType effects.EffectTyp if err != nil { return nil, fmt.Errorf("extracting sponsor from sponsorship created effect: %w", err) } - sponsorChanges = append(sponsorChanges, p.createSponsorChange(types.StateChangeReasonSet, baseBuilder.Clone(), sponsor, effect.Address)) - targetChange = p.createTargetSponsorshipChange(types.StateChangeReasonSet, sponsor, effectType, effect, baseBuilder.Clone()) + sponsorChanges = append(sponsorChanges, + p.createSponsorChangeForSponsoringAccount(types.StateChangeReasonSponsor, baseBuilder.Clone().WithAccount(sponsor), effect.Address), + p.createSponsorChangeForSponsoredAccount(types.StateChangeReasonSponsor, baseBuilder.Clone(), sponsor), + ) // Removed cases: when sponsorship relationships are terminated case effects.EffectAccountSponsorshipRemoved, effects.EffectClaimableBalanceSponsorshipRemoved, @@ -228,8 +229,10 @@ func (p *EffectsProcessor) processSponsorshipEffect(effectType effects.EffectTyp if err != nil { return nil, fmt.Errorf("extracting former sponsor from sponsorship removed effect: %w", err) } - sponsorChanges = append(sponsorChanges, p.createSponsorChange(types.StateChangeReasonRemove, baseBuilder.Clone(), formerSponsor, effect.Address)) - targetChange = p.createTargetSponsorshipChange(types.StateChangeReasonRemove, formerSponsor, effectType, effect, baseBuilder.Clone()) + sponsorChanges = append(sponsorChanges, + p.createSponsorChangeForSponsoringAccount(types.StateChangeReasonUnsponsor, baseBuilder.Clone().WithAccount(formerSponsor), effect.Address), + p.createSponsorChangeForSponsoredAccount(types.StateChangeReasonUnsponsor, baseBuilder.Clone(), formerSponsor), + ) // Updated cases: when sponsorship relationships are transferred from one sponsor to another case effects.EffectAccountSponsorshipUpdated, effects.EffectClaimableBalanceSponsorshipUpdated, @@ -243,42 +246,32 @@ func (p *EffectsProcessor) processSponsorshipEffect(effectType effects.EffectTyp return nil, fmt.Errorf("extracting former sponsor from sponsorship updated effect: %w", err) } sponsorChanges = append(sponsorChanges, - p.createSponsorChange(types.StateChangeReasonSet, baseBuilder.Clone(), newSponsor, effect.Address), - p.createSponsorChange(types.StateChangeReasonRemove, baseBuilder.Clone(), formerSponsor, effect.Address), + p.createSponsorChangeForSponsoringAccount(types.StateChangeReasonSponsor, baseBuilder.Clone().WithAccount(newSponsor), effect.Address), + p.createSponsorChangeForSponsoringAccount(types.StateChangeReasonUnsponsor, baseBuilder.Clone().WithAccount(formerSponsor), effect.Address), + p.createSponsorChangeForSponsoredAccount(types.StateChangeReasonSponsor, baseBuilder.Clone(), newSponsor), + p.createSponsorChangeForSponsoredAccount(types.StateChangeReasonUnsponsor, baseBuilder.Clone(), formerSponsor), ) - targetBuilder := baseBuilder.Clone().WithKeyValue(p.parseKeyValue(&effect, effectType, changes, "former_sponsor")) - targetChange = p.createTargetSponsorshipChange(types.StateChangeReasonUpdate, newSponsor, effectType, effect, targetBuilder) } - return append(sponsorChanges, targetChange), nil + return sponsorChanges, nil } -// createSponsorChange creates a state change for the sponsor account in a sponsorship relationship. +// createSponsorChangeForSponsoringAccount creates a state change for the sponsoring account in a sponsorship relationship. // This tracks when an account starts, stops, or changes its sponsorship of another account's reserves. -func (p *EffectsProcessor) createSponsorChange(reason types.StateChangeReason, builder *StateChangeBuilder, sponsor string, sponsoredAccountID string) types.StateChange { +func (p *EffectsProcessor) createSponsorChangeForSponsoringAccount(reason types.StateChangeReason, builder *StateChangeBuilder, sponsoredAccountID string) types.StateChange { return builder. WithReason(reason). - WithAccount(sponsor). WithSponsoredAccountID(sponsoredAccountID). Build() } -// createTargetSponsorshipChange creates a state change for the sponsored account or ledger entry. -// This tracks the target side of sponsorship relationships, including specific entry details like claimable balance IDs. -func (p *EffectsProcessor) createTargetSponsorshipChange(reason types.StateChangeReason, sponsor string, effectType effects.EffectType, effect effects.EffectOutput, builder *StateChangeBuilder) types.StateChange { - builder = builder.WithReason(reason).WithSponsor(sponsor) - - // Add specific identifiers based on the type of sponsored reserve - //exhaustive:ignore - switch effectType { - // For signer sponsorship, include the signer key - case effects.EffectSignerSponsorshipCreated, effects.EffectSignerSponsorshipUpdated, effects.EffectSignerSponsorshipRemoved: - builder = builder.WithSigner(effect.Details["signer"].(string), map[string]any{ - "new": 0, - }) - } - - return builder.Build() +// createSponsorChangeForSponsoredAccount creates a state change for the sponsored account in a sponsorship relationship. +// This tracks when an account starts, stops, or changes its sponsorship of another account's reserves. +func (p *EffectsProcessor) createSponsorChangeForSponsoredAccount(reason types.StateChangeReason, builder *StateChangeBuilder, sponsor string) types.StateChange { + return builder. + WithReason(reason). + WithSponsor(sponsor). + Build() } func (p *EffectsProcessor) parseTrustline(baseBuilder *StateChangeBuilder, effect *effects.EffectOutput, effectType effects.EffectType, changes []ingest.Change) (types.StateChange, error) { diff --git a/internal/indexer/processors/effects_test.go b/internal/indexer/processors/effects_test.go index 73d239d4..d2d93971 100644 --- a/internal/indexer/processors/effects_test.go +++ b/internal/indexer/processors/effects_test.go @@ -264,7 +264,7 @@ func TestEffects_ProcessTransaction(t *testing.T) { assert.Equal(t, types.StateChangeReasonDataEntry, *changes[0].StateChangeReason) assert.Equal(t, types.NullableJSONB{"hello": map[string]any{"old": ""}}, changes[0].KeyValue) }) - t.Run("Sponsorship - account sponsorship created/updated/revoked", func(t *testing.T) { + t.Run("Sponsorship - reserves sponsorship created/updated/revoked", func(t *testing.T) { envelopeXDR := "AAAAAGL8HQvQkbK2HA3WVjRrKmjX00fG8sLI7m0ERwJW/AX3AAAAZAAAAAAAAAAaAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAoZftFP3p4ifbTm6hQdieotu3Zw9E05GtoSh5MBytEpQAAAACVAvkAAAAAAAAAAABVvwF9wAAAEDHU95E9wxgETD8TqxUrkgC0/7XHyNDts6Q5huRHfDRyRcoHdv7aMp/sPvC3RPkXjOMjgbKJUX7SgExUeYB5f8F" resultXDR := "AAAAAAAAAGQAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAA=" metaXDR := createAccountMetaB64 @@ -293,39 +293,43 @@ func TestEffects_ProcessTransaction(t *testing.T) { } changes, err := processor.ProcessOperation(context.Background(), opWrapper) require.NoError(t, err) - require.Len(t, changes, 8) + require.Len(t, changes, 9) // Sponsorship revoked creates two state changes - one for the sponsor and one for the target account assert.Equal(t, toid.New(12345, 1, 1).ToInt64(), changes[1].OperationID) assert.Equal(t, uint32(12345), changes[1].LedgerNumber) assert.Equal(t, time.Unix(12345*100, 0), changes[1].LedgerCreatedAt) assert.Equal(t, hash, changes[1].TxHash) - assert.Equal(t, types.StateChangeCategorySponsorship, changes[1].StateChangeCategory) - assert.Equal(t, types.StateChangeReasonRemove, *changes[1].StateChangeReason) + assert.Equal(t, types.StateChangeCategoryReserves, changes[1].StateChangeCategory) + assert.Equal(t, types.StateChangeReasonUnsponsor, *changes[1].StateChangeReason) assert.Equal(t, "GACMZD5VJXTRLKVET72CETCYKELPNCOTTBDC6DHFEUPLG5DHEK534JQX", changes[1].AccountID) assert.Equal(t, "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", changes[1].SponsoredAccountID.String) - assert.Equal(t, types.StateChangeCategorySponsorship, changes[2].StateChangeCategory) - assert.Equal(t, types.StateChangeReasonRemove, *changes[2].StateChangeReason) + assert.Equal(t, types.StateChangeCategoryReserves, changes[2].StateChangeCategory) + assert.Equal(t, types.StateChangeReasonUnsponsor, *changes[2].StateChangeReason) assert.Equal(t, "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", changes[2].AccountID) assert.Equal(t, "GACMZD5VJXTRLKVET72CETCYKELPNCOTTBDC6DHFEUPLG5DHEK534JQX", changes[2].SponsorAccountID.String) - // Updating sponsorship creates 3 state changes - one for the new sponsor, one for the former sponsor, and one for the target account - assert.Equal(t, types.StateChangeCategorySponsorship, changes[3].StateChangeCategory) - assert.Equal(t, types.StateChangeReasonSet, *changes[3].StateChangeReason) + // Updating sponsorship creates 4 state changes - one for the new sponsor, one for the former sponsor, and two for the target account + assert.Equal(t, types.StateChangeCategoryReserves, changes[3].StateChangeCategory) + assert.Equal(t, types.StateChangeReasonSponsor, *changes[3].StateChangeReason) assert.Equal(t, "GACMZD5VJXTRLKVET72CETCYKELPNCOTTBDC6DHFEUPLG5DHEK534JQX", changes[3].AccountID) assert.Equal(t, "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", changes[3].SponsoredAccountID.String) - assert.Equal(t, types.StateChangeCategorySponsorship, changes[4].StateChangeCategory) - assert.Equal(t, types.StateChangeReasonRemove, *changes[4].StateChangeReason) + assert.Equal(t, types.StateChangeCategoryReserves, changes[4].StateChangeCategory) + assert.Equal(t, types.StateChangeReasonUnsponsor, *changes[4].StateChangeReason) assert.Equal(t, "GAHK7EEG2WWHVKDNT4CEQFZGKF2LGDSW2IVM4S5DP42RBW3K6BTODB4A", changes[4].AccountID) assert.Equal(t, "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", changes[4].SponsoredAccountID.String) - assert.Equal(t, types.StateChangeCategorySponsorship, changes[5].StateChangeCategory) - assert.Equal(t, types.StateChangeReasonUpdate, *changes[5].StateChangeReason) + assert.Equal(t, types.StateChangeCategoryReserves, changes[5].StateChangeCategory) + assert.Equal(t, types.StateChangeReasonSponsor, *changes[5].StateChangeReason) assert.Equal(t, "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", changes[5].AccountID) assert.Equal(t, "GACMZD5VJXTRLKVET72CETCYKELPNCOTTBDC6DHFEUPLG5DHEK534JQX", changes[5].SponsorAccountID.String) - assert.Equal(t, "GAHK7EEG2WWHVKDNT4CEQFZGKF2LGDSW2IVM4S5DP42RBW3K6BTODB4A", changes[5].KeyValue["former_sponsor"]) + + assert.Equal(t, types.StateChangeCategoryReserves, changes[6].StateChangeCategory) + assert.Equal(t, types.StateChangeReasonUnsponsor, *changes[6].StateChangeReason) + assert.Equal(t, "GBRPYHIL2CI3FNQ4BXLFMNDLFJUNPU2HY3ZMFSHONUCEOASW7QC7OX2H", changes[6].AccountID) + assert.Equal(t, "GAHK7EEG2WWHVKDNT4CEQFZGKF2LGDSW2IVM4S5DP42RBW3K6BTODB4A", changes[6].SponsorAccountID.String) }) t.Run("ChangeTrust - trustline created", func(t *testing.T) { envelopeXDR := "AAAAAgAAAAAf1miSBZ7jc0TxIHULMUqdj+dibtkh1JEEwITVtQ05ZgAAAGQAB1eLAAAAAwAAAAEAAAAAAAAAAAAAAABowwQqAAAAAAAAAAEAAAAAAAAABgAAAAFURVNUAAAAAFrnJwiWP46hSSjcYc6wY93h556Qpe47SA8bIQGXMJTlf/////////8AAAAAAAAAAbUNOWYAAABAzWelNCrF4Q+iSKX30xHrBm76FMa2h89pPauijrWAVlcj/swEyYZqjU94SYU+8XEWUuvg2rpjCIHGPHHyzSXlAw==" diff --git a/internal/indexer/processors/token_transfer.go b/internal/indexer/processors/token_transfer.go index 0692159f..abf0e230 100644 --- a/internal/indexer/processors/token_transfer.go +++ b/internal/indexer/processors/token_transfer.go @@ -77,7 +77,7 @@ func (p *TokenTransferProcessor) ProcessTransaction(ctx context.Context, tx inge // parseOperationDetails extracts operation metadata needed for processing token transfer events. // Returns operation ID, type, and source account which determine how events should be categorized. func (p *TokenTransferProcessor) parseOperationDetails(tx ingest.LedgerTransaction, ledgerIdx uint32, txIdx uint32, opIdx uint32) (int64, *xdr.OperationType, string) { - op, _ := tx.GetOperation(opIdx - 1) + op, _ := tx.GetOperation(opIdx) operationType := &op.Body.Type opSourceAccount := operationSourceAccount(tx, op) opID := toid.New(int32(ledgerIdx), int32(txIdx), int32(opIdx+1)).ToInt64() diff --git a/internal/indexer/processors/utils.go b/internal/indexer/processors/utils.go index 1c6a9721..7ca2b654 100644 --- a/internal/indexer/processors/utils.go +++ b/internal/indexer/processors/utils.go @@ -124,6 +124,7 @@ func ConvertOperation(transaction *ingest.LedgerTransaction, op *xdr.Operation, OperationType: types.OperationTypeFromXDR(op.Body.Type), OperationXDR: xdrOpStr, LedgerCreatedAt: transaction.Ledger.ClosedAt(), + LedgerNumber: transaction.Ledger.LedgerSequence(), TxHash: transaction.Hash.HexString(), }, nil } diff --git a/internal/indexer/types/types.go b/internal/indexer/types/types.go index 794351d0..8321709e 100644 --- a/internal/indexer/types/types.go +++ b/internal/indexer/types/types.go @@ -1,3 +1,34 @@ +// Package types defines data structures for the Stellar wallet indexer and GraphQL API. +// This package implements a sophisticated state change architecture that bridges database storage with GraphQL interface requirements. +// +// STATE CHANGE ARCHITECTURE OVERVIEW: +// +// The state change system uses three key components that work together: +// +// 1. DATABASE LAYER: A unified StateChange struct that contains all possible fields for any state change type. +// This allows efficient storage in a single database table with nullable fields. +// +// 2. GRAPHQL LAYER: A BaseStateChange interface with 8 concrete implementations (defined in +// internal/serve/graphql/schema/statechange.graphqls). Each type has only the fields relevant to that +// specific state change category, providing strong typing and clean API contracts. +// +// 3. ADAPTER LAYER: Separate "Model" structs (PaymentStateChangeModel, etc.) that embed the unified +// StateChange struct. These act as adapters, allowing gqlgen to generate proper resolvers while +// maintaining the single-table database design. +// +// The conversion between layers happens in internal/serve/graphql/resolvers/utils.go:convertStateChangeTypes(), +// which maps StateChangeCategory values to appropriate concrete GraphQL types. +// +// This design follows the adapter pattern, enabling: +// - Efficient database storage (single table, unified queries) +// - Strong GraphQL typing (interface with specific implementations) +// - Clean separation of concerns (database vs API representations) +// - Type safety in resolver generation (gqlgen requirements satisfied) +// +// See also: +// - internal/serve/graphql/schema/statechange.graphqls (GraphQL interface & types) +// - gqlgen.yml (Go type mappings for GraphQL generation) +// - internal/serve/graphql/resolvers/utils.go (conversion logic) package types import ( @@ -149,22 +180,22 @@ type OperationWithStateChangeID struct { StateChangeID string `db:"state_change_id"` } +type AccountWithStateChangeID struct { + Account + StateChangeID string `db:"state_change_id"` +} + type StateChangeCategory string const ( StateChangeCategoryBalance StateChangeCategory = "BALANCE" StateChangeCategoryAccount StateChangeCategory = "ACCOUNT" - StateChangeCategorySequence StateChangeCategory = "SEQUENCE" StateChangeCategorySigner StateChangeCategory = "SIGNER" StateChangeCategorySignatureThreshold StateChangeCategory = "SIGNATURE_THRESHOLD" StateChangeCategoryMetadata StateChangeCategory = "METADATA" StateChangeCategoryFlags StateChangeCategory = "FLAGS" - StateChangeCategoryLiability StateChangeCategory = "LIABILITY" StateChangeCategoryTrustline StateChangeCategory = "TRUSTLINE" - StateChangeCategorySponsorship StateChangeCategory = "SPONSORSHIP" - StateChangeCategoryUnsupported StateChangeCategory = "UNSUPPORTED" - StateChangeCategoryAllowance StateChangeCategory = "ALLOWANCE" - StateChangeCategoryContract StateChangeCategory = "CONTRACT" + StateChangeCategoryReserves StateChangeCategory = "RESERVES" StateChangeCategoryBalanceAuthorization StateChangeCategory = "BALANCE_AUTHORIZATION" StateChangeCategoryAuthorization StateChangeCategory = "AUTHORIZATION" ) @@ -172,29 +203,52 @@ const ( type StateChangeReason string const ( - StateChangeReasonCreate StateChangeReason = "CREATE" - StateChangeReasonMerge StateChangeReason = "MERGE" - StateChangeReasonSequenceBump StateChangeReason = "BUMP" - StateChangeReasonDebit StateChangeReason = "DEBIT" - StateChangeReasonCredit StateChangeReason = "CREDIT" - StateChangeReasonMint StateChangeReason = "MINT" - StateChangeReasonBurn StateChangeReason = "BURN" - StateChangeReasonAdd StateChangeReason = "ADD" - StateChangeReasonRemove StateChangeReason = "REMOVE" - StateChangeReasonUpdate StateChangeReason = "UPDATE" - StateChangeReasonLow StateChangeReason = "LOW" - StateChangeReasonMedium StateChangeReason = "MEDIUM" - StateChangeReasonHigh StateChangeReason = "HIGH" - StateChangeReasonHomeDomain StateChangeReason = "HOME_DOMAIN" - StateChangeReasonSet StateChangeReason = "SET" - StateChangeReasonClear StateChangeReason = "CLEAR" - StateChangeReasonSell StateChangeReason = "SELL" - StateChangeReasonBuy StateChangeReason = "BUY" - StateChangeReasonDataEntry StateChangeReason = "DATA_ENTRY" - StateChangeReasonConsume StateChangeReason = "CONSUME" - StateChangeReasonInvoke StateChangeReason = "INVOKE" + StateChangeReasonCreate StateChangeReason = "CREATE" + StateChangeReasonMerge StateChangeReason = "MERGE" + StateChangeReasonDebit StateChangeReason = "DEBIT" + StateChangeReasonCredit StateChangeReason = "CREDIT" + StateChangeReasonMint StateChangeReason = "MINT" + StateChangeReasonBurn StateChangeReason = "BURN" + StateChangeReasonAdd StateChangeReason = "ADD" + StateChangeReasonRemove StateChangeReason = "REMOVE" + StateChangeReasonUpdate StateChangeReason = "UPDATE" + StateChangeReasonLow StateChangeReason = "LOW" + StateChangeReasonMedium StateChangeReason = "MEDIUM" + StateChangeReasonHigh StateChangeReason = "HIGH" + StateChangeReasonHomeDomain StateChangeReason = "HOME_DOMAIN" + StateChangeReasonSet StateChangeReason = "SET" + StateChangeReasonClear StateChangeReason = "CLEAR" + StateChangeReasonDataEntry StateChangeReason = "DATA_ENTRY" + StateChangeReasonSponsor StateChangeReason = "SPONSOR" + StateChangeReasonUnsponsor StateChangeReason = "UNSPONSOR" ) +// StateChange represents a unified database model for all types of blockchain state changes. +// +// DESIGN RATIONALE: +// This single struct contains all possible fields for any state change type, allowing efficient +// storage in one database table. Most fields are nullable since each state change category only +// uses a subset of the available fields. +// +// FIELD USAGE BY CATEGORY: +// - Payment changes (CREDIT/DEBIT/MINT/BURN): TokenID, Amount, ClaimableBalanceID, LiquidityPoolID +// - Liability changes: TokenID, Amount, OfferID +// - Sponsorship changes: SponsoredAccountID, SponsorAccountID +// - Signer changes: SignerAccountID, SignerWeights +// - Threshold changes: Thresholds +// - Flag changes: Flags +// - Metadata changes: KeyValue +// - Allowance changes: SpenderAccountID +// +// The StateChangeCategory field determines which subset of fields are populated and relevant. +// This approach enables: +// - Single table queries across all state change types +// - Efficient database storage with minimal schema complexity +// - Unified handling in indexer code +// - Easy conversion to strongly-typed GraphQL responses +// +// See convertStateChangeTypes() in internal/serve/graphql/resolvers/utils.go for the mapping +// logic that converts this unified representation to specific GraphQL types. type StateChange struct { ToID int64 `json:"toId,omitempty" db:"to_id"` StateChangeOrder int64 `json:"stateChangeOrder,omitempty" db:"state_change_order"` @@ -241,6 +295,10 @@ type StateChangeCursor struct { StateChangeOrder int64 `db:"cursor_state_change_order"` } +type StateChangeCursorGetter interface { + GetCursor() StateChangeCursor +} + type NullableJSONB map[string]any // NullableJSON represents a nullable JSON array of strings @@ -324,3 +382,161 @@ func (n NullableJSONB) Value() (driver.Value, error) { return bytes, nil } + +// BaseStateChange interface implementation methods +// +// These methods implement the GraphQL BaseStateChange interface defined in +// internal/serve/graphql/schema/statechange.graphqls. They provide a common contract +// that all state change types must satisfy, enabling GraphQL interface resolution. +// +// GQLGEN REQUIREMENT: +// The IsBaseStateChange() method is required by gqlgen to identify types that implement +// the BaseStateChange interface. This is used during GraphQL type resolution to determine +// which concrete type to return (PaymentStateChange, LiabilityStateChange, etc.). +// +// INTERFACE METHODS: +// The remaining Get* methods correspond to the shared fields defined in the GraphQL +// BaseStateChange interface. They ensure consistent access patterns across all concrete +// state change implementations. + +// IsBaseStateChange marks this type as implementing the GraphQL BaseStateChange interface. +// Required by gqlgen for interface type resolution. +func (sc StateChange) IsBaseStateChange() {} + +// GetType returns the category of this state change for GraphQL 'type' field. +// This method satisfies the GraphQL BaseStateChange interface requirement. +func (sc StateChange) GetType() StateChangeCategory { + return sc.StateChangeCategory +} + +// GetReason returns the reason for this state change for GraphQL 'reason' field. +// This method satisfies the GraphQL BaseStateChange interface requirement. +func (sc StateChange) GetReason() StateChangeReason { + return *sc.StateChangeReason +} + +// GetIngestedAt returns when this state change was processed by the indexer. +func (sc StateChange) GetIngestedAt() time.Time { + return sc.IngestedAt +} + +// GetLedgerCreatedAt returns when the ledger containing this state change was created. +func (sc StateChange) GetLedgerCreatedAt() time.Time { + return sc.LedgerCreatedAt +} + +// GetLedgerNumber returns the ledger sequence number where this state change occurred. +func (sc StateChange) GetLedgerNumber() uint32 { + return sc.LedgerNumber +} + +// GetAccount returns the account affected by this state change. +// This relationship is resolved via GraphQL resolver, not direct database join. +func (sc StateChange) GetAccount() *Account { + return sc.Account +} + +// GetOperation returns the operation that caused this state change. +// May be nil for fee-related state changes that don't have associated operations. +func (sc StateChange) GetOperation() *Operation { + return sc.Operation +} + +// GetTransaction returns the transaction containing the operation that caused this state change. +func (sc StateChange) GetTransaction() *Transaction { + return sc.Transaction +} + +// GetCursor returns the cursor for this state change. +func (sc StateChange) GetCursor() StateChangeCursor { + return StateChangeCursor{ + ToID: sc.ToID, + StateChangeOrder: sc.StateChangeOrder, + } +} + +// GraphQL Adapter Model Structs +// +// These structs act as type adapters between the unified database StateChange model +// and the strongly-typed GraphQL interface system. Each represents a specific concrete +// implementation of the BaseStateChange interface. +// +// WHY SEPARATE STRUCTS ARE NEEDED: +// +// 1. GQLGEN REQUIREMENT: gqlgen needs distinct Go types for each GraphQL type to generate +// proper resolvers. Without these, gqlgen cannot differentiate between PaymentStateChange +// and LiabilityStateChange in the generated code. +// +// 2. GRAPHQL INTERFACE PATTERN: GraphQL interfaces require concrete implementations with +// potentially different field sets. While our database uses one unified schema, GraphQL +// clients expect type-specific fields (e.g., only PaymentStateChange should expose +// claimableBalanceId, only SponsorshipStateChange should expose sponsorAccountId). +// +// 3. TYPE SAFETY: These distinct types enable compile-time type checking in resolvers +// and prevent field access errors at runtime. +// +// 4. RESOLVER GENERATION: gqlgen uses these types to generate type-specific resolver methods +// and marshaling logic for GraphQL responses. +// +// USAGE PATTERN: +// - Database queries return StateChange structs +// - convertStateChangeTypes() in resolvers/utils.go wraps them in appropriate model structs +// - GraphQL resolvers use the model struct's embedded StateChange for field access +// - gqlgen generates type-specific response marshaling based on the wrapper type +// +// This approach maintains the single-table database efficiency while satisfying GraphQL's +// strong typing requirements. See gqlgen.yml lines 170-196 for the GraphQL-to-Go type mappings. + +// StandardBalanceStateChangeModel represents payment-related state changes from classic/SAC/SEP41 balances(CREDIT/DEBIT/MINT/BURN). +// Maps to BalanceStateChange in GraphQL schema. Exposes tokenId, amount. +type StandardBalanceStateChangeModel struct { + StateChange +} + +// AccountStateChangeModel represents account state changes. +// Maps to AccountStateChange in GraphQL schema. Exposes tokenId, amount. +type AccountStateChangeModel struct { + StateChange +} + +// SignerStateChangeModel represents account signer changes. +// Maps to SignerStateChange in GraphQL schema. Exposes signerAccountId, signerWeights. +type SignerStateChangeModel struct { + StateChange +} + +// SignerThresholdsStateChangeModel represents signature threshold changes. +// Maps to SignerThresholdsStateChange in GraphQL schema. Exposes thresholds. +type SignerThresholdsStateChangeModel struct { + StateChange +} + +// MetadataStateChangeModel represents account data entry changes. +// Maps to MetadataStateChange in GraphQL schema. Exposes keyValue. +type MetadataStateChangeModel struct { + StateChange +} + +// FlagsStateChangeModel represents account and trustline flag changes. +// Maps to FlagsStateChange in GraphQL schema. Exposes flags array. +type FlagsStateChangeModel struct { + StateChange +} + +// TrustlineStateChangeModel represents trustline changes. +// Maps to TrustlineStateChange in GraphQL schema. Exposes limit. +type TrustlineStateChangeModel struct { + StateChange +} + +// BalanceAuthorizationStateChangeModel represents balance authorization changes. +// Maps to BalanceAuthorizationStateChange in GraphQL schema. Exposes flags array. +type BalanceAuthorizationStateChangeModel struct { + StateChange +} + +// ReservesStateChangeModel represents account reserves sponsorship changes. +// Maps to ReservesStateChange in GraphQL schema. Exposes sponsoredAccountId, sponsorAccountId. +type ReservesStateChangeModel struct { + StateChange +} diff --git a/internal/serve/graphql/dataloaders/account_loaders.go b/internal/serve/graphql/dataloaders/account_loaders.go index 3ee69c21..d072f74a 100644 --- a/internal/serve/graphql/dataloaders/account_loaders.go +++ b/internal/serve/graphql/dataloaders/account_loaders.go @@ -2,6 +2,7 @@ package dataloaders import ( "context" + "fmt" "github.com/vikstrous/dataloadgen" @@ -10,9 +11,10 @@ import ( ) type AccountColumnsKey struct { - TxHash string - OperationID int64 - Columns string + TxHash string + OperationID int64 + StateChangeID string + Columns string } // accountsByTxHashLoader creates a dataloader for fetching accounts by transaction hash @@ -64,3 +66,32 @@ func accountsByOperationIDLoader(models *data.Models) *dataloadgen.Loader[Accoun }, ) } + +// accountByStateChangeIDLoader creates a dataloader for fetching accounts by state change ID +// This prevents N+1 queries when multiple state changes request their accounts +// The loader batches multiple state change IDs into a single database query +func accountByStateChangeIDLoader(models *data.Models) *dataloadgen.Loader[AccountColumnsKey, *types.Account] { + return newOneToOneLoader( + func(ctx context.Context, keys []AccountColumnsKey) ([]*types.AccountWithStateChangeID, error) { + columns := keys[0].Columns + scIDs := make([]string, len(keys)) + for i, key := range keys { + scIDs[i] = key.StateChangeID + } + scToIDs, scOrders, err := parseStateChangeIDs(scIDs) + if err != nil { + return nil, fmt.Errorf("parsing state change IDs: %w", err) + } + return models.Account.BatchGetByStateChangeIDs(ctx, scToIDs, scOrders, columns) + }, + func(item *types.AccountWithStateChangeID) string { + return item.StateChangeID + }, + func(key AccountColumnsKey) string { + return key.StateChangeID + }, + func(item *types.AccountWithStateChangeID) types.Account { + return item.Account + }, + ) +} diff --git a/internal/serve/graphql/dataloaders/loaders.go b/internal/serve/graphql/dataloaders/loaders.go index 4fe8e250..bb3df52c 100644 --- a/internal/serve/graphql/dataloaders/loaders.go +++ b/internal/serve/graphql/dataloaders/loaders.go @@ -48,6 +48,10 @@ type Dataloaders struct { // TransactionByStateChangeIDLoader batches requests for transactions by state change ID // Used by StateChange.transaction field resolver to prevent N+1 queries TransactionByStateChangeIDLoader *dataloadgen.Loader[TransactionColumnsKey, *types.Transaction] + + // AccountByStateChangeIDLoader batches requests for accounts by state change ID + // Used by StateChange.account field resolver to prevent N+1 queries + AccountByStateChangeIDLoader *dataloadgen.Loader[AccountColumnsKey, *types.Account] } // NewDataloaders creates a new instance of all dataloaders @@ -64,6 +68,7 @@ func NewDataloaders(models *data.Models) *Dataloaders { StateChangesByOperationIDLoader: stateChangesByOperationIDLoader(models), AccountsByTxHashLoader: accountsByTxHashLoader(models), AccountsByOperationIDLoader: accountsByOperationIDLoader(models), + AccountByStateChangeIDLoader: accountByStateChangeIDLoader(models), } } diff --git a/internal/serve/graphql/generated/generated.go b/internal/serve/graphql/generated/generated.go index dc16122e..6500bbec 100644 --- a/internal/serve/graphql/generated/generated.go +++ b/internal/serve/graphql/generated/generated.go @@ -42,11 +42,19 @@ type Config struct { type ResolverRoot interface { Account() AccountResolver + AccountChange() AccountChangeResolver + BalanceAuthorizationChange() BalanceAuthorizationChangeResolver + FlagsChange() FlagsChangeResolver + MetadataChange() MetadataChangeResolver Mutation() MutationResolver Operation() OperationResolver Query() QueryResolver - StateChange() StateChangeResolver + ReservesChange() ReservesChangeResolver + SignerChange() SignerChangeResolver + SignerThresholdsChange() SignerThresholdsChangeResolver + StandardBalanceChange() StandardBalanceChangeResolver Transaction() TransactionResolver + TrustlineChange() TrustlineChangeResolver } type DirectiveRoot struct { @@ -60,6 +68,32 @@ type ComplexityRoot struct { Transactions func(childComplexity int, first *int32, after *string, last *int32, before *string) int } + AccountChange struct { + Account func(childComplexity int) int + Amount func(childComplexity int) int + IngestedAt func(childComplexity int) int + LedgerCreatedAt func(childComplexity int) int + LedgerNumber func(childComplexity int) int + Operation func(childComplexity int) int + Reason func(childComplexity int) int + TokenID func(childComplexity int) int + Transaction func(childComplexity int) int + Type func(childComplexity int) int + } + + BalanceAuthorizationChange struct { + Account func(childComplexity int) int + Flags func(childComplexity int) int + IngestedAt func(childComplexity int) int + KeyValue func(childComplexity int) int + LedgerCreatedAt func(childComplexity int) int + LedgerNumber func(childComplexity int) int + Operation func(childComplexity int) int + Reason func(childComplexity int) int + Transaction func(childComplexity int) int + Type func(childComplexity int) int + } + BuildTransactionPayload struct { Success func(childComplexity int) int TransactionXdr func(childComplexity int) int @@ -70,6 +104,30 @@ type ComplexityRoot struct { Success func(childComplexity int) int } + FlagsChange struct { + Account func(childComplexity int) int + Flags func(childComplexity int) int + IngestedAt func(childComplexity int) int + LedgerCreatedAt func(childComplexity int) int + LedgerNumber func(childComplexity int) int + Operation func(childComplexity int) int + Reason func(childComplexity int) int + Transaction func(childComplexity int) int + Type func(childComplexity int) int + } + + MetadataChange struct { + Account func(childComplexity int) int + IngestedAt func(childComplexity int) int + KeyValue func(childComplexity int) int + LedgerCreatedAt func(childComplexity int) int + LedgerNumber func(childComplexity int) int + Operation func(childComplexity int) int + Reason func(childComplexity int) int + Transaction func(childComplexity int) int + Type func(childComplexity int) int + } + Mutation struct { BuildTransaction func(childComplexity int, input BuildTransactionInput) int DeregisterAccount func(childComplexity int, input DeregisterAccountInput) int @@ -119,28 +177,55 @@ type ComplexityRoot struct { Success func(childComplexity int) int } - StateChange struct { - AccountID func(childComplexity int) int - Amount func(childComplexity int) int - ClaimableBalanceID func(childComplexity int) int - Flags func(childComplexity int) int - IngestedAt func(childComplexity int) int - KeyValue func(childComplexity int) int - LedgerCreatedAt func(childComplexity int) int - LedgerNumber func(childComplexity int) int - LiquidityPoolID func(childComplexity int) int - OfferID func(childComplexity int) int - Operation func(childComplexity int) int - SignerAccountID func(childComplexity int) int - SignerWeights func(childComplexity int) int - SpenderAccountID func(childComplexity int) int - SponsorAccountID func(childComplexity int) int - SponsoredAccountID func(childComplexity int) int - StateChangeCategory func(childComplexity int) int - StateChangeReason func(childComplexity int) int - Thresholds func(childComplexity int) int - TokenID func(childComplexity int) int - Transaction func(childComplexity int) int + ReservesChange struct { + Account func(childComplexity int) int + IngestedAt func(childComplexity int) int + LedgerCreatedAt func(childComplexity int) int + LedgerNumber func(childComplexity int) int + Operation func(childComplexity int) int + Reason func(childComplexity int) int + SponsorAddress func(childComplexity int) int + SponsoredAddress func(childComplexity int) int + Transaction func(childComplexity int) int + Type func(childComplexity int) int + } + + SignerChange struct { + Account func(childComplexity int) int + IngestedAt func(childComplexity int) int + LedgerCreatedAt func(childComplexity int) int + LedgerNumber func(childComplexity int) int + Operation func(childComplexity int) int + Reason func(childComplexity int) int + SignerAddress func(childComplexity int) int + SignerWeights func(childComplexity int) int + Transaction func(childComplexity int) int + Type func(childComplexity int) int + } + + SignerThresholdsChange struct { + Account func(childComplexity int) int + IngestedAt func(childComplexity int) int + LedgerCreatedAt func(childComplexity int) int + LedgerNumber func(childComplexity int) int + Operation func(childComplexity int) int + Reason func(childComplexity int) int + Thresholds func(childComplexity int) int + Transaction func(childComplexity int) int + Type func(childComplexity int) int + } + + StandardBalanceChange struct { + Account func(childComplexity int) int + Amount func(childComplexity int) int + IngestedAt func(childComplexity int) int + LedgerCreatedAt func(childComplexity int) int + LedgerNumber func(childComplexity int) int + Operation func(childComplexity int) int + Reason func(childComplexity int) int + TokenID func(childComplexity int) int + Transaction func(childComplexity int) int + Type func(childComplexity int) int } StateChangeConnection struct { @@ -175,6 +260,18 @@ type ComplexityRoot struct { Cursor func(childComplexity int) int Node func(childComplexity int) int } + + TrustlineChange struct { + Account func(childComplexity int) int + IngestedAt func(childComplexity int) int + LedgerCreatedAt func(childComplexity int) int + LedgerNumber func(childComplexity int) int + Limit func(childComplexity int) int + Operation func(childComplexity int) int + Reason func(childComplexity int) int + Transaction func(childComplexity int) int + Type func(childComplexity int) int + } } type AccountResolver interface { @@ -183,6 +280,44 @@ type AccountResolver interface { Operations(ctx context.Context, obj *types.Account, first *int32, after *string, last *int32, before *string) (*OperationConnection, error) StateChanges(ctx context.Context, obj *types.Account, first *int32, after *string, last *int32, before *string) (*StateChangeConnection, error) } +type AccountChangeResolver interface { + Type(ctx context.Context, obj *types.AccountStateChangeModel) (types.StateChangeCategory, error) + Reason(ctx context.Context, obj *types.AccountStateChangeModel) (types.StateChangeReason, error) + + Account(ctx context.Context, obj *types.AccountStateChangeModel) (*types.Account, error) + Operation(ctx context.Context, obj *types.AccountStateChangeModel) (*types.Operation, error) + Transaction(ctx context.Context, obj *types.AccountStateChangeModel) (*types.Transaction, error) + TokenID(ctx context.Context, obj *types.AccountStateChangeModel) (string, error) + Amount(ctx context.Context, obj *types.AccountStateChangeModel) (string, error) +} +type BalanceAuthorizationChangeResolver interface { + Type(ctx context.Context, obj *types.BalanceAuthorizationStateChangeModel) (types.StateChangeCategory, error) + Reason(ctx context.Context, obj *types.BalanceAuthorizationStateChangeModel) (types.StateChangeReason, error) + + Account(ctx context.Context, obj *types.BalanceAuthorizationStateChangeModel) (*types.Account, error) + Operation(ctx context.Context, obj *types.BalanceAuthorizationStateChangeModel) (*types.Operation, error) + Transaction(ctx context.Context, obj *types.BalanceAuthorizationStateChangeModel) (*types.Transaction, error) + Flags(ctx context.Context, obj *types.BalanceAuthorizationStateChangeModel) ([]string, error) + KeyValue(ctx context.Context, obj *types.BalanceAuthorizationStateChangeModel) (*string, error) +} +type FlagsChangeResolver interface { + Type(ctx context.Context, obj *types.FlagsStateChangeModel) (types.StateChangeCategory, error) + Reason(ctx context.Context, obj *types.FlagsStateChangeModel) (types.StateChangeReason, error) + + Account(ctx context.Context, obj *types.FlagsStateChangeModel) (*types.Account, error) + Operation(ctx context.Context, obj *types.FlagsStateChangeModel) (*types.Operation, error) + Transaction(ctx context.Context, obj *types.FlagsStateChangeModel) (*types.Transaction, error) + Flags(ctx context.Context, obj *types.FlagsStateChangeModel) ([]string, error) +} +type MetadataChangeResolver interface { + Type(ctx context.Context, obj *types.MetadataStateChangeModel) (types.StateChangeCategory, error) + Reason(ctx context.Context, obj *types.MetadataStateChangeModel) (types.StateChangeReason, error) + + Account(ctx context.Context, obj *types.MetadataStateChangeModel) (*types.Account, error) + Operation(ctx context.Context, obj *types.MetadataStateChangeModel) (*types.Operation, error) + Transaction(ctx context.Context, obj *types.MetadataStateChangeModel) (*types.Transaction, error) + KeyValue(ctx context.Context, obj *types.MetadataStateChangeModel) (string, error) +} type MutationResolver interface { RegisterAccount(ctx context.Context, input RegisterAccountInput) (*RegisterAccountPayload, error) DeregisterAccount(ctx context.Context, input DeregisterAccountInput) (*DeregisterAccountPayload, error) @@ -201,28 +336,59 @@ type QueryResolver interface { OperationByID(ctx context.Context, id int64) (*types.Operation, error) StateChanges(ctx context.Context, first *int32, after *string, last *int32, before *string) (*StateChangeConnection, error) } -type StateChangeResolver interface { - TokenID(ctx context.Context, obj *types.StateChange) (*string, error) - Amount(ctx context.Context, obj *types.StateChange) (*string, error) - ClaimableBalanceID(ctx context.Context, obj *types.StateChange) (*string, error) - LiquidityPoolID(ctx context.Context, obj *types.StateChange) (*string, error) - OfferID(ctx context.Context, obj *types.StateChange) (*string, error) - SignerAccountID(ctx context.Context, obj *types.StateChange) (*string, error) - SpenderAccountID(ctx context.Context, obj *types.StateChange) (*string, error) - SponsoredAccountID(ctx context.Context, obj *types.StateChange) (*string, error) - SponsorAccountID(ctx context.Context, obj *types.StateChange) (*string, error) - SignerWeights(ctx context.Context, obj *types.StateChange) (*string, error) - Thresholds(ctx context.Context, obj *types.StateChange) (*string, error) - Flags(ctx context.Context, obj *types.StateChange) ([]string, error) - KeyValue(ctx context.Context, obj *types.StateChange) (*string, error) - Operation(ctx context.Context, obj *types.StateChange) (*types.Operation, error) - Transaction(ctx context.Context, obj *types.StateChange) (*types.Transaction, error) +type ReservesChangeResolver interface { + Type(ctx context.Context, obj *types.ReservesStateChangeModel) (types.StateChangeCategory, error) + Reason(ctx context.Context, obj *types.ReservesStateChangeModel) (types.StateChangeReason, error) + + Account(ctx context.Context, obj *types.ReservesStateChangeModel) (*types.Account, error) + Operation(ctx context.Context, obj *types.ReservesStateChangeModel) (*types.Operation, error) + Transaction(ctx context.Context, obj *types.ReservesStateChangeModel) (*types.Transaction, error) + SponsoredAddress(ctx context.Context, obj *types.ReservesStateChangeModel) (*string, error) + SponsorAddress(ctx context.Context, obj *types.ReservesStateChangeModel) (*string, error) +} +type SignerChangeResolver interface { + Type(ctx context.Context, obj *types.SignerStateChangeModel) (types.StateChangeCategory, error) + Reason(ctx context.Context, obj *types.SignerStateChangeModel) (types.StateChangeReason, error) + + Account(ctx context.Context, obj *types.SignerStateChangeModel) (*types.Account, error) + Operation(ctx context.Context, obj *types.SignerStateChangeModel) (*types.Operation, error) + Transaction(ctx context.Context, obj *types.SignerStateChangeModel) (*types.Transaction, error) + SignerAddress(ctx context.Context, obj *types.SignerStateChangeModel) (*string, error) + SignerWeights(ctx context.Context, obj *types.SignerStateChangeModel) (*string, error) +} +type SignerThresholdsChangeResolver interface { + Type(ctx context.Context, obj *types.SignerThresholdsStateChangeModel) (types.StateChangeCategory, error) + Reason(ctx context.Context, obj *types.SignerThresholdsStateChangeModel) (types.StateChangeReason, error) + + Account(ctx context.Context, obj *types.SignerThresholdsStateChangeModel) (*types.Account, error) + Operation(ctx context.Context, obj *types.SignerThresholdsStateChangeModel) (*types.Operation, error) + Transaction(ctx context.Context, obj *types.SignerThresholdsStateChangeModel) (*types.Transaction, error) + Thresholds(ctx context.Context, obj *types.SignerThresholdsStateChangeModel) (string, error) +} +type StandardBalanceChangeResolver interface { + Type(ctx context.Context, obj *types.StandardBalanceStateChangeModel) (types.StateChangeCategory, error) + Reason(ctx context.Context, obj *types.StandardBalanceStateChangeModel) (types.StateChangeReason, error) + + Account(ctx context.Context, obj *types.StandardBalanceStateChangeModel) (*types.Account, error) + Operation(ctx context.Context, obj *types.StandardBalanceStateChangeModel) (*types.Operation, error) + Transaction(ctx context.Context, obj *types.StandardBalanceStateChangeModel) (*types.Transaction, error) + TokenID(ctx context.Context, obj *types.StandardBalanceStateChangeModel) (string, error) + Amount(ctx context.Context, obj *types.StandardBalanceStateChangeModel) (string, error) } type TransactionResolver interface { Operations(ctx context.Context, obj *types.Transaction, first *int32, after *string, last *int32, before *string) (*OperationConnection, error) Accounts(ctx context.Context, obj *types.Transaction) ([]*types.Account, error) StateChanges(ctx context.Context, obj *types.Transaction, first *int32, after *string, last *int32, before *string) (*StateChangeConnection, error) } +type TrustlineChangeResolver interface { + Type(ctx context.Context, obj *types.TrustlineStateChangeModel) (types.StateChangeCategory, error) + Reason(ctx context.Context, obj *types.TrustlineStateChangeModel) (types.StateChangeReason, error) + + Account(ctx context.Context, obj *types.TrustlineStateChangeModel) (*types.Account, error) + Operation(ctx context.Context, obj *types.TrustlineStateChangeModel) (*types.Operation, error) + Transaction(ctx context.Context, obj *types.TrustlineStateChangeModel) (*types.Transaction, error) + Limit(ctx context.Context, obj *types.TrustlineStateChangeModel) (string, error) +} type executableSchema struct { schema *ast.Schema @@ -286,6 +452,146 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin return e.complexity.Account.Transactions(childComplexity, args["first"].(*int32), args["after"].(*string), args["last"].(*int32), args["before"].(*string)), true + case "AccountChange.account": + if e.complexity.AccountChange.Account == nil { + break + } + + return e.complexity.AccountChange.Account(childComplexity), true + + case "AccountChange.amount": + if e.complexity.AccountChange.Amount == nil { + break + } + + return e.complexity.AccountChange.Amount(childComplexity), true + + case "AccountChange.ingestedAt": + if e.complexity.AccountChange.IngestedAt == nil { + break + } + + return e.complexity.AccountChange.IngestedAt(childComplexity), true + + case "AccountChange.ledgerCreatedAt": + if e.complexity.AccountChange.LedgerCreatedAt == nil { + break + } + + return e.complexity.AccountChange.LedgerCreatedAt(childComplexity), true + + case "AccountChange.ledgerNumber": + if e.complexity.AccountChange.LedgerNumber == nil { + break + } + + return e.complexity.AccountChange.LedgerNumber(childComplexity), true + + case "AccountChange.operation": + if e.complexity.AccountChange.Operation == nil { + break + } + + return e.complexity.AccountChange.Operation(childComplexity), true + + case "AccountChange.reason": + if e.complexity.AccountChange.Reason == nil { + break + } + + return e.complexity.AccountChange.Reason(childComplexity), true + + case "AccountChange.tokenId": + if e.complexity.AccountChange.TokenID == nil { + break + } + + return e.complexity.AccountChange.TokenID(childComplexity), true + + case "AccountChange.transaction": + if e.complexity.AccountChange.Transaction == nil { + break + } + + return e.complexity.AccountChange.Transaction(childComplexity), true + + case "AccountChange.type": + if e.complexity.AccountChange.Type == nil { + break + } + + return e.complexity.AccountChange.Type(childComplexity), true + + case "BalanceAuthorizationChange.account": + if e.complexity.BalanceAuthorizationChange.Account == nil { + break + } + + return e.complexity.BalanceAuthorizationChange.Account(childComplexity), true + + case "BalanceAuthorizationChange.flags": + if e.complexity.BalanceAuthorizationChange.Flags == nil { + break + } + + return e.complexity.BalanceAuthorizationChange.Flags(childComplexity), true + + case "BalanceAuthorizationChange.ingestedAt": + if e.complexity.BalanceAuthorizationChange.IngestedAt == nil { + break + } + + return e.complexity.BalanceAuthorizationChange.IngestedAt(childComplexity), true + + case "BalanceAuthorizationChange.keyValue": + if e.complexity.BalanceAuthorizationChange.KeyValue == nil { + break + } + + return e.complexity.BalanceAuthorizationChange.KeyValue(childComplexity), true + + case "BalanceAuthorizationChange.ledgerCreatedAt": + if e.complexity.BalanceAuthorizationChange.LedgerCreatedAt == nil { + break + } + + return e.complexity.BalanceAuthorizationChange.LedgerCreatedAt(childComplexity), true + + case "BalanceAuthorizationChange.ledgerNumber": + if e.complexity.BalanceAuthorizationChange.LedgerNumber == nil { + break + } + + return e.complexity.BalanceAuthorizationChange.LedgerNumber(childComplexity), true + + case "BalanceAuthorizationChange.operation": + if e.complexity.BalanceAuthorizationChange.Operation == nil { + break + } + + return e.complexity.BalanceAuthorizationChange.Operation(childComplexity), true + + case "BalanceAuthorizationChange.reason": + if e.complexity.BalanceAuthorizationChange.Reason == nil { + break + } + + return e.complexity.BalanceAuthorizationChange.Reason(childComplexity), true + + case "BalanceAuthorizationChange.transaction": + if e.complexity.BalanceAuthorizationChange.Transaction == nil { + break + } + + return e.complexity.BalanceAuthorizationChange.Transaction(childComplexity), true + + case "BalanceAuthorizationChange.type": + if e.complexity.BalanceAuthorizationChange.Type == nil { + break + } + + return e.complexity.BalanceAuthorizationChange.Type(childComplexity), true + case "BuildTransactionPayload.success": if e.complexity.BuildTransactionPayload.Success == nil { break @@ -314,6 +620,132 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin return e.complexity.DeregisterAccountPayload.Success(childComplexity), true + case "FlagsChange.account": + if e.complexity.FlagsChange.Account == nil { + break + } + + return e.complexity.FlagsChange.Account(childComplexity), true + + case "FlagsChange.flags": + if e.complexity.FlagsChange.Flags == nil { + break + } + + return e.complexity.FlagsChange.Flags(childComplexity), true + + case "FlagsChange.ingestedAt": + if e.complexity.FlagsChange.IngestedAt == nil { + break + } + + return e.complexity.FlagsChange.IngestedAt(childComplexity), true + + case "FlagsChange.ledgerCreatedAt": + if e.complexity.FlagsChange.LedgerCreatedAt == nil { + break + } + + return e.complexity.FlagsChange.LedgerCreatedAt(childComplexity), true + + case "FlagsChange.ledgerNumber": + if e.complexity.FlagsChange.LedgerNumber == nil { + break + } + + return e.complexity.FlagsChange.LedgerNumber(childComplexity), true + + case "FlagsChange.operation": + if e.complexity.FlagsChange.Operation == nil { + break + } + + return e.complexity.FlagsChange.Operation(childComplexity), true + + case "FlagsChange.reason": + if e.complexity.FlagsChange.Reason == nil { + break + } + + return e.complexity.FlagsChange.Reason(childComplexity), true + + case "FlagsChange.transaction": + if e.complexity.FlagsChange.Transaction == nil { + break + } + + return e.complexity.FlagsChange.Transaction(childComplexity), true + + case "FlagsChange.type": + if e.complexity.FlagsChange.Type == nil { + break + } + + return e.complexity.FlagsChange.Type(childComplexity), true + + case "MetadataChange.account": + if e.complexity.MetadataChange.Account == nil { + break + } + + return e.complexity.MetadataChange.Account(childComplexity), true + + case "MetadataChange.ingestedAt": + if e.complexity.MetadataChange.IngestedAt == nil { + break + } + + return e.complexity.MetadataChange.IngestedAt(childComplexity), true + + case "MetadataChange.keyValue": + if e.complexity.MetadataChange.KeyValue == nil { + break + } + + return e.complexity.MetadataChange.KeyValue(childComplexity), true + + case "MetadataChange.ledgerCreatedAt": + if e.complexity.MetadataChange.LedgerCreatedAt == nil { + break + } + + return e.complexity.MetadataChange.LedgerCreatedAt(childComplexity), true + + case "MetadataChange.ledgerNumber": + if e.complexity.MetadataChange.LedgerNumber == nil { + break + } + + return e.complexity.MetadataChange.LedgerNumber(childComplexity), true + + case "MetadataChange.operation": + if e.complexity.MetadataChange.Operation == nil { + break + } + + return e.complexity.MetadataChange.Operation(childComplexity), true + + case "MetadataChange.reason": + if e.complexity.MetadataChange.Reason == nil { + break + } + + return e.complexity.MetadataChange.Reason(childComplexity), true + + case "MetadataChange.transaction": + if e.complexity.MetadataChange.Transaction == nil { + break + } + + return e.complexity.MetadataChange.Transaction(childComplexity), true + + case "MetadataChange.type": + if e.complexity.MetadataChange.Type == nil { + break + } + + return e.complexity.MetadataChange.Type(childComplexity), true + case "Mutation.buildTransaction": if e.complexity.Mutation.BuildTransaction == nil { break @@ -560,251 +992,377 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin return e.complexity.RegisterAccountPayload.Success(childComplexity), true - case "StateChange.accountId": - if e.complexity.StateChange.AccountID == nil { + case "ReservesChange.account": + if e.complexity.ReservesChange.Account == nil { break } - return e.complexity.StateChange.AccountID(childComplexity), true + return e.complexity.ReservesChange.Account(childComplexity), true - case "StateChange.amount": - if e.complexity.StateChange.Amount == nil { + case "ReservesChange.ingestedAt": + if e.complexity.ReservesChange.IngestedAt == nil { break } - return e.complexity.StateChange.Amount(childComplexity), true + return e.complexity.ReservesChange.IngestedAt(childComplexity), true - case "StateChange.claimableBalanceId": - if e.complexity.StateChange.ClaimableBalanceID == nil { + case "ReservesChange.ledgerCreatedAt": + if e.complexity.ReservesChange.LedgerCreatedAt == nil { break } - return e.complexity.StateChange.ClaimableBalanceID(childComplexity), true + return e.complexity.ReservesChange.LedgerCreatedAt(childComplexity), true - case "StateChange.flags": - if e.complexity.StateChange.Flags == nil { + case "ReservesChange.ledgerNumber": + if e.complexity.ReservesChange.LedgerNumber == nil { break } - return e.complexity.StateChange.Flags(childComplexity), true + return e.complexity.ReservesChange.LedgerNumber(childComplexity), true - case "StateChange.ingestedAt": - if e.complexity.StateChange.IngestedAt == nil { + case "ReservesChange.operation": + if e.complexity.ReservesChange.Operation == nil { break } - return e.complexity.StateChange.IngestedAt(childComplexity), true + return e.complexity.ReservesChange.Operation(childComplexity), true - case "StateChange.keyValue": - if e.complexity.StateChange.KeyValue == nil { + case "ReservesChange.reason": + if e.complexity.ReservesChange.Reason == nil { break } - return e.complexity.StateChange.KeyValue(childComplexity), true + return e.complexity.ReservesChange.Reason(childComplexity), true - case "StateChange.ledgerCreatedAt": - if e.complexity.StateChange.LedgerCreatedAt == nil { + case "ReservesChange.sponsorAddress": + if e.complexity.ReservesChange.SponsorAddress == nil { break } - return e.complexity.StateChange.LedgerCreatedAt(childComplexity), true + return e.complexity.ReservesChange.SponsorAddress(childComplexity), true - case "StateChange.ledgerNumber": - if e.complexity.StateChange.LedgerNumber == nil { + case "ReservesChange.sponsoredAddress": + if e.complexity.ReservesChange.SponsoredAddress == nil { break } - return e.complexity.StateChange.LedgerNumber(childComplexity), true + return e.complexity.ReservesChange.SponsoredAddress(childComplexity), true - case "StateChange.liquidityPoolId": - if e.complexity.StateChange.LiquidityPoolID == nil { + case "ReservesChange.transaction": + if e.complexity.ReservesChange.Transaction == nil { break } - return e.complexity.StateChange.LiquidityPoolID(childComplexity), true + return e.complexity.ReservesChange.Transaction(childComplexity), true - case "StateChange.offerId": - if e.complexity.StateChange.OfferID == nil { + case "ReservesChange.type": + if e.complexity.ReservesChange.Type == nil { break } - return e.complexity.StateChange.OfferID(childComplexity), true + return e.complexity.ReservesChange.Type(childComplexity), true - case "StateChange.operation": - if e.complexity.StateChange.Operation == nil { + case "SignerChange.account": + if e.complexity.SignerChange.Account == nil { break } - return e.complexity.StateChange.Operation(childComplexity), true + return e.complexity.SignerChange.Account(childComplexity), true - case "StateChange.signerAccountId": - if e.complexity.StateChange.SignerAccountID == nil { + case "SignerChange.ingestedAt": + if e.complexity.SignerChange.IngestedAt == nil { break } - return e.complexity.StateChange.SignerAccountID(childComplexity), true + return e.complexity.SignerChange.IngestedAt(childComplexity), true - case "StateChange.signerWeights": - if e.complexity.StateChange.SignerWeights == nil { + case "SignerChange.ledgerCreatedAt": + if e.complexity.SignerChange.LedgerCreatedAt == nil { break } - return e.complexity.StateChange.SignerWeights(childComplexity), true + return e.complexity.SignerChange.LedgerCreatedAt(childComplexity), true - case "StateChange.spenderAccountId": - if e.complexity.StateChange.SpenderAccountID == nil { + case "SignerChange.ledgerNumber": + if e.complexity.SignerChange.LedgerNumber == nil { break } - return e.complexity.StateChange.SpenderAccountID(childComplexity), true + return e.complexity.SignerChange.LedgerNumber(childComplexity), true - case "StateChange.sponsorAccountId": - if e.complexity.StateChange.SponsorAccountID == nil { + case "SignerChange.operation": + if e.complexity.SignerChange.Operation == nil { break } - return e.complexity.StateChange.SponsorAccountID(childComplexity), true + return e.complexity.SignerChange.Operation(childComplexity), true - case "StateChange.sponsoredAccountId": - if e.complexity.StateChange.SponsoredAccountID == nil { + case "SignerChange.reason": + if e.complexity.SignerChange.Reason == nil { break } - return e.complexity.StateChange.SponsoredAccountID(childComplexity), true + return e.complexity.SignerChange.Reason(childComplexity), true - case "StateChange.stateChangeCategory": - if e.complexity.StateChange.StateChangeCategory == nil { + case "SignerChange.signerAddress": + if e.complexity.SignerChange.SignerAddress == nil { break } - return e.complexity.StateChange.StateChangeCategory(childComplexity), true + return e.complexity.SignerChange.SignerAddress(childComplexity), true - case "StateChange.stateChangeReason": - if e.complexity.StateChange.StateChangeReason == nil { + case "SignerChange.signerWeights": + if e.complexity.SignerChange.SignerWeights == nil { break } - return e.complexity.StateChange.StateChangeReason(childComplexity), true + return e.complexity.SignerChange.SignerWeights(childComplexity), true - case "StateChange.thresholds": - if e.complexity.StateChange.Thresholds == nil { + case "SignerChange.transaction": + if e.complexity.SignerChange.Transaction == nil { break } - return e.complexity.StateChange.Thresholds(childComplexity), true + return e.complexity.SignerChange.Transaction(childComplexity), true - case "StateChange.tokenId": - if e.complexity.StateChange.TokenID == nil { + case "SignerChange.type": + if e.complexity.SignerChange.Type == nil { break } - return e.complexity.StateChange.TokenID(childComplexity), true + return e.complexity.SignerChange.Type(childComplexity), true - case "StateChange.transaction": - if e.complexity.StateChange.Transaction == nil { + case "SignerThresholdsChange.account": + if e.complexity.SignerThresholdsChange.Account == nil { break } - return e.complexity.StateChange.Transaction(childComplexity), true + return e.complexity.SignerThresholdsChange.Account(childComplexity), true - case "StateChangeConnection.edges": - if e.complexity.StateChangeConnection.Edges == nil { + case "SignerThresholdsChange.ingestedAt": + if e.complexity.SignerThresholdsChange.IngestedAt == nil { break } - return e.complexity.StateChangeConnection.Edges(childComplexity), true + return e.complexity.SignerThresholdsChange.IngestedAt(childComplexity), true - case "StateChangeConnection.pageInfo": - if e.complexity.StateChangeConnection.PageInfo == nil { + case "SignerThresholdsChange.ledgerCreatedAt": + if e.complexity.SignerThresholdsChange.LedgerCreatedAt == nil { break } - return e.complexity.StateChangeConnection.PageInfo(childComplexity), true + return e.complexity.SignerThresholdsChange.LedgerCreatedAt(childComplexity), true - case "StateChangeEdge.cursor": - if e.complexity.StateChangeEdge.Cursor == nil { + case "SignerThresholdsChange.ledgerNumber": + if e.complexity.SignerThresholdsChange.LedgerNumber == nil { break } - return e.complexity.StateChangeEdge.Cursor(childComplexity), true + return e.complexity.SignerThresholdsChange.LedgerNumber(childComplexity), true - case "StateChangeEdge.node": - if e.complexity.StateChangeEdge.Node == nil { + case "SignerThresholdsChange.operation": + if e.complexity.SignerThresholdsChange.Operation == nil { break } - return e.complexity.StateChangeEdge.Node(childComplexity), true + return e.complexity.SignerThresholdsChange.Operation(childComplexity), true - case "Transaction.accounts": - if e.complexity.Transaction.Accounts == nil { + case "SignerThresholdsChange.reason": + if e.complexity.SignerThresholdsChange.Reason == nil { break } - return e.complexity.Transaction.Accounts(childComplexity), true + return e.complexity.SignerThresholdsChange.Reason(childComplexity), true - case "Transaction.envelopeXdr": - if e.complexity.Transaction.EnvelopeXDR == nil { + case "SignerThresholdsChange.thresholds": + if e.complexity.SignerThresholdsChange.Thresholds == nil { break } - return e.complexity.Transaction.EnvelopeXDR(childComplexity), true + return e.complexity.SignerThresholdsChange.Thresholds(childComplexity), true - case "Transaction.hash": - if e.complexity.Transaction.Hash == nil { + case "SignerThresholdsChange.transaction": + if e.complexity.SignerThresholdsChange.Transaction == nil { break } - return e.complexity.Transaction.Hash(childComplexity), true + return e.complexity.SignerThresholdsChange.Transaction(childComplexity), true - case "Transaction.ingestedAt": - if e.complexity.Transaction.IngestedAt == nil { + case "SignerThresholdsChange.type": + if e.complexity.SignerThresholdsChange.Type == nil { break } - return e.complexity.Transaction.IngestedAt(childComplexity), true + return e.complexity.SignerThresholdsChange.Type(childComplexity), true - case "Transaction.ledgerCreatedAt": - if e.complexity.Transaction.LedgerCreatedAt == nil { + case "StandardBalanceChange.account": + if e.complexity.StandardBalanceChange.Account == nil { break } - return e.complexity.Transaction.LedgerCreatedAt(childComplexity), true + return e.complexity.StandardBalanceChange.Account(childComplexity), true - case "Transaction.ledgerNumber": - if e.complexity.Transaction.LedgerNumber == nil { + case "StandardBalanceChange.amount": + if e.complexity.StandardBalanceChange.Amount == nil { break } - return e.complexity.Transaction.LedgerNumber(childComplexity), true + return e.complexity.StandardBalanceChange.Amount(childComplexity), true - case "Transaction.metaXdr": - if e.complexity.Transaction.MetaXDR == nil { + case "StandardBalanceChange.ingestedAt": + if e.complexity.StandardBalanceChange.IngestedAt == nil { break } - return e.complexity.Transaction.MetaXDR(childComplexity), true + return e.complexity.StandardBalanceChange.IngestedAt(childComplexity), true - case "Transaction.operations": - if e.complexity.Transaction.Operations == nil { + case "StandardBalanceChange.ledgerCreatedAt": + if e.complexity.StandardBalanceChange.LedgerCreatedAt == nil { break } - args, err := ec.field_Transaction_operations_args(ctx, rawArgs) - if err != nil { - return 0, false + return e.complexity.StandardBalanceChange.LedgerCreatedAt(childComplexity), true + + case "StandardBalanceChange.ledgerNumber": + if e.complexity.StandardBalanceChange.LedgerNumber == nil { + break } - return e.complexity.Transaction.Operations(childComplexity, args["first"].(*int32), args["after"].(*string), args["last"].(*int32), args["before"].(*string)), true + return e.complexity.StandardBalanceChange.LedgerNumber(childComplexity), true - case "Transaction.resultXdr": - if e.complexity.Transaction.ResultXDR == nil { + case "StandardBalanceChange.operation": + if e.complexity.StandardBalanceChange.Operation == nil { break } - return e.complexity.Transaction.ResultXDR(childComplexity), true + return e.complexity.StandardBalanceChange.Operation(childComplexity), true - case "Transaction.stateChanges": - if e.complexity.Transaction.StateChanges == nil { + case "StandardBalanceChange.reason": + if e.complexity.StandardBalanceChange.Reason == nil { + break + } + + return e.complexity.StandardBalanceChange.Reason(childComplexity), true + + case "StandardBalanceChange.tokenId": + if e.complexity.StandardBalanceChange.TokenID == nil { + break + } + + return e.complexity.StandardBalanceChange.TokenID(childComplexity), true + + case "StandardBalanceChange.transaction": + if e.complexity.StandardBalanceChange.Transaction == nil { + break + } + + return e.complexity.StandardBalanceChange.Transaction(childComplexity), true + + case "StandardBalanceChange.type": + if e.complexity.StandardBalanceChange.Type == nil { + break + } + + return e.complexity.StandardBalanceChange.Type(childComplexity), true + + case "StateChangeConnection.edges": + if e.complexity.StateChangeConnection.Edges == nil { + break + } + + return e.complexity.StateChangeConnection.Edges(childComplexity), true + + case "StateChangeConnection.pageInfo": + if e.complexity.StateChangeConnection.PageInfo == nil { + break + } + + return e.complexity.StateChangeConnection.PageInfo(childComplexity), true + + case "StateChangeEdge.cursor": + if e.complexity.StateChangeEdge.Cursor == nil { + break + } + + return e.complexity.StateChangeEdge.Cursor(childComplexity), true + + case "StateChangeEdge.node": + if e.complexity.StateChangeEdge.Node == nil { + break + } + + return e.complexity.StateChangeEdge.Node(childComplexity), true + + case "Transaction.accounts": + if e.complexity.Transaction.Accounts == nil { + break + } + + return e.complexity.Transaction.Accounts(childComplexity), true + + case "Transaction.envelopeXdr": + if e.complexity.Transaction.EnvelopeXDR == nil { + break + } + + return e.complexity.Transaction.EnvelopeXDR(childComplexity), true + + case "Transaction.hash": + if e.complexity.Transaction.Hash == nil { + break + } + + return e.complexity.Transaction.Hash(childComplexity), true + + case "Transaction.ingestedAt": + if e.complexity.Transaction.IngestedAt == nil { + break + } + + return e.complexity.Transaction.IngestedAt(childComplexity), true + + case "Transaction.ledgerCreatedAt": + if e.complexity.Transaction.LedgerCreatedAt == nil { + break + } + + return e.complexity.Transaction.LedgerCreatedAt(childComplexity), true + + case "Transaction.ledgerNumber": + if e.complexity.Transaction.LedgerNumber == nil { + break + } + + return e.complexity.Transaction.LedgerNumber(childComplexity), true + + case "Transaction.metaXdr": + if e.complexity.Transaction.MetaXDR == nil { + break + } + + return e.complexity.Transaction.MetaXDR(childComplexity), true + + case "Transaction.operations": + if e.complexity.Transaction.Operations == nil { + break + } + + args, err := ec.field_Transaction_operations_args(ctx, rawArgs) + if err != nil { + return 0, false + } + + return e.complexity.Transaction.Operations(childComplexity, args["first"].(*int32), args["after"].(*string), args["last"].(*int32), args["before"].(*string)), true + + case "Transaction.resultXdr": + if e.complexity.Transaction.ResultXDR == nil { + break + } + + return e.complexity.Transaction.ResultXDR(childComplexity), true + + case "Transaction.stateChanges": + if e.complexity.Transaction.StateChanges == nil { break } @@ -843,6 +1401,69 @@ func (e *executableSchema) Complexity(ctx context.Context, typeName, field strin return e.complexity.TransactionEdge.Node(childComplexity), true + case "TrustlineChange.account": + if e.complexity.TrustlineChange.Account == nil { + break + } + + return e.complexity.TrustlineChange.Account(childComplexity), true + + case "TrustlineChange.ingestedAt": + if e.complexity.TrustlineChange.IngestedAt == nil { + break + } + + return e.complexity.TrustlineChange.IngestedAt(childComplexity), true + + case "TrustlineChange.ledgerCreatedAt": + if e.complexity.TrustlineChange.LedgerCreatedAt == nil { + break + } + + return e.complexity.TrustlineChange.LedgerCreatedAt(childComplexity), true + + case "TrustlineChange.ledgerNumber": + if e.complexity.TrustlineChange.LedgerNumber == nil { + break + } + + return e.complexity.TrustlineChange.LedgerNumber(childComplexity), true + + case "TrustlineChange.limit": + if e.complexity.TrustlineChange.Limit == nil { + break + } + + return e.complexity.TrustlineChange.Limit(childComplexity), true + + case "TrustlineChange.operation": + if e.complexity.TrustlineChange.Operation == nil { + break + } + + return e.complexity.TrustlineChange.Operation(childComplexity), true + + case "TrustlineChange.reason": + if e.complexity.TrustlineChange.Reason == nil { + break + } + + return e.complexity.TrustlineChange.Reason(childComplexity), true + + case "TrustlineChange.transaction": + if e.complexity.TrustlineChange.Transaction == nil { + break + } + + return e.complexity.TrustlineChange.Transaction(childComplexity), true + + case "TrustlineChange.type": + if e.complexity.TrustlineChange.Type == nil { + break + } + + return e.complexity.TrustlineChange.Type(childComplexity), true + } return 0, false } @@ -1034,26 +1655,27 @@ enum OperationType { # StateChangeCategory enum - categorizes the type of state change # Used in GraphQL queries to filter state changes by category enum StateChangeCategory { - DEBIT - CREDIT - MINT - BURN + BALANCE + ACCOUNT SIGNER SIGNATURE_THRESHOLD METADATA FLAGS - LIABILITY - TRUSTLINE_FLAGS - ALLOWANCE + TRUSTLINE SPONSORSHIP - CONTRACT + BALANCE_AUTHORIZATION AUTHORIZATION - UNSUPPORTED } # StateChangeReason enum - provides specific reason for the state change # Used in GraphQL queries to understand why a state change occurred enum StateChangeReason { + CREATE + MERGE + DEBIT + CREDIT + MINT + BURN ADD REMOVE UPDATE @@ -1063,12 +1685,7 @@ enum StateChangeReason { HOME_DOMAIN SET CLEAR - SELL - BUY DATA_ENTRY - CONSUME - DEPLOY - INVOKE } `, BuiltIn: false}, {Name: "../schema/mutations.graphqls", Input: `# GraphQL Mutation root type - defines all available mutations in the API @@ -1177,7 +1794,7 @@ type StateChangeConnection { } type StateChangeEdge { - node: StateChange + node: BaseStateChange cursor: String! } @@ -1219,42 +1836,145 @@ scalar UInt32 scalar Int64 `, BuiltIn: false}, {Name: "../schema/statechange.graphqls", Input: `# GraphQL StateChange type - represents changes to blockchain state -# This type has many nullable fields to handle various state change scenarios -# TODO: Break state change type into interface design and add sub types that implement the interface -type StateChange{ - accountId: String! - stateChangeCategory: StateChangeCategory! - stateChangeReason: StateChangeReason +interface BaseStateChange { + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) ingestedAt: Time! ledgerCreatedAt: Time! - ledgerNumber: UInt32! - - # GraphQL Nullable fields - these map to sql.NullString in Go - # GraphQL handles nullable fields gracefully - they return null if not set - tokenId: String - amount: String - claimableBalanceId: String - liquidityPoolId: String - offerId: String - signerAccountId: String - spenderAccountId: String - sponsoredAccountId: String - sponsorAccountId: String - - # GraphQL fields for JSONB data - require custom resolvers - # These fields need special handling to convert between Go types and GraphQL - signerWeights: String - thresholds: String - flags: [String!] - keyValue: String - + ledgerNumber: UInt32! + # GraphQL Relationships - these fields use resolvers + # Related operation - nullable since fee state changes do not have operations associated with them + account: Account! @goField(forceResolver: true) + # Related operation - nullable since fee state changes do not have operations associated with them operation: Operation @goField(forceResolver: true) # Related transaction transaction: Transaction! @goField(forceResolver: true) } + +type StandardBalanceChange implements BaseStateChange { + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + tokenId: String! + amount: String! +} + +type AccountChange implements BaseStateChange { + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + tokenId: String! + amount: String! +} + +type SignerChange implements BaseStateChange { + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + signerAddress: String + signerWeights: String +} + +type SignerThresholdsChange implements BaseStateChange { + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + thresholds: String! +} + +type MetadataChange implements BaseStateChange { + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + keyValue: String! +} + +type FlagsChange implements BaseStateChange { + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + flags: [String!]! +} + +type TrustlineChange implements BaseStateChange { + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + limit: String! +} + +type ReservesChange implements BaseStateChange{ + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + sponsoredAddress: String + sponsorAddress: String +} + +type BalanceAuthorizationChange implements BaseStateChange{ + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + flags: [String!]! + keyValue: String +} `, BuiltIn: false}, {Name: "../schema/transaction.graphqls", Input: `# GraphQL Transaction type - represents a blockchain transaction # gqlgen generates Go structs from this schema definition @@ -2458,8 +3178,8 @@ func (ec *executionContext) fieldContext_Account_stateChanges(ctx context.Contex return fc, nil } -func (ec *executionContext) _BuildTransactionPayload_success(ctx context.Context, field graphql.CollectedField, obj *BuildTransactionPayload) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_BuildTransactionPayload_success(ctx, field) +func (ec *executionContext) _AccountChange_type(ctx context.Context, field graphql.CollectedField, obj *types.AccountStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_AccountChange_type(ctx, field) if err != nil { return graphql.Null } @@ -2472,7 +3192,7 @@ func (ec *executionContext) _BuildTransactionPayload_success(ctx context.Context }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Success, nil + return ec.resolvers.AccountChange().Type(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -2484,26 +3204,26 @@ func (ec *executionContext) _BuildTransactionPayload_success(ctx context.Context } return graphql.Null } - res := resTmp.(bool) + res := resTmp.(types.StateChangeCategory) fc.Result = res - return ec.marshalNBoolean2bool(ctx, field.Selections, res) + return ec.marshalNStateChangeCategory2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeCategory(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_BuildTransactionPayload_success(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_AccountChange_type(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "BuildTransactionPayload", + Object: "AccountChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Boolean does not have child fields") + return nil, errors.New("field of type StateChangeCategory does not have child fields") }, } return fc, nil } -func (ec *executionContext) _BuildTransactionPayload_transactionXdr(ctx context.Context, field graphql.CollectedField, obj *BuildTransactionPayload) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_BuildTransactionPayload_transactionXdr(ctx, field) +func (ec *executionContext) _AccountChange_reason(ctx context.Context, field graphql.CollectedField, obj *types.AccountStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_AccountChange_reason(ctx, field) if err != nil { return graphql.Null } @@ -2516,7 +3236,7 @@ func (ec *executionContext) _BuildTransactionPayload_transactionXdr(ctx context. }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.TransactionXdr, nil + return ec.resolvers.AccountChange().Reason(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -2528,26 +3248,26 @@ func (ec *executionContext) _BuildTransactionPayload_transactionXdr(ctx context. } return graphql.Null } - res := resTmp.(string) + res := resTmp.(types.StateChangeReason) fc.Result = res - return ec.marshalNString2string(ctx, field.Selections, res) + return ec.marshalNStateChangeReason2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeReason(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_BuildTransactionPayload_transactionXdr(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_AccountChange_reason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "BuildTransactionPayload", + Object: "AccountChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type StateChangeReason does not have child fields") }, } return fc, nil } -func (ec *executionContext) _DeregisterAccountPayload_success(ctx context.Context, field graphql.CollectedField, obj *DeregisterAccountPayload) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_DeregisterAccountPayload_success(ctx, field) +func (ec *executionContext) _AccountChange_ingestedAt(ctx context.Context, field graphql.CollectedField, obj *types.AccountStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_AccountChange_ingestedAt(ctx, field) if err != nil { return graphql.Null } @@ -2560,7 +3280,7 @@ func (ec *executionContext) _DeregisterAccountPayload_success(ctx context.Contex }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Success, nil + return obj.IngestedAt, nil }) if err != nil { ec.Error(ctx, err) @@ -2572,26 +3292,26 @@ func (ec *executionContext) _DeregisterAccountPayload_success(ctx context.Contex } return graphql.Null } - res := resTmp.(bool) + res := resTmp.(time.Time) fc.Result = res - return ec.marshalNBoolean2bool(ctx, field.Selections, res) + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_DeregisterAccountPayload_success(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_AccountChange_ingestedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "DeregisterAccountPayload", + Object: "AccountChange", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Boolean does not have child fields") + return nil, errors.New("field of type Time does not have child fields") }, } return fc, nil } -func (ec *executionContext) _DeregisterAccountPayload_message(ctx context.Context, field graphql.CollectedField, obj *DeregisterAccountPayload) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_DeregisterAccountPayload_message(ctx, field) +func (ec *executionContext) _AccountChange_ledgerCreatedAt(ctx context.Context, field graphql.CollectedField, obj *types.AccountStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_AccountChange_ledgerCreatedAt(ctx, field) if err != nil { return graphql.Null } @@ -2604,35 +3324,38 @@ func (ec *executionContext) _DeregisterAccountPayload_message(ctx context.Contex }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Message, nil + return obj.LedgerCreatedAt, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(time.Time) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_DeregisterAccountPayload_message(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_AccountChange_ledgerCreatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "DeregisterAccountPayload", + Object: "AccountChange", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type Time does not have child fields") }, } return fc, nil } -func (ec *executionContext) _Mutation_registerAccount(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Mutation_registerAccount(ctx, field) +func (ec *executionContext) _AccountChange_ledgerNumber(ctx context.Context, field graphql.CollectedField, obj *types.AccountStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_AccountChange_ledgerNumber(ctx, field) if err != nil { return graphql.Null } @@ -2645,7 +3368,7 @@ func (ec *executionContext) _Mutation_registerAccount(ctx context.Context, field }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Mutation().RegisterAccount(rctx, fc.Args["input"].(RegisterAccountInput)) + return obj.LedgerNumber, nil }) if err != nil { ec.Error(ctx, err) @@ -2657,43 +3380,26 @@ func (ec *executionContext) _Mutation_registerAccount(ctx context.Context, field } return graphql.Null } - res := resTmp.(*RegisterAccountPayload) + res := resTmp.(uint32) fc.Result = res - return ec.marshalNRegisterAccountPayload2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐRegisterAccountPayload(ctx, field.Selections, res) + return ec.marshalNUInt322uint32(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Mutation_registerAccount(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_AccountChange_ledgerNumber(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Mutation", + Object: "AccountChange", Field: field, - IsMethod: true, - IsResolver: true, + IsMethod: false, + IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "success": - return ec.fieldContext_RegisterAccountPayload_success(ctx, field) - case "account": - return ec.fieldContext_RegisterAccountPayload_account(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type RegisterAccountPayload", field.Name) + return nil, errors.New("field of type UInt32 does not have child fields") }, } - defer func() { - if r := recover(); r != nil { - err = ec.Recover(ctx, r) - ec.Error(ctx, err) - } - }() - ctx = graphql.WithFieldContext(ctx, fc) - if fc.Args, err = ec.field_Mutation_registerAccount_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { - ec.Error(ctx, err) - return fc, err - } return fc, nil } -func (ec *executionContext) _Mutation_deregisterAccount(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Mutation_deregisterAccount(ctx, field) +func (ec *executionContext) _AccountChange_account(ctx context.Context, field graphql.CollectedField, obj *types.AccountStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_AccountChange_account(ctx, field) if err != nil { return graphql.Null } @@ -2706,7 +3412,7 @@ func (ec *executionContext) _Mutation_deregisterAccount(ctx context.Context, fie }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Mutation().DeregisterAccount(rctx, fc.Args["input"].(DeregisterAccountInput)) + return ec.resolvers.AccountChange().Account(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -2718,43 +3424,97 @@ func (ec *executionContext) _Mutation_deregisterAccount(ctx context.Context, fie } return graphql.Null } - res := resTmp.(*DeregisterAccountPayload) + res := resTmp.(*types.Account) fc.Result = res - return ec.marshalNDeregisterAccountPayload2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐDeregisterAccountPayload(ctx, field.Selections, res) + return ec.marshalNAccount2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccount(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Mutation_deregisterAccount(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_AccountChange_account(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Mutation", + Object: "AccountChange", Field: field, IsMethod: true, IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { - case "success": - return ec.fieldContext_DeregisterAccountPayload_success(ctx, field) - case "message": - return ec.fieldContext_DeregisterAccountPayload_message(ctx, field) + case "address": + return ec.fieldContext_Account_address(ctx, field) + case "transactions": + return ec.fieldContext_Account_transactions(ctx, field) + case "operations": + return ec.fieldContext_Account_operations(ctx, field) + case "stateChanges": + return ec.fieldContext_Account_stateChanges(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type DeregisterAccountPayload", field.Name) + return nil, fmt.Errorf("no field named %q was found under type Account", field.Name) }, } + return fc, nil +} + +func (ec *executionContext) _AccountChange_operation(ctx context.Context, field graphql.CollectedField, obj *types.AccountStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_AccountChange_operation(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) defer func() { if r := recover(); r != nil { - err = ec.Recover(ctx, r) - ec.Error(ctx, err) + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null } }() - ctx = graphql.WithFieldContext(ctx, fc) - if fc.Args, err = ec.field_Mutation_deregisterAccount_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.AccountChange().Operation(rctx, obj) + }) + if err != nil { ec.Error(ctx, err) - return fc, err + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*types.Operation) + fc.Result = res + return ec.marshalOOperation2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐOperation(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_AccountChange_operation(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "AccountChange", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "id": + return ec.fieldContext_Operation_id(ctx, field) + case "operationType": + return ec.fieldContext_Operation_operationType(ctx, field) + case "operationXdr": + return ec.fieldContext_Operation_operationXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Operation_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Operation_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Operation_ingestedAt(ctx, field) + case "transaction": + return ec.fieldContext_Operation_transaction(ctx, field) + case "accounts": + return ec.fieldContext_Operation_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Operation_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Operation", field.Name) + }, } return fc, nil } -func (ec *executionContext) _Mutation_buildTransaction(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Mutation_buildTransaction(ctx, field) +func (ec *executionContext) _AccountChange_transaction(ctx context.Context, field graphql.CollectedField, obj *types.AccountStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_AccountChange_transaction(ctx, field) if err != nil { return graphql.Null } @@ -2767,7 +3527,7 @@ func (ec *executionContext) _Mutation_buildTransaction(ctx context.Context, fiel }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Mutation().BuildTransaction(rctx, fc.Args["input"].(BuildTransactionInput)) + return ec.resolvers.AccountChange().Transaction(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -2779,43 +3539,48 @@ func (ec *executionContext) _Mutation_buildTransaction(ctx context.Context, fiel } return graphql.Null } - res := resTmp.(*BuildTransactionPayload) + res := resTmp.(*types.Transaction) fc.Result = res - return ec.marshalNBuildTransactionPayload2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐBuildTransactionPayload(ctx, field.Selections, res) + return ec.marshalNTransaction2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐTransaction(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Mutation_buildTransaction(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_AccountChange_transaction(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Mutation", + Object: "AccountChange", Field: field, IsMethod: true, IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { - case "success": - return ec.fieldContext_BuildTransactionPayload_success(ctx, field) - case "transactionXdr": - return ec.fieldContext_BuildTransactionPayload_transactionXdr(ctx, field) + case "hash": + return ec.fieldContext_Transaction_hash(ctx, field) + case "envelopeXdr": + return ec.fieldContext_Transaction_envelopeXdr(ctx, field) + case "resultXdr": + return ec.fieldContext_Transaction_resultXdr(ctx, field) + case "metaXdr": + return ec.fieldContext_Transaction_metaXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Transaction_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Transaction_ingestedAt(ctx, field) + case "operations": + return ec.fieldContext_Transaction_operations(ctx, field) + case "accounts": + return ec.fieldContext_Transaction_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Transaction_stateChanges(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type BuildTransactionPayload", field.Name) + return nil, fmt.Errorf("no field named %q was found under type Transaction", field.Name) }, } - defer func() { - if r := recover(); r != nil { - err = ec.Recover(ctx, r) - ec.Error(ctx, err) - } - }() - ctx = graphql.WithFieldContext(ctx, fc) - if fc.Args, err = ec.field_Mutation_buildTransaction_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { - ec.Error(ctx, err) - return fc, err - } return fc, nil } -func (ec *executionContext) _Operation_id(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Operation_id(ctx, field) +func (ec *executionContext) _AccountChange_tokenId(ctx context.Context, field graphql.CollectedField, obj *types.AccountStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_AccountChange_tokenId(ctx, field) if err != nil { return graphql.Null } @@ -2828,7 +3593,7 @@ func (ec *executionContext) _Operation_id(ctx context.Context, field graphql.Col }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.ID, nil + return ec.resolvers.AccountChange().TokenID(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -2840,26 +3605,26 @@ func (ec *executionContext) _Operation_id(ctx context.Context, field graphql.Col } return graphql.Null } - res := resTmp.(int64) + res := resTmp.(string) fc.Result = res - return ec.marshalNInt642int64(ctx, field.Selections, res) + return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Operation_id(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_AccountChange_tokenId(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Operation", + Object: "AccountChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Int64 does not have child fields") + return nil, errors.New("field of type String does not have child fields") }, } return fc, nil } -func (ec *executionContext) _Operation_operationType(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Operation_operationType(ctx, field) +func (ec *executionContext) _AccountChange_amount(ctx context.Context, field graphql.CollectedField, obj *types.AccountStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_AccountChange_amount(ctx, field) if err != nil { return graphql.Null } @@ -2872,7 +3637,7 @@ func (ec *executionContext) _Operation_operationType(ctx context.Context, field }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.OperationType, nil + return ec.resolvers.AccountChange().Amount(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -2884,26 +3649,26 @@ func (ec *executionContext) _Operation_operationType(ctx context.Context, field } return graphql.Null } - res := resTmp.(types.OperationType) + res := resTmp.(string) fc.Result = res - return ec.marshalNOperationType2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐOperationType(ctx, field.Selections, res) + return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Operation_operationType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_AccountChange_amount(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Operation", + Object: "AccountChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type OperationType does not have child fields") + return nil, errors.New("field of type String does not have child fields") }, } return fc, nil } -func (ec *executionContext) _Operation_operationXdr(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Operation_operationXdr(ctx, field) +func (ec *executionContext) _BalanceAuthorizationChange_type(ctx context.Context, field graphql.CollectedField, obj *types.BalanceAuthorizationStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_BalanceAuthorizationChange_type(ctx, field) if err != nil { return graphql.Null } @@ -2916,7 +3681,7 @@ func (ec *executionContext) _Operation_operationXdr(ctx context.Context, field g }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.OperationXDR, nil + return ec.resolvers.BalanceAuthorizationChange().Type(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -2928,26 +3693,26 @@ func (ec *executionContext) _Operation_operationXdr(ctx context.Context, field g } return graphql.Null } - res := resTmp.(string) + res := resTmp.(types.StateChangeCategory) fc.Result = res - return ec.marshalNString2string(ctx, field.Selections, res) + return ec.marshalNStateChangeCategory2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeCategory(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Operation_operationXdr(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_BalanceAuthorizationChange_type(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Operation", + Object: "BalanceAuthorizationChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type StateChangeCategory does not have child fields") }, } return fc, nil } -func (ec *executionContext) _Operation_ledgerNumber(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Operation_ledgerNumber(ctx, field) +func (ec *executionContext) _BalanceAuthorizationChange_reason(ctx context.Context, field graphql.CollectedField, obj *types.BalanceAuthorizationStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_BalanceAuthorizationChange_reason(ctx, field) if err != nil { return graphql.Null } @@ -2960,7 +3725,7 @@ func (ec *executionContext) _Operation_ledgerNumber(ctx context.Context, field g }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.LedgerNumber, nil + return ec.resolvers.BalanceAuthorizationChange().Reason(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -2972,26 +3737,26 @@ func (ec *executionContext) _Operation_ledgerNumber(ctx context.Context, field g } return graphql.Null } - res := resTmp.(uint32) + res := resTmp.(types.StateChangeReason) fc.Result = res - return ec.marshalNUInt322uint32(ctx, field.Selections, res) + return ec.marshalNStateChangeReason2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeReason(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Operation_ledgerNumber(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_BalanceAuthorizationChange_reason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Operation", + Object: "BalanceAuthorizationChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type UInt32 does not have child fields") + return nil, errors.New("field of type StateChangeReason does not have child fields") }, } return fc, nil } -func (ec *executionContext) _Operation_ledgerCreatedAt(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Operation_ledgerCreatedAt(ctx, field) +func (ec *executionContext) _BalanceAuthorizationChange_ingestedAt(ctx context.Context, field graphql.CollectedField, obj *types.BalanceAuthorizationStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_BalanceAuthorizationChange_ingestedAt(ctx, field) if err != nil { return graphql.Null } @@ -3004,7 +3769,7 @@ func (ec *executionContext) _Operation_ledgerCreatedAt(ctx context.Context, fiel }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.LedgerCreatedAt, nil + return obj.IngestedAt, nil }) if err != nil { ec.Error(ctx, err) @@ -3021,9 +3786,9 @@ func (ec *executionContext) _Operation_ledgerCreatedAt(ctx context.Context, fiel return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Operation_ledgerCreatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_BalanceAuthorizationChange_ingestedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Operation", + Object: "BalanceAuthorizationChange", Field: field, IsMethod: false, IsResolver: false, @@ -3034,8 +3799,8 @@ func (ec *executionContext) fieldContext_Operation_ledgerCreatedAt(_ context.Con return fc, nil } -func (ec *executionContext) _Operation_ingestedAt(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Operation_ingestedAt(ctx, field) +func (ec *executionContext) _BalanceAuthorizationChange_ledgerCreatedAt(ctx context.Context, field graphql.CollectedField, obj *types.BalanceAuthorizationStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_BalanceAuthorizationChange_ledgerCreatedAt(ctx, field) if err != nil { return graphql.Null } @@ -3048,7 +3813,7 @@ func (ec *executionContext) _Operation_ingestedAt(ctx context.Context, field gra }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.IngestedAt, nil + return obj.LedgerCreatedAt, nil }) if err != nil { ec.Error(ctx, err) @@ -3065,9 +3830,9 @@ func (ec *executionContext) _Operation_ingestedAt(ctx context.Context, field gra return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Operation_ingestedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_BalanceAuthorizationChange_ledgerCreatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Operation", + Object: "BalanceAuthorizationChange", Field: field, IsMethod: false, IsResolver: false, @@ -3078,8 +3843,8 @@ func (ec *executionContext) fieldContext_Operation_ingestedAt(_ context.Context, return fc, nil } -func (ec *executionContext) _Operation_transaction(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Operation_transaction(ctx, field) +func (ec *executionContext) _BalanceAuthorizationChange_ledgerNumber(ctx context.Context, field graphql.CollectedField, obj *types.BalanceAuthorizationStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_BalanceAuthorizationChange_ledgerNumber(ctx, field) if err != nil { return graphql.Null } @@ -3092,7 +3857,7 @@ func (ec *executionContext) _Operation_transaction(ctx context.Context, field gr }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Operation().Transaction(rctx, obj) + return obj.LedgerNumber, nil }) if err != nil { ec.Error(ctx, err) @@ -3104,48 +3869,26 @@ func (ec *executionContext) _Operation_transaction(ctx context.Context, field gr } return graphql.Null } - res := resTmp.(*types.Transaction) + res := resTmp.(uint32) fc.Result = res - return ec.marshalNTransaction2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐTransaction(ctx, field.Selections, res) + return ec.marshalNUInt322uint32(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Operation_transaction(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_BalanceAuthorizationChange_ledgerNumber(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Operation", + Object: "BalanceAuthorizationChange", Field: field, - IsMethod: true, - IsResolver: true, + IsMethod: false, + IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "hash": - return ec.fieldContext_Transaction_hash(ctx, field) - case "envelopeXdr": - return ec.fieldContext_Transaction_envelopeXdr(ctx, field) - case "resultXdr": - return ec.fieldContext_Transaction_resultXdr(ctx, field) - case "metaXdr": - return ec.fieldContext_Transaction_metaXdr(ctx, field) - case "ledgerNumber": - return ec.fieldContext_Transaction_ledgerNumber(ctx, field) - case "ledgerCreatedAt": - return ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) - case "ingestedAt": - return ec.fieldContext_Transaction_ingestedAt(ctx, field) - case "operations": - return ec.fieldContext_Transaction_operations(ctx, field) - case "accounts": - return ec.fieldContext_Transaction_accounts(ctx, field) - case "stateChanges": - return ec.fieldContext_Transaction_stateChanges(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type Transaction", field.Name) + return nil, errors.New("field of type UInt32 does not have child fields") }, } return fc, nil } -func (ec *executionContext) _Operation_accounts(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Operation_accounts(ctx, field) +func (ec *executionContext) _BalanceAuthorizationChange_account(ctx context.Context, field graphql.CollectedField, obj *types.BalanceAuthorizationStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_BalanceAuthorizationChange_account(ctx, field) if err != nil { return graphql.Null } @@ -3158,7 +3901,7 @@ func (ec *executionContext) _Operation_accounts(ctx context.Context, field graph }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Operation().Accounts(rctx, obj) + return ec.resolvers.BalanceAuthorizationChange().Account(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -3170,14 +3913,14 @@ func (ec *executionContext) _Operation_accounts(ctx context.Context, field graph } return graphql.Null } - res := resTmp.([]*types.Account) + res := resTmp.(*types.Account) fc.Result = res - return ec.marshalNAccount2ᚕᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccountᚄ(ctx, field.Selections, res) + return ec.marshalNAccount2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccount(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Operation_accounts(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_BalanceAuthorizationChange_account(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Operation", + Object: "BalanceAuthorizationChange", Field: field, IsMethod: true, IsResolver: true, @@ -3198,8 +3941,8 @@ func (ec *executionContext) fieldContext_Operation_accounts(_ context.Context, f return fc, nil } -func (ec *executionContext) _Operation_stateChanges(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Operation_stateChanges(ctx, field) +func (ec *executionContext) _BalanceAuthorizationChange_operation(ctx context.Context, field graphql.CollectedField, obj *types.BalanceAuthorizationStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_BalanceAuthorizationChange_operation(ctx, field) if err != nil { return graphql.Null } @@ -3212,7 +3955,7 @@ func (ec *executionContext) _Operation_stateChanges(ctx context.Context, field g }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Operation().StateChanges(rctx, obj, fc.Args["first"].(*int32), fc.Args["after"].(*string), fc.Args["last"].(*int32), fc.Args["before"].(*string)) + return ec.resolvers.BalanceAuthorizationChange().Operation(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -3221,43 +3964,46 @@ func (ec *executionContext) _Operation_stateChanges(ctx context.Context, field g if resTmp == nil { return graphql.Null } - res := resTmp.(*StateChangeConnection) + res := resTmp.(*types.Operation) fc.Result = res - return ec.marshalOStateChangeConnection2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐStateChangeConnection(ctx, field.Selections, res) + return ec.marshalOOperation2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐOperation(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Operation_stateChanges(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_BalanceAuthorizationChange_operation(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Operation", + Object: "BalanceAuthorizationChange", Field: field, IsMethod: true, IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { - case "edges": - return ec.fieldContext_StateChangeConnection_edges(ctx, field) - case "pageInfo": - return ec.fieldContext_StateChangeConnection_pageInfo(ctx, field) + case "id": + return ec.fieldContext_Operation_id(ctx, field) + case "operationType": + return ec.fieldContext_Operation_operationType(ctx, field) + case "operationXdr": + return ec.fieldContext_Operation_operationXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Operation_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Operation_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Operation_ingestedAt(ctx, field) + case "transaction": + return ec.fieldContext_Operation_transaction(ctx, field) + case "accounts": + return ec.fieldContext_Operation_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Operation_stateChanges(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type StateChangeConnection", field.Name) + return nil, fmt.Errorf("no field named %q was found under type Operation", field.Name) }, } - defer func() { - if r := recover(); r != nil { - err = ec.Recover(ctx, r) - ec.Error(ctx, err) - } - }() - ctx = graphql.WithFieldContext(ctx, fc) - if fc.Args, err = ec.field_Operation_stateChanges_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { - ec.Error(ctx, err) - return fc, err - } return fc, nil } -func (ec *executionContext) _OperationConnection_edges(ctx context.Context, field graphql.CollectedField, obj *OperationConnection) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_OperationConnection_edges(ctx, field) +func (ec *executionContext) _BalanceAuthorizationChange_transaction(ctx context.Context, field graphql.CollectedField, obj *types.BalanceAuthorizationStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_BalanceAuthorizationChange_transaction(ctx, field) if err != nil { return graphql.Null } @@ -3270,41 +4016,60 @@ func (ec *executionContext) _OperationConnection_edges(ctx context.Context, fiel }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Edges, nil + return ec.resolvers.BalanceAuthorizationChange().Transaction(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.([]*OperationEdge) + res := resTmp.(*types.Transaction) fc.Result = res - return ec.marshalOOperationEdge2ᚕᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐOperationEdgeᚄ(ctx, field.Selections, res) + return ec.marshalNTransaction2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐTransaction(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_OperationConnection_edges(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_BalanceAuthorizationChange_transaction(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "OperationConnection", + Object: "BalanceAuthorizationChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { - case "node": - return ec.fieldContext_OperationEdge_node(ctx, field) - case "cursor": - return ec.fieldContext_OperationEdge_cursor(ctx, field) + case "hash": + return ec.fieldContext_Transaction_hash(ctx, field) + case "envelopeXdr": + return ec.fieldContext_Transaction_envelopeXdr(ctx, field) + case "resultXdr": + return ec.fieldContext_Transaction_resultXdr(ctx, field) + case "metaXdr": + return ec.fieldContext_Transaction_metaXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Transaction_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Transaction_ingestedAt(ctx, field) + case "operations": + return ec.fieldContext_Transaction_operations(ctx, field) + case "accounts": + return ec.fieldContext_Transaction_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Transaction_stateChanges(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type OperationEdge", field.Name) + return nil, fmt.Errorf("no field named %q was found under type Transaction", field.Name) }, } return fc, nil } -func (ec *executionContext) _OperationConnection_pageInfo(ctx context.Context, field graphql.CollectedField, obj *OperationConnection) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_OperationConnection_pageInfo(ctx, field) +func (ec *executionContext) _BalanceAuthorizationChange_flags(ctx context.Context, field graphql.CollectedField, obj *types.BalanceAuthorizationStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_BalanceAuthorizationChange_flags(ctx, field) if err != nil { return graphql.Null } @@ -3317,7 +4082,7 @@ func (ec *executionContext) _OperationConnection_pageInfo(ctx context.Context, f }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.PageInfo, nil + return ec.resolvers.BalanceAuthorizationChange().Flags(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -3329,36 +4094,26 @@ func (ec *executionContext) _OperationConnection_pageInfo(ctx context.Context, f } return graphql.Null } - res := resTmp.(*PageInfo) + res := resTmp.([]string) fc.Result = res - return ec.marshalNPageInfo2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐPageInfo(ctx, field.Selections, res) + return ec.marshalNString2ᚕstringᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_OperationConnection_pageInfo(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_BalanceAuthorizationChange_flags(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "OperationConnection", + Object: "BalanceAuthorizationChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "startCursor": - return ec.fieldContext_PageInfo_startCursor(ctx, field) - case "endCursor": - return ec.fieldContext_PageInfo_endCursor(ctx, field) - case "hasNextPage": - return ec.fieldContext_PageInfo_hasNextPage(ctx, field) - case "hasPreviousPage": - return ec.fieldContext_PageInfo_hasPreviousPage(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type PageInfo", field.Name) + return nil, errors.New("field of type String does not have child fields") }, } return fc, nil } -func (ec *executionContext) _OperationEdge_node(ctx context.Context, field graphql.CollectedField, obj *OperationEdge) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_OperationEdge_node(ctx, field) +func (ec *executionContext) _BalanceAuthorizationChange_keyValue(ctx context.Context, field graphql.CollectedField, obj *types.BalanceAuthorizationStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_BalanceAuthorizationChange_keyValue(ctx, field) if err != nil { return graphql.Null } @@ -3371,7 +4126,7 @@ func (ec *executionContext) _OperationEdge_node(ctx context.Context, field graph }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Node, nil + return ec.resolvers.BalanceAuthorizationChange().KeyValue(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -3380,46 +4135,26 @@ func (ec *executionContext) _OperationEdge_node(ctx context.Context, field graph if resTmp == nil { return graphql.Null } - res := resTmp.(*types.Operation) + res := resTmp.(*string) fc.Result = res - return ec.marshalOOperation2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐOperation(ctx, field.Selections, res) + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_OperationEdge_node(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_BalanceAuthorizationChange_keyValue(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "OperationEdge", + Object: "BalanceAuthorizationChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "id": - return ec.fieldContext_Operation_id(ctx, field) - case "operationType": - return ec.fieldContext_Operation_operationType(ctx, field) - case "operationXdr": - return ec.fieldContext_Operation_operationXdr(ctx, field) - case "ledgerNumber": - return ec.fieldContext_Operation_ledgerNumber(ctx, field) - case "ledgerCreatedAt": - return ec.fieldContext_Operation_ledgerCreatedAt(ctx, field) - case "ingestedAt": - return ec.fieldContext_Operation_ingestedAt(ctx, field) - case "transaction": - return ec.fieldContext_Operation_transaction(ctx, field) - case "accounts": - return ec.fieldContext_Operation_accounts(ctx, field) - case "stateChanges": - return ec.fieldContext_Operation_stateChanges(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type Operation", field.Name) + return nil, errors.New("field of type String does not have child fields") }, } return fc, nil } -func (ec *executionContext) _OperationEdge_cursor(ctx context.Context, field graphql.CollectedField, obj *OperationEdge) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_OperationEdge_cursor(ctx, field) +func (ec *executionContext) _BuildTransactionPayload_success(ctx context.Context, field graphql.CollectedField, obj *BuildTransactionPayload) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_BuildTransactionPayload_success(ctx, field) if err != nil { return graphql.Null } @@ -3432,7 +4167,7 @@ func (ec *executionContext) _OperationEdge_cursor(ctx context.Context, field gra }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Cursor, nil + return obj.Success, nil }) if err != nil { ec.Error(ctx, err) @@ -3444,26 +4179,26 @@ func (ec *executionContext) _OperationEdge_cursor(ctx context.Context, field gra } return graphql.Null } - res := resTmp.(string) + res := resTmp.(bool) fc.Result = res - return ec.marshalNString2string(ctx, field.Selections, res) + return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_OperationEdge_cursor(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_BuildTransactionPayload_success(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "OperationEdge", + Object: "BuildTransactionPayload", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type Boolean does not have child fields") }, } return fc, nil } -func (ec *executionContext) _PageInfo_startCursor(ctx context.Context, field graphql.CollectedField, obj *PageInfo) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_PageInfo_startCursor(ctx, field) +func (ec *executionContext) _BuildTransactionPayload_transactionXdr(ctx context.Context, field graphql.CollectedField, obj *BuildTransactionPayload) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_BuildTransactionPayload_transactionXdr(ctx, field) if err != nil { return graphql.Null } @@ -3476,23 +4211,26 @@ func (ec *executionContext) _PageInfo_startCursor(ctx context.Context, field gra }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.StartCursor, nil + return obj.TransactionXdr, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(string) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_PageInfo_startCursor(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_BuildTransactionPayload_transactionXdr(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "PageInfo", + Object: "BuildTransactionPayload", Field: field, IsMethod: false, IsResolver: false, @@ -3503,8 +4241,8 @@ func (ec *executionContext) fieldContext_PageInfo_startCursor(_ context.Context, return fc, nil } -func (ec *executionContext) _PageInfo_endCursor(ctx context.Context, field graphql.CollectedField, obj *PageInfo) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_PageInfo_endCursor(ctx, field) +func (ec *executionContext) _DeregisterAccountPayload_success(ctx context.Context, field graphql.CollectedField, obj *DeregisterAccountPayload) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_DeregisterAccountPayload_success(ctx, field) if err != nil { return graphql.Null } @@ -3517,35 +4255,38 @@ func (ec *executionContext) _PageInfo_endCursor(ctx context.Context, field graph }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.EndCursor, nil + return obj.Success, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(bool) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_PageInfo_endCursor(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_DeregisterAccountPayload_success(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "PageInfo", + Object: "DeregisterAccountPayload", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type Boolean does not have child fields") }, } return fc, nil } -func (ec *executionContext) _PageInfo_hasNextPage(ctx context.Context, field graphql.CollectedField, obj *PageInfo) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_PageInfo_hasNextPage(ctx, field) +func (ec *executionContext) _DeregisterAccountPayload_message(ctx context.Context, field graphql.CollectedField, obj *DeregisterAccountPayload) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_DeregisterAccountPayload_message(ctx, field) if err != nil { return graphql.Null } @@ -3558,38 +4299,35 @@ func (ec *executionContext) _PageInfo_hasNextPage(ctx context.Context, field gra }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.HasNextPage, nil + return obj.Message, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } return graphql.Null } - res := resTmp.(bool) + res := resTmp.(*string) fc.Result = res - return ec.marshalNBoolean2bool(ctx, field.Selections, res) + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_PageInfo_hasNextPage(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_DeregisterAccountPayload_message(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "PageInfo", + Object: "DeregisterAccountPayload", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Boolean does not have child fields") + return nil, errors.New("field of type String does not have child fields") }, } return fc, nil } -func (ec *executionContext) _PageInfo_hasPreviousPage(ctx context.Context, field graphql.CollectedField, obj *PageInfo) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_PageInfo_hasPreviousPage(ctx, field) +func (ec *executionContext) _FlagsChange_type(ctx context.Context, field graphql.CollectedField, obj *types.FlagsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_FlagsChange_type(ctx, field) if err != nil { return graphql.Null } @@ -3602,7 +4340,7 @@ func (ec *executionContext) _PageInfo_hasPreviousPage(ctx context.Context, field }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.HasPreviousPage, nil + return ec.resolvers.FlagsChange().Type(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -3614,26 +4352,26 @@ func (ec *executionContext) _PageInfo_hasPreviousPage(ctx context.Context, field } return graphql.Null } - res := resTmp.(bool) + res := resTmp.(types.StateChangeCategory) fc.Result = res - return ec.marshalNBoolean2bool(ctx, field.Selections, res) + return ec.marshalNStateChangeCategory2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeCategory(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_PageInfo_hasPreviousPage(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_FlagsChange_type(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "PageInfo", + Object: "FlagsChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Boolean does not have child fields") + return nil, errors.New("field of type StateChangeCategory does not have child fields") }, } return fc, nil } -func (ec *executionContext) _Query_transactionByHash(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Query_transactionByHash(ctx, field) +func (ec *executionContext) _FlagsChange_reason(ctx context.Context, field graphql.CollectedField, obj *types.FlagsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_FlagsChange_reason(ctx, field) if err != nil { return graphql.Null } @@ -3646,68 +4384,38 @@ func (ec *executionContext) _Query_transactionByHash(ctx context.Context, field }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Query().TransactionByHash(rctx, fc.Args["hash"].(string)) + return ec.resolvers.FlagsChange().Reason(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*types.Transaction) + res := resTmp.(types.StateChangeReason) fc.Result = res - return ec.marshalOTransaction2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐTransaction(ctx, field.Selections, res) + return ec.marshalNStateChangeReason2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeReason(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Query_transactionByHash(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_FlagsChange_reason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Query", + Object: "FlagsChange", Field: field, IsMethod: true, IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "hash": - return ec.fieldContext_Transaction_hash(ctx, field) - case "envelopeXdr": - return ec.fieldContext_Transaction_envelopeXdr(ctx, field) - case "resultXdr": - return ec.fieldContext_Transaction_resultXdr(ctx, field) - case "metaXdr": - return ec.fieldContext_Transaction_metaXdr(ctx, field) - case "ledgerNumber": - return ec.fieldContext_Transaction_ledgerNumber(ctx, field) - case "ledgerCreatedAt": - return ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) - case "ingestedAt": - return ec.fieldContext_Transaction_ingestedAt(ctx, field) - case "operations": - return ec.fieldContext_Transaction_operations(ctx, field) - case "accounts": - return ec.fieldContext_Transaction_accounts(ctx, field) - case "stateChanges": - return ec.fieldContext_Transaction_stateChanges(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type Transaction", field.Name) + return nil, errors.New("field of type StateChangeReason does not have child fields") }, } - defer func() { - if r := recover(); r != nil { - err = ec.Recover(ctx, r) - ec.Error(ctx, err) - } - }() - ctx = graphql.WithFieldContext(ctx, fc) - if fc.Args, err = ec.field_Query_transactionByHash_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { - ec.Error(ctx, err) - return fc, err - } return fc, nil } -func (ec *executionContext) _Query_transactions(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Query_transactions(ctx, field) +func (ec *executionContext) _FlagsChange_ingestedAt(ctx context.Context, field graphql.CollectedField, obj *types.FlagsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_FlagsChange_ingestedAt(ctx, field) if err != nil { return graphql.Null } @@ -3720,52 +4428,38 @@ func (ec *executionContext) _Query_transactions(ctx context.Context, field graph }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Query().Transactions(rctx, fc.Args["first"].(*int32), fc.Args["after"].(*string), fc.Args["last"].(*int32), fc.Args["before"].(*string)) + return obj.IngestedAt, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*TransactionConnection) + res := resTmp.(time.Time) fc.Result = res - return ec.marshalOTransactionConnection2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐTransactionConnection(ctx, field.Selections, res) + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Query_transactions(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_FlagsChange_ingestedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Query", + Object: "FlagsChange", Field: field, - IsMethod: true, - IsResolver: true, + IsMethod: false, + IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "edges": - return ec.fieldContext_TransactionConnection_edges(ctx, field) - case "pageInfo": - return ec.fieldContext_TransactionConnection_pageInfo(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type TransactionConnection", field.Name) + return nil, errors.New("field of type Time does not have child fields") }, } - defer func() { - if r := recover(); r != nil { - err = ec.Recover(ctx, r) - ec.Error(ctx, err) - } - }() - ctx = graphql.WithFieldContext(ctx, fc) - if fc.Args, err = ec.field_Query_transactions_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { - ec.Error(ctx, err) - return fc, err - } return fc, nil } -func (ec *executionContext) _Query_accountByAddress(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Query_accountByAddress(ctx, field) +func (ec *executionContext) _FlagsChange_ledgerCreatedAt(ctx context.Context, field graphql.CollectedField, obj *types.FlagsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_FlagsChange_ledgerCreatedAt(ctx, field) if err != nil { return graphql.Null } @@ -3778,56 +4472,82 @@ func (ec *executionContext) _Query_accountByAddress(ctx context.Context, field g }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Query().AccountByAddress(rctx, fc.Args["address"].(string)) + return obj.LedgerCreatedAt, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*types.Account) + res := resTmp.(time.Time) fc.Result = res - return ec.marshalOAccount2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccount(ctx, field.Selections, res) + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Query_accountByAddress(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_FlagsChange_ledgerCreatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Query", + Object: "FlagsChange", Field: field, - IsMethod: true, - IsResolver: true, + IsMethod: false, + IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "address": - return ec.fieldContext_Account_address(ctx, field) - case "transactions": - return ec.fieldContext_Account_transactions(ctx, field) - case "operations": - return ec.fieldContext_Account_operations(ctx, field) - case "stateChanges": - return ec.fieldContext_Account_stateChanges(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type Account", field.Name) + return nil, errors.New("field of type Time does not have child fields") }, } + return fc, nil +} + +func (ec *executionContext) _FlagsChange_ledgerNumber(ctx context.Context, field graphql.CollectedField, obj *types.FlagsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_FlagsChange_ledgerNumber(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) defer func() { if r := recover(); r != nil { - err = ec.Recover(ctx, r) - ec.Error(ctx, err) + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null } }() - ctx = graphql.WithFieldContext(ctx, fc) - if fc.Args, err = ec.field_Query_accountByAddress_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.LedgerNumber, nil + }) + if err != nil { ec.Error(ctx, err) - return fc, err + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(uint32) + fc.Result = res + return ec.marshalNUInt322uint32(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_FlagsChange_ledgerNumber(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "FlagsChange", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type UInt32 does not have child fields") + }, } return fc, nil } -func (ec *executionContext) _Query_operations(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Query_operations(ctx, field) +func (ec *executionContext) _FlagsChange_account(ctx context.Context, field graphql.CollectedField, obj *types.FlagsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_FlagsChange_account(ctx, field) if err != nil { return graphql.Null } @@ -3840,52 +4560,48 @@ func (ec *executionContext) _Query_operations(ctx context.Context, field graphql }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Query().Operations(rctx, fc.Args["first"].(*int32), fc.Args["after"].(*string), fc.Args["last"].(*int32), fc.Args["before"].(*string)) + return ec.resolvers.FlagsChange().Account(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*OperationConnection) + res := resTmp.(*types.Account) fc.Result = res - return ec.marshalOOperationConnection2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐOperationConnection(ctx, field.Selections, res) + return ec.marshalNAccount2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccount(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Query_operations(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_FlagsChange_account(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Query", + Object: "FlagsChange", Field: field, IsMethod: true, IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { - case "edges": - return ec.fieldContext_OperationConnection_edges(ctx, field) - case "pageInfo": - return ec.fieldContext_OperationConnection_pageInfo(ctx, field) + case "address": + return ec.fieldContext_Account_address(ctx, field) + case "transactions": + return ec.fieldContext_Account_transactions(ctx, field) + case "operations": + return ec.fieldContext_Account_operations(ctx, field) + case "stateChanges": + return ec.fieldContext_Account_stateChanges(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type OperationConnection", field.Name) + return nil, fmt.Errorf("no field named %q was found under type Account", field.Name) }, } - defer func() { - if r := recover(); r != nil { - err = ec.Recover(ctx, r) - ec.Error(ctx, err) - } - }() - ctx = graphql.WithFieldContext(ctx, fc) - if fc.Args, err = ec.field_Query_operations_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { - ec.Error(ctx, err) - return fc, err - } return fc, nil } -func (ec *executionContext) _Query_operationById(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Query_operationById(ctx, field) +func (ec *executionContext) _FlagsChange_operation(ctx context.Context, field graphql.CollectedField, obj *types.FlagsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_FlagsChange_operation(ctx, field) if err != nil { return graphql.Null } @@ -3898,7 +4614,7 @@ func (ec *executionContext) _Query_operationById(ctx context.Context, field grap }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Query().OperationByID(rctx, fc.Args["id"].(int64)) + return ec.resolvers.FlagsChange().Operation(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -3912,9 +4628,9 @@ func (ec *executionContext) _Query_operationById(ctx context.Context, field grap return ec.marshalOOperation2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐOperation(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Query_operationById(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_FlagsChange_operation(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Query", + Object: "FlagsChange", Field: field, IsMethod: true, IsResolver: true, @@ -3942,22 +4658,11 @@ func (ec *executionContext) fieldContext_Query_operationById(ctx context.Context return nil, fmt.Errorf("no field named %q was found under type Operation", field.Name) }, } - defer func() { - if r := recover(); r != nil { - err = ec.Recover(ctx, r) - ec.Error(ctx, err) - } - }() - ctx = graphql.WithFieldContext(ctx, fc) - if fc.Args, err = ec.field_Query_operationById_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { - ec.Error(ctx, err) - return fc, err - } return fc, nil } -func (ec *executionContext) _Query_stateChanges(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Query_stateChanges(ctx, field) +func (ec *executionContext) _FlagsChange_transaction(ctx context.Context, field graphql.CollectedField, obj *types.FlagsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_FlagsChange_transaction(ctx, field) if err != nil { return graphql.Null } @@ -3970,52 +4675,60 @@ func (ec *executionContext) _Query_stateChanges(ctx context.Context, field graph }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Query().StateChanges(rctx, fc.Args["first"].(*int32), fc.Args["after"].(*string), fc.Args["last"].(*int32), fc.Args["before"].(*string)) + return ec.resolvers.FlagsChange().Transaction(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*StateChangeConnection) + res := resTmp.(*types.Transaction) fc.Result = res - return ec.marshalOStateChangeConnection2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐStateChangeConnection(ctx, field.Selections, res) + return ec.marshalNTransaction2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐTransaction(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Query_stateChanges(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_FlagsChange_transaction(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Query", + Object: "FlagsChange", Field: field, IsMethod: true, IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { - case "edges": - return ec.fieldContext_StateChangeConnection_edges(ctx, field) - case "pageInfo": - return ec.fieldContext_StateChangeConnection_pageInfo(ctx, field) + case "hash": + return ec.fieldContext_Transaction_hash(ctx, field) + case "envelopeXdr": + return ec.fieldContext_Transaction_envelopeXdr(ctx, field) + case "resultXdr": + return ec.fieldContext_Transaction_resultXdr(ctx, field) + case "metaXdr": + return ec.fieldContext_Transaction_metaXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Transaction_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Transaction_ingestedAt(ctx, field) + case "operations": + return ec.fieldContext_Transaction_operations(ctx, field) + case "accounts": + return ec.fieldContext_Transaction_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Transaction_stateChanges(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type StateChangeConnection", field.Name) + return nil, fmt.Errorf("no field named %q was found under type Transaction", field.Name) }, } - defer func() { - if r := recover(); r != nil { - err = ec.Recover(ctx, r) - ec.Error(ctx, err) - } - }() - ctx = graphql.WithFieldContext(ctx, fc) - if fc.Args, err = ec.field_Query_stateChanges_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { - ec.Error(ctx, err) - return fc, err - } return fc, nil } -func (ec *executionContext) _Query___type(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Query___type(ctx, field) +func (ec *executionContext) _FlagsChange_flags(ctx context.Context, field graphql.CollectedField, obj *types.FlagsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_FlagsChange_flags(ctx, field) if err != nil { return graphql.Null } @@ -4028,70 +4741,38 @@ func (ec *executionContext) _Query___type(ctx context.Context, field graphql.Col }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.introspectType(fc.Args["name"].(string)) + return ec.resolvers.FlagsChange().Flags(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*introspection.Type) + res := resTmp.([]string) fc.Result = res - return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) + return ec.marshalNString2ᚕstringᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Query___type(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_FlagsChange_flags(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Query", + Object: "FlagsChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "kind": - return ec.fieldContext___Type_kind(ctx, field) - case "name": - return ec.fieldContext___Type_name(ctx, field) - case "description": - return ec.fieldContext___Type_description(ctx, field) - case "specifiedByURL": - return ec.fieldContext___Type_specifiedByURL(ctx, field) - case "fields": - return ec.fieldContext___Type_fields(ctx, field) - case "interfaces": - return ec.fieldContext___Type_interfaces(ctx, field) - case "possibleTypes": - return ec.fieldContext___Type_possibleTypes(ctx, field) - case "enumValues": - return ec.fieldContext___Type_enumValues(ctx, field) - case "inputFields": - return ec.fieldContext___Type_inputFields(ctx, field) - case "ofType": - return ec.fieldContext___Type_ofType(ctx, field) - case "isOneOf": - return ec.fieldContext___Type_isOneOf(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + return nil, errors.New("field of type String does not have child fields") }, } - defer func() { - if r := recover(); r != nil { - err = ec.Recover(ctx, r) - ec.Error(ctx, err) - } - }() - ctx = graphql.WithFieldContext(ctx, fc) - if fc.Args, err = ec.field_Query___type_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { - ec.Error(ctx, err) - return fc, err - } return fc, nil } -func (ec *executionContext) _Query___schema(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Query___schema(ctx, field) +func (ec *executionContext) _MetadataChange_type(ctx context.Context, field graphql.CollectedField, obj *types.MetadataStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_MetadataChange_type(ctx, field) if err != nil { return graphql.Null } @@ -4104,49 +4785,38 @@ func (ec *executionContext) _Query___schema(ctx context.Context, field graphql.C }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.introspectSchema() + return ec.resolvers.MetadataChange().Type(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*introspection.Schema) + res := resTmp.(types.StateChangeCategory) fc.Result = res - return ec.marshalO__Schema2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐSchema(ctx, field.Selections, res) + return ec.marshalNStateChangeCategory2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeCategory(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Query___schema(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_MetadataChange_type(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Query", + Object: "MetadataChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "description": - return ec.fieldContext___Schema_description(ctx, field) - case "types": - return ec.fieldContext___Schema_types(ctx, field) - case "queryType": - return ec.fieldContext___Schema_queryType(ctx, field) - case "mutationType": - return ec.fieldContext___Schema_mutationType(ctx, field) - case "subscriptionType": - return ec.fieldContext___Schema_subscriptionType(ctx, field) - case "directives": - return ec.fieldContext___Schema_directives(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type __Schema", field.Name) + return nil, errors.New("field of type StateChangeCategory does not have child fields") }, } return fc, nil } -func (ec *executionContext) _RegisterAccountPayload_success(ctx context.Context, field graphql.CollectedField, obj *RegisterAccountPayload) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_RegisterAccountPayload_success(ctx, field) +func (ec *executionContext) _MetadataChange_reason(ctx context.Context, field graphql.CollectedField, obj *types.MetadataStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_MetadataChange_reason(ctx, field) if err != nil { return graphql.Null } @@ -4159,7 +4829,7 @@ func (ec *executionContext) _RegisterAccountPayload_success(ctx context.Context, }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Success, nil + return ec.resolvers.MetadataChange().Reason(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -4171,26 +4841,26 @@ func (ec *executionContext) _RegisterAccountPayload_success(ctx context.Context, } return graphql.Null } - res := resTmp.(bool) + res := resTmp.(types.StateChangeReason) fc.Result = res - return ec.marshalNBoolean2bool(ctx, field.Selections, res) + return ec.marshalNStateChangeReason2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeReason(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_RegisterAccountPayload_success(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_MetadataChange_reason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "RegisterAccountPayload", + Object: "MetadataChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Boolean does not have child fields") + return nil, errors.New("field of type StateChangeReason does not have child fields") }, } return fc, nil } -func (ec *executionContext) _RegisterAccountPayload_account(ctx context.Context, field graphql.CollectedField, obj *RegisterAccountPayload) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_RegisterAccountPayload_account(ctx, field) +func (ec *executionContext) _MetadataChange_ingestedAt(ctx context.Context, field graphql.CollectedField, obj *types.MetadataStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_MetadataChange_ingestedAt(ctx, field) if err != nil { return graphql.Null } @@ -4203,45 +4873,38 @@ func (ec *executionContext) _RegisterAccountPayload_account(ctx context.Context, }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Account, nil + return obj.IngestedAt, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*types.Account) + res := resTmp.(time.Time) fc.Result = res - return ec.marshalOAccount2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccount(ctx, field.Selections, res) + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_RegisterAccountPayload_account(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_MetadataChange_ingestedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "RegisterAccountPayload", + Object: "MetadataChange", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "address": - return ec.fieldContext_Account_address(ctx, field) - case "transactions": - return ec.fieldContext_Account_transactions(ctx, field) - case "operations": - return ec.fieldContext_Account_operations(ctx, field) - case "stateChanges": - return ec.fieldContext_Account_stateChanges(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type Account", field.Name) + return nil, errors.New("field of type Time does not have child fields") }, } return fc, nil } -func (ec *executionContext) _StateChange_accountId(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_accountId(ctx, field) +func (ec *executionContext) _MetadataChange_ledgerCreatedAt(ctx context.Context, field graphql.CollectedField, obj *types.MetadataStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_MetadataChange_ledgerCreatedAt(ctx, field) if err != nil { return graphql.Null } @@ -4254,7 +4917,7 @@ func (ec *executionContext) _StateChange_accountId(ctx context.Context, field gr }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.AccountID, nil + return obj.LedgerCreatedAt, nil }) if err != nil { ec.Error(ctx, err) @@ -4266,26 +4929,26 @@ func (ec *executionContext) _StateChange_accountId(ctx context.Context, field gr } return graphql.Null } - res := resTmp.(string) + res := resTmp.(time.Time) fc.Result = res - return ec.marshalNString2string(ctx, field.Selections, res) + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_accountId(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_MetadataChange_ledgerCreatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "MetadataChange", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type Time does not have child fields") }, } return fc, nil } -func (ec *executionContext) _StateChange_stateChangeCategory(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_stateChangeCategory(ctx, field) +func (ec *executionContext) _MetadataChange_ledgerNumber(ctx context.Context, field graphql.CollectedField, obj *types.MetadataStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_MetadataChange_ledgerNumber(ctx, field) if err != nil { return graphql.Null } @@ -4298,7 +4961,7 @@ func (ec *executionContext) _StateChange_stateChangeCategory(ctx context.Context }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.StateChangeCategory, nil + return obj.LedgerNumber, nil }) if err != nil { ec.Error(ctx, err) @@ -4310,26 +4973,26 @@ func (ec *executionContext) _StateChange_stateChangeCategory(ctx context.Context } return graphql.Null } - res := resTmp.(types.StateChangeCategory) + res := resTmp.(uint32) fc.Result = res - return ec.marshalNStateChangeCategory2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeCategory(ctx, field.Selections, res) + return ec.marshalNUInt322uint32(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_stateChangeCategory(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_MetadataChange_ledgerNumber(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "MetadataChange", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type StateChangeCategory does not have child fields") + return nil, errors.New("field of type UInt32 does not have child fields") }, } return fc, nil } -func (ec *executionContext) _StateChange_stateChangeReason(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_stateChangeReason(ctx, field) +func (ec *executionContext) _MetadataChange_account(ctx context.Context, field graphql.CollectedField, obj *types.MetadataStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_MetadataChange_account(ctx, field) if err != nil { return graphql.Null } @@ -4342,35 +5005,48 @@ func (ec *executionContext) _StateChange_stateChangeReason(ctx context.Context, }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.StateChangeReason, nil + return ec.resolvers.MetadataChange().Account(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*types.StateChangeReason) + res := resTmp.(*types.Account) fc.Result = res - return ec.marshalOStateChangeReason2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeReason(ctx, field.Selections, res) + return ec.marshalNAccount2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccount(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_stateChangeReason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_MetadataChange_account(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "MetadataChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type StateChangeReason does not have child fields") + switch field.Name { + case "address": + return ec.fieldContext_Account_address(ctx, field) + case "transactions": + return ec.fieldContext_Account_transactions(ctx, field) + case "operations": + return ec.fieldContext_Account_operations(ctx, field) + case "stateChanges": + return ec.fieldContext_Account_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Account", field.Name) }, } return fc, nil } -func (ec *executionContext) _StateChange_ingestedAt(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_ingestedAt(ctx, field) +func (ec *executionContext) _MetadataChange_operation(ctx context.Context, field graphql.CollectedField, obj *types.MetadataStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_MetadataChange_operation(ctx, field) if err != nil { return graphql.Null } @@ -4383,38 +5059,55 @@ func (ec *executionContext) _StateChange_ingestedAt(ctx context.Context, field g }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.IngestedAt, nil + return ec.resolvers.MetadataChange().Operation(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } return graphql.Null } - res := resTmp.(time.Time) + res := resTmp.(*types.Operation) fc.Result = res - return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) + return ec.marshalOOperation2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐOperation(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_ingestedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_MetadataChange_operation(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "MetadataChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Time does not have child fields") + switch field.Name { + case "id": + return ec.fieldContext_Operation_id(ctx, field) + case "operationType": + return ec.fieldContext_Operation_operationType(ctx, field) + case "operationXdr": + return ec.fieldContext_Operation_operationXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Operation_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Operation_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Operation_ingestedAt(ctx, field) + case "transaction": + return ec.fieldContext_Operation_transaction(ctx, field) + case "accounts": + return ec.fieldContext_Operation_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Operation_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Operation", field.Name) }, } return fc, nil } -func (ec *executionContext) _StateChange_ledgerCreatedAt(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_ledgerCreatedAt(ctx, field) +func (ec *executionContext) _MetadataChange_transaction(ctx context.Context, field graphql.CollectedField, obj *types.MetadataStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_MetadataChange_transaction(ctx, field) if err != nil { return graphql.Null } @@ -4427,7 +5120,7 @@ func (ec *executionContext) _StateChange_ledgerCreatedAt(ctx context.Context, fi }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.LedgerCreatedAt, nil + return ec.resolvers.MetadataChange().Transaction(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -4439,26 +5132,48 @@ func (ec *executionContext) _StateChange_ledgerCreatedAt(ctx context.Context, fi } return graphql.Null } - res := resTmp.(time.Time) + res := resTmp.(*types.Transaction) fc.Result = res - return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) + return ec.marshalNTransaction2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐTransaction(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_ledgerCreatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_MetadataChange_transaction(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "MetadataChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Time does not have child fields") + switch field.Name { + case "hash": + return ec.fieldContext_Transaction_hash(ctx, field) + case "envelopeXdr": + return ec.fieldContext_Transaction_envelopeXdr(ctx, field) + case "resultXdr": + return ec.fieldContext_Transaction_resultXdr(ctx, field) + case "metaXdr": + return ec.fieldContext_Transaction_metaXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Transaction_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Transaction_ingestedAt(ctx, field) + case "operations": + return ec.fieldContext_Transaction_operations(ctx, field) + case "accounts": + return ec.fieldContext_Transaction_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Transaction_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Transaction", field.Name) }, } return fc, nil } -func (ec *executionContext) _StateChange_ledgerNumber(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_ledgerNumber(ctx, field) +func (ec *executionContext) _MetadataChange_keyValue(ctx context.Context, field graphql.CollectedField, obj *types.MetadataStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_MetadataChange_keyValue(ctx, field) if err != nil { return graphql.Null } @@ -4471,7 +5186,7 @@ func (ec *executionContext) _StateChange_ledgerNumber(ctx context.Context, field }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.LedgerNumber, nil + return ec.resolvers.MetadataChange().KeyValue(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -4483,26 +5198,26 @@ func (ec *executionContext) _StateChange_ledgerNumber(ctx context.Context, field } return graphql.Null } - res := resTmp.(uint32) + res := resTmp.(string) fc.Result = res - return ec.marshalNUInt322uint32(ctx, field.Selections, res) + return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_ledgerNumber(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_MetadataChange_keyValue(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "MetadataChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type UInt32 does not have child fields") + return nil, errors.New("field of type String does not have child fields") }, } return fc, nil } -func (ec *executionContext) _StateChange_tokenId(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_tokenId(ctx, field) +func (ec *executionContext) _Mutation_registerAccount(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Mutation_registerAccount(ctx, field) if err != nil { return graphql.Null } @@ -4515,35 +5230,55 @@ func (ec *executionContext) _StateChange_tokenId(ctx context.Context, field grap }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.StateChange().TokenID(rctx, obj) + return ec.resolvers.Mutation().RegisterAccount(rctx, fc.Args["input"].(RegisterAccountInput)) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(*RegisterAccountPayload) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNRegisterAccountPayload2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐRegisterAccountPayload(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_tokenId(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Mutation_registerAccount(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "Mutation", Field: field, IsMethod: true, IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") - }, - } + switch field.Name { + case "success": + return ec.fieldContext_RegisterAccountPayload_success(ctx, field) + case "account": + return ec.fieldContext_RegisterAccountPayload_account(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type RegisterAccountPayload", field.Name) + }, + } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_Mutation_registerAccount_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } return fc, nil } -func (ec *executionContext) _StateChange_amount(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_amount(ctx, field) +func (ec *executionContext) _Mutation_deregisterAccount(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Mutation_deregisterAccount(ctx, field) if err != nil { return graphql.Null } @@ -4556,35 +5291,55 @@ func (ec *executionContext) _StateChange_amount(ctx context.Context, field graph }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.StateChange().Amount(rctx, obj) + return ec.resolvers.Mutation().DeregisterAccount(rctx, fc.Args["input"].(DeregisterAccountInput)) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(*DeregisterAccountPayload) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNDeregisterAccountPayload2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐDeregisterAccountPayload(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_amount(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Mutation_deregisterAccount(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "Mutation", Field: field, IsMethod: true, IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + switch field.Name { + case "success": + return ec.fieldContext_DeregisterAccountPayload_success(ctx, field) + case "message": + return ec.fieldContext_DeregisterAccountPayload_message(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type DeregisterAccountPayload", field.Name) }, } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_Mutation_deregisterAccount_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } return fc, nil } -func (ec *executionContext) _StateChange_claimableBalanceId(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_claimableBalanceId(ctx, field) +func (ec *executionContext) _Mutation_buildTransaction(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Mutation_buildTransaction(ctx, field) if err != nil { return graphql.Null } @@ -4597,35 +5352,55 @@ func (ec *executionContext) _StateChange_claimableBalanceId(ctx context.Context, }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.StateChange().ClaimableBalanceID(rctx, obj) + return ec.resolvers.Mutation().BuildTransaction(rctx, fc.Args["input"].(BuildTransactionInput)) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(*BuildTransactionPayload) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNBuildTransactionPayload2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐBuildTransactionPayload(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_claimableBalanceId(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Mutation_buildTransaction(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "Mutation", Field: field, IsMethod: true, IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + switch field.Name { + case "success": + return ec.fieldContext_BuildTransactionPayload_success(ctx, field) + case "transactionXdr": + return ec.fieldContext_BuildTransactionPayload_transactionXdr(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type BuildTransactionPayload", field.Name) }, } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_Mutation_buildTransaction_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } return fc, nil } -func (ec *executionContext) _StateChange_liquidityPoolId(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_liquidityPoolId(ctx, field) +func (ec *executionContext) _Operation_id(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Operation_id(ctx, field) if err != nil { return graphql.Null } @@ -4638,35 +5413,38 @@ func (ec *executionContext) _StateChange_liquidityPoolId(ctx context.Context, fi }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.StateChange().LiquidityPoolID(rctx, obj) + return obj.ID, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(int64) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNInt642int64(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_liquidityPoolId(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Operation_id(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "Operation", Field: field, - IsMethod: true, - IsResolver: true, + IsMethod: false, + IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type Int64 does not have child fields") }, } return fc, nil } -func (ec *executionContext) _StateChange_offerId(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_offerId(ctx, field) +func (ec *executionContext) _Operation_operationType(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Operation_operationType(ctx, field) if err != nil { return graphql.Null } @@ -4679,35 +5457,38 @@ func (ec *executionContext) _StateChange_offerId(ctx context.Context, field grap }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.StateChange().OfferID(rctx, obj) + return obj.OperationType, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(types.OperationType) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNOperationType2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐOperationType(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_offerId(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Operation_operationType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "Operation", Field: field, - IsMethod: true, - IsResolver: true, + IsMethod: false, + IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type OperationType does not have child fields") }, } return fc, nil } -func (ec *executionContext) _StateChange_signerAccountId(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_signerAccountId(ctx, field) +func (ec *executionContext) _Operation_operationXdr(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Operation_operationXdr(ctx, field) if err != nil { return graphql.Null } @@ -4720,26 +5501,29 @@ func (ec *executionContext) _StateChange_signerAccountId(ctx context.Context, fi }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.StateChange().SignerAccountID(rctx, obj) + return obj.OperationXDR, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(string) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_signerAccountId(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Operation_operationXdr(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "Operation", Field: field, - IsMethod: true, - IsResolver: true, + IsMethod: false, + IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { return nil, errors.New("field of type String does not have child fields") }, @@ -4747,8 +5531,8 @@ func (ec *executionContext) fieldContext_StateChange_signerAccountId(_ context.C return fc, nil } -func (ec *executionContext) _StateChange_spenderAccountId(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_spenderAccountId(ctx, field) +func (ec *executionContext) _Operation_ledgerNumber(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Operation_ledgerNumber(ctx, field) if err != nil { return graphql.Null } @@ -4761,35 +5545,38 @@ func (ec *executionContext) _StateChange_spenderAccountId(ctx context.Context, f }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.StateChange().SpenderAccountID(rctx, obj) + return obj.LedgerNumber, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(uint32) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNUInt322uint32(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_spenderAccountId(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Operation_ledgerNumber(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "Operation", Field: field, - IsMethod: true, - IsResolver: true, + IsMethod: false, + IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type UInt32 does not have child fields") }, } return fc, nil } -func (ec *executionContext) _StateChange_sponsoredAccountId(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_sponsoredAccountId(ctx, field) +func (ec *executionContext) _Operation_ledgerCreatedAt(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Operation_ledgerCreatedAt(ctx, field) if err != nil { return graphql.Null } @@ -4802,35 +5589,38 @@ func (ec *executionContext) _StateChange_sponsoredAccountId(ctx context.Context, }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.StateChange().SponsoredAccountID(rctx, obj) + return obj.LedgerCreatedAt, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(time.Time) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_sponsoredAccountId(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Operation_ledgerCreatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "Operation", Field: field, - IsMethod: true, - IsResolver: true, + IsMethod: false, + IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type Time does not have child fields") }, } return fc, nil } -func (ec *executionContext) _StateChange_sponsorAccountId(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_sponsorAccountId(ctx, field) +func (ec *executionContext) _Operation_ingestedAt(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Operation_ingestedAt(ctx, field) if err != nil { return graphql.Null } @@ -4843,35 +5633,38 @@ func (ec *executionContext) _StateChange_sponsorAccountId(ctx context.Context, f }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.StateChange().SponsorAccountID(rctx, obj) + return obj.IngestedAt, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(time.Time) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_sponsorAccountId(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Operation_ingestedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "Operation", Field: field, - IsMethod: true, - IsResolver: true, + IsMethod: false, + IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type Time does not have child fields") }, } return fc, nil } -func (ec *executionContext) _StateChange_signerWeights(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_signerWeights(ctx, field) +func (ec *executionContext) _Operation_transaction(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Operation_transaction(ctx, field) if err != nil { return graphql.Null } @@ -4884,35 +5677,60 @@ func (ec *executionContext) _StateChange_signerWeights(ctx context.Context, fiel }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.StateChange().SignerWeights(rctx, obj) + return ec.resolvers.Operation().Transaction(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(*types.Transaction) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNTransaction2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐTransaction(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_signerWeights(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Operation_transaction(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "Operation", Field: field, IsMethod: true, IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + switch field.Name { + case "hash": + return ec.fieldContext_Transaction_hash(ctx, field) + case "envelopeXdr": + return ec.fieldContext_Transaction_envelopeXdr(ctx, field) + case "resultXdr": + return ec.fieldContext_Transaction_resultXdr(ctx, field) + case "metaXdr": + return ec.fieldContext_Transaction_metaXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Transaction_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Transaction_ingestedAt(ctx, field) + case "operations": + return ec.fieldContext_Transaction_operations(ctx, field) + case "accounts": + return ec.fieldContext_Transaction_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Transaction_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Transaction", field.Name) }, } return fc, nil } -func (ec *executionContext) _StateChange_thresholds(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_thresholds(ctx, field) +func (ec *executionContext) _Operation_accounts(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Operation_accounts(ctx, field) if err != nil { return graphql.Null } @@ -4925,35 +5743,48 @@ func (ec *executionContext) _StateChange_thresholds(ctx context.Context, field g }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.StateChange().Thresholds(rctx, obj) + return ec.resolvers.Operation().Accounts(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.([]*types.Account) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNAccount2ᚕᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccountᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_thresholds(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Operation_accounts(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "Operation", Field: field, IsMethod: true, IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + switch field.Name { + case "address": + return ec.fieldContext_Account_address(ctx, field) + case "transactions": + return ec.fieldContext_Account_transactions(ctx, field) + case "operations": + return ec.fieldContext_Account_operations(ctx, field) + case "stateChanges": + return ec.fieldContext_Account_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Account", field.Name) }, } return fc, nil } -func (ec *executionContext) _StateChange_flags(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_flags(ctx, field) +func (ec *executionContext) _Operation_stateChanges(ctx context.Context, field graphql.CollectedField, obj *types.Operation) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Operation_stateChanges(ctx, field) if err != nil { return graphql.Null } @@ -4966,7 +5797,7 @@ func (ec *executionContext) _StateChange_flags(ctx context.Context, field graphq }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.StateChange().Flags(rctx, obj) + return ec.resolvers.Operation().StateChanges(rctx, obj, fc.Args["first"].(*int32), fc.Args["after"].(*string), fc.Args["last"].(*int32), fc.Args["before"].(*string)) }) if err != nil { ec.Error(ctx, err) @@ -4975,26 +5806,43 @@ func (ec *executionContext) _StateChange_flags(ctx context.Context, field graphq if resTmp == nil { return graphql.Null } - res := resTmp.([]string) + res := resTmp.(*StateChangeConnection) fc.Result = res - return ec.marshalOString2ᚕstringᚄ(ctx, field.Selections, res) + return ec.marshalOStateChangeConnection2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐStateChangeConnection(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_flags(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Operation_stateChanges(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "Operation", Field: field, IsMethod: true, IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + switch field.Name { + case "edges": + return ec.fieldContext_StateChangeConnection_edges(ctx, field) + case "pageInfo": + return ec.fieldContext_StateChangeConnection_pageInfo(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type StateChangeConnection", field.Name) }, } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_Operation_stateChanges_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } return fc, nil } -func (ec *executionContext) _StateChange_keyValue(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_keyValue(ctx, field) +func (ec *executionContext) _OperationConnection_edges(ctx context.Context, field graphql.CollectedField, obj *OperationConnection) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_OperationConnection_edges(ctx, field) if err != nil { return graphql.Null } @@ -5007,7 +5855,7 @@ func (ec *executionContext) _StateChange_keyValue(ctx context.Context, field gra }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.StateChange().KeyValue(rctx, obj) + return obj.Edges, nil }) if err != nil { ec.Error(ctx, err) @@ -5016,26 +5864,32 @@ func (ec *executionContext) _StateChange_keyValue(ctx context.Context, field gra if resTmp == nil { return graphql.Null } - res := resTmp.(*string) + res := resTmp.([]*OperationEdge) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalOOperationEdge2ᚕᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐOperationEdgeᚄ(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_keyValue(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_OperationConnection_edges(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "OperationConnection", Field: field, - IsMethod: true, - IsResolver: true, + IsMethod: false, + IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + switch field.Name { + case "node": + return ec.fieldContext_OperationEdge_node(ctx, field) + case "cursor": + return ec.fieldContext_OperationEdge_cursor(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type OperationEdge", field.Name) }, } return fc, nil } -func (ec *executionContext) _StateChange_operation(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_operation(ctx, field) +func (ec *executionContext) _OperationConnection_pageInfo(ctx context.Context, field graphql.CollectedField, obj *OperationConnection) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_OperationConnection_pageInfo(ctx, field) if err != nil { return graphql.Null } @@ -5048,55 +5902,48 @@ func (ec *executionContext) _StateChange_operation(ctx context.Context, field gr }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.StateChange().Operation(rctx, obj) + return obj.PageInfo, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*types.Operation) + res := resTmp.(*PageInfo) fc.Result = res - return ec.marshalOOperation2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐOperation(ctx, field.Selections, res) + return ec.marshalNPageInfo2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐPageInfo(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_operation(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_OperationConnection_pageInfo(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "OperationConnection", Field: field, - IsMethod: true, - IsResolver: true, + IsMethod: false, + IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { - case "id": - return ec.fieldContext_Operation_id(ctx, field) - case "operationType": - return ec.fieldContext_Operation_operationType(ctx, field) - case "operationXdr": - return ec.fieldContext_Operation_operationXdr(ctx, field) - case "ledgerNumber": - return ec.fieldContext_Operation_ledgerNumber(ctx, field) - case "ledgerCreatedAt": - return ec.fieldContext_Operation_ledgerCreatedAt(ctx, field) - case "ingestedAt": - return ec.fieldContext_Operation_ingestedAt(ctx, field) - case "transaction": - return ec.fieldContext_Operation_transaction(ctx, field) - case "accounts": - return ec.fieldContext_Operation_accounts(ctx, field) - case "stateChanges": - return ec.fieldContext_Operation_stateChanges(ctx, field) + case "startCursor": + return ec.fieldContext_PageInfo_startCursor(ctx, field) + case "endCursor": + return ec.fieldContext_PageInfo_endCursor(ctx, field) + case "hasNextPage": + return ec.fieldContext_PageInfo_hasNextPage(ctx, field) + case "hasPreviousPage": + return ec.fieldContext_PageInfo_hasPreviousPage(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type Operation", field.Name) + return nil, fmt.Errorf("no field named %q was found under type PageInfo", field.Name) }, } return fc, nil } -func (ec *executionContext) _StateChange_transaction(ctx context.Context, field graphql.CollectedField, obj *types.StateChange) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChange_transaction(ctx, field) +func (ec *executionContext) _OperationEdge_node(ctx context.Context, field graphql.CollectedField, obj *OperationEdge) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_OperationEdge_node(ctx, field) if err != nil { return graphql.Null } @@ -5109,60 +5956,55 @@ func (ec *executionContext) _StateChange_transaction(ctx context.Context, field }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.StateChange().Transaction(rctx, obj) + return obj.Node, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } return graphql.Null } - res := resTmp.(*types.Transaction) + res := resTmp.(*types.Operation) fc.Result = res - return ec.marshalNTransaction2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐTransaction(ctx, field.Selections, res) + return ec.marshalOOperation2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐOperation(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChange_transaction(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_OperationEdge_node(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChange", + Object: "OperationEdge", Field: field, - IsMethod: true, - IsResolver: true, + IsMethod: false, + IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { - case "hash": - return ec.fieldContext_Transaction_hash(ctx, field) - case "envelopeXdr": - return ec.fieldContext_Transaction_envelopeXdr(ctx, field) - case "resultXdr": - return ec.fieldContext_Transaction_resultXdr(ctx, field) - case "metaXdr": - return ec.fieldContext_Transaction_metaXdr(ctx, field) + case "id": + return ec.fieldContext_Operation_id(ctx, field) + case "operationType": + return ec.fieldContext_Operation_operationType(ctx, field) + case "operationXdr": + return ec.fieldContext_Operation_operationXdr(ctx, field) case "ledgerNumber": - return ec.fieldContext_Transaction_ledgerNumber(ctx, field) + return ec.fieldContext_Operation_ledgerNumber(ctx, field) case "ledgerCreatedAt": - return ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) + return ec.fieldContext_Operation_ledgerCreatedAt(ctx, field) case "ingestedAt": - return ec.fieldContext_Transaction_ingestedAt(ctx, field) - case "operations": - return ec.fieldContext_Transaction_operations(ctx, field) + return ec.fieldContext_Operation_ingestedAt(ctx, field) + case "transaction": + return ec.fieldContext_Operation_transaction(ctx, field) case "accounts": - return ec.fieldContext_Transaction_accounts(ctx, field) + return ec.fieldContext_Operation_accounts(ctx, field) case "stateChanges": - return ec.fieldContext_Transaction_stateChanges(ctx, field) + return ec.fieldContext_Operation_stateChanges(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type Transaction", field.Name) + return nil, fmt.Errorf("no field named %q was found under type Operation", field.Name) }, } return fc, nil } -func (ec *executionContext) _StateChangeConnection_edges(ctx context.Context, field graphql.CollectedField, obj *StateChangeConnection) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChangeConnection_edges(ctx, field) +func (ec *executionContext) _OperationEdge_cursor(ctx context.Context, field graphql.CollectedField, obj *OperationEdge) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_OperationEdge_cursor(ctx, field) if err != nil { return graphql.Null } @@ -5175,41 +6017,38 @@ func (ec *executionContext) _StateChangeConnection_edges(ctx context.Context, fi }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Edges, nil + return obj.Cursor, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.([]*StateChangeEdge) + res := resTmp.(string) fc.Result = res - return ec.marshalOStateChangeEdge2ᚕᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐStateChangeEdgeᚄ(ctx, field.Selections, res) + return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChangeConnection_edges(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_OperationEdge_cursor(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChangeConnection", + Object: "OperationEdge", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "node": - return ec.fieldContext_StateChangeEdge_node(ctx, field) - case "cursor": - return ec.fieldContext_StateChangeEdge_cursor(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type StateChangeEdge", field.Name) + return nil, errors.New("field of type String does not have child fields") }, } return fc, nil } -func (ec *executionContext) _StateChangeConnection_pageInfo(ctx context.Context, field graphql.CollectedField, obj *StateChangeConnection) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChangeConnection_pageInfo(ctx, field) +func (ec *executionContext) _PageInfo_startCursor(ctx context.Context, field graphql.CollectedField, obj *PageInfo) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_PageInfo_startCursor(ctx, field) if err != nil { return graphql.Null } @@ -5222,48 +6061,35 @@ func (ec *executionContext) _StateChangeConnection_pageInfo(ctx context.Context, }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.PageInfo, nil + return obj.StartCursor, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } return graphql.Null } - res := resTmp.(*PageInfo) + res := resTmp.(*string) fc.Result = res - return ec.marshalNPageInfo2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐPageInfo(ctx, field.Selections, res) + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChangeConnection_pageInfo(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_PageInfo_startCursor(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChangeConnection", + Object: "PageInfo", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "startCursor": - return ec.fieldContext_PageInfo_startCursor(ctx, field) - case "endCursor": - return ec.fieldContext_PageInfo_endCursor(ctx, field) - case "hasNextPage": - return ec.fieldContext_PageInfo_hasNextPage(ctx, field) - case "hasPreviousPage": - return ec.fieldContext_PageInfo_hasPreviousPage(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type PageInfo", field.Name) + return nil, errors.New("field of type String does not have child fields") }, } return fc, nil } -func (ec *executionContext) _StateChangeEdge_node(ctx context.Context, field graphql.CollectedField, obj *StateChangeEdge) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChangeEdge_node(ctx, field) +func (ec *executionContext) _PageInfo_endCursor(ctx context.Context, field graphql.CollectedField, obj *PageInfo) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_PageInfo_endCursor(ctx, field) if err != nil { return graphql.Null } @@ -5276,7 +6102,7 @@ func (ec *executionContext) _StateChangeEdge_node(ctx context.Context, field gra }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Node, nil + return obj.EndCursor, nil }) if err != nil { ec.Error(ctx, err) @@ -5285,70 +6111,26 @@ func (ec *executionContext) _StateChangeEdge_node(ctx context.Context, field gra if resTmp == nil { return graphql.Null } - res := resTmp.(*types.StateChange) + res := resTmp.(*string) fc.Result = res - return ec.marshalOStateChange2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChange(ctx, field.Selections, res) + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChangeEdge_node(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_PageInfo_endCursor(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChangeEdge", + Object: "PageInfo", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "accountId": - return ec.fieldContext_StateChange_accountId(ctx, field) - case "stateChangeCategory": - return ec.fieldContext_StateChange_stateChangeCategory(ctx, field) - case "stateChangeReason": - return ec.fieldContext_StateChange_stateChangeReason(ctx, field) - case "ingestedAt": - return ec.fieldContext_StateChange_ingestedAt(ctx, field) - case "ledgerCreatedAt": - return ec.fieldContext_StateChange_ledgerCreatedAt(ctx, field) - case "ledgerNumber": - return ec.fieldContext_StateChange_ledgerNumber(ctx, field) - case "tokenId": - return ec.fieldContext_StateChange_tokenId(ctx, field) - case "amount": - return ec.fieldContext_StateChange_amount(ctx, field) - case "claimableBalanceId": - return ec.fieldContext_StateChange_claimableBalanceId(ctx, field) - case "liquidityPoolId": - return ec.fieldContext_StateChange_liquidityPoolId(ctx, field) - case "offerId": - return ec.fieldContext_StateChange_offerId(ctx, field) - case "signerAccountId": - return ec.fieldContext_StateChange_signerAccountId(ctx, field) - case "spenderAccountId": - return ec.fieldContext_StateChange_spenderAccountId(ctx, field) - case "sponsoredAccountId": - return ec.fieldContext_StateChange_sponsoredAccountId(ctx, field) - case "sponsorAccountId": - return ec.fieldContext_StateChange_sponsorAccountId(ctx, field) - case "signerWeights": - return ec.fieldContext_StateChange_signerWeights(ctx, field) - case "thresholds": - return ec.fieldContext_StateChange_thresholds(ctx, field) - case "flags": - return ec.fieldContext_StateChange_flags(ctx, field) - case "keyValue": - return ec.fieldContext_StateChange_keyValue(ctx, field) - case "operation": - return ec.fieldContext_StateChange_operation(ctx, field) - case "transaction": - return ec.fieldContext_StateChange_transaction(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type StateChange", field.Name) + return nil, errors.New("field of type String does not have child fields") }, } return fc, nil } -func (ec *executionContext) _StateChangeEdge_cursor(ctx context.Context, field graphql.CollectedField, obj *StateChangeEdge) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_StateChangeEdge_cursor(ctx, field) +func (ec *executionContext) _PageInfo_hasNextPage(ctx context.Context, field graphql.CollectedField, obj *PageInfo) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_PageInfo_hasNextPage(ctx, field) if err != nil { return graphql.Null } @@ -5361,7 +6143,7 @@ func (ec *executionContext) _StateChangeEdge_cursor(ctx context.Context, field g }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Cursor, nil + return obj.HasNextPage, nil }) if err != nil { ec.Error(ctx, err) @@ -5373,26 +6155,26 @@ func (ec *executionContext) _StateChangeEdge_cursor(ctx context.Context, field g } return graphql.Null } - res := resTmp.(string) + res := resTmp.(bool) fc.Result = res - return ec.marshalNString2string(ctx, field.Selections, res) + return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_StateChangeEdge_cursor(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_PageInfo_hasNextPage(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "StateChangeEdge", + Object: "PageInfo", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type Boolean does not have child fields") }, } return fc, nil } -func (ec *executionContext) _Transaction_hash(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Transaction_hash(ctx, field) +func (ec *executionContext) _PageInfo_hasPreviousPage(ctx context.Context, field graphql.CollectedField, obj *PageInfo) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_PageInfo_hasPreviousPage(ctx, field) if err != nil { return graphql.Null } @@ -5405,7 +6187,7 @@ func (ec *executionContext) _Transaction_hash(ctx context.Context, field graphql }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Hash, nil + return obj.HasPreviousPage, nil }) if err != nil { ec.Error(ctx, err) @@ -5417,26 +6199,26 @@ func (ec *executionContext) _Transaction_hash(ctx context.Context, field graphql } return graphql.Null } - res := resTmp.(string) + res := resTmp.(bool) fc.Result = res - return ec.marshalNString2string(ctx, field.Selections, res) + return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Transaction_hash(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_PageInfo_hasPreviousPage(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Transaction", + Object: "PageInfo", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type Boolean does not have child fields") }, } return fc, nil } -func (ec *executionContext) _Transaction_envelopeXdr(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Transaction_envelopeXdr(ctx, field) +func (ec *executionContext) _Query_transactionByHash(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Query_transactionByHash(ctx, field) if err != nil { return graphql.Null } @@ -5449,82 +6231,68 @@ func (ec *executionContext) _Transaction_envelopeXdr(ctx context.Context, field }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.EnvelopeXDR, nil + return ec.resolvers.Query().TransactionByHash(rctx, fc.Args["hash"].(string)) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } return graphql.Null } - res := resTmp.(string) + res := resTmp.(*types.Transaction) fc.Result = res - return ec.marshalNString2string(ctx, field.Selections, res) + return ec.marshalOTransaction2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐTransaction(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Transaction_envelopeXdr(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Query_transactionByHash(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Transaction", + Object: "Query", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + switch field.Name { + case "hash": + return ec.fieldContext_Transaction_hash(ctx, field) + case "envelopeXdr": + return ec.fieldContext_Transaction_envelopeXdr(ctx, field) + case "resultXdr": + return ec.fieldContext_Transaction_resultXdr(ctx, field) + case "metaXdr": + return ec.fieldContext_Transaction_metaXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Transaction_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Transaction_ingestedAt(ctx, field) + case "operations": + return ec.fieldContext_Transaction_operations(ctx, field) + case "accounts": + return ec.fieldContext_Transaction_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Transaction_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Transaction", field.Name) }, } - return fc, nil -} - -func (ec *executionContext) _Transaction_resultXdr(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Transaction_resultXdr(ctx, field) - if err != nil { - return graphql.Null - } - ctx = graphql.WithFieldContext(ctx, fc) defer func() { if r := recover(); r != nil { - ec.Error(ctx, ec.Recover(ctx, r)) - ret = graphql.Null + err = ec.Recover(ctx, r) + ec.Error(ctx, err) } }() - resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { - ctx = rctx // use context from middleware stack in children - return obj.ResultXDR, nil - }) - if err != nil { + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_Query_transactionByHash_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { ec.Error(ctx, err) - return graphql.Null - } - if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } - return graphql.Null - } - res := resTmp.(string) - fc.Result = res - return ec.marshalNString2string(ctx, field.Selections, res) -} - -func (ec *executionContext) fieldContext_Transaction_resultXdr(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { - fc = &graphql.FieldContext{ - Object: "Transaction", - Field: field, - IsMethod: false, - IsResolver: false, - Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") - }, + return fc, err } return fc, nil } -func (ec *executionContext) _Transaction_metaXdr(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Transaction_metaXdr(ctx, field) +func (ec *executionContext) _Query_transactions(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Query_transactions(ctx, field) if err != nil { return graphql.Null } @@ -5537,82 +6305,52 @@ func (ec *executionContext) _Transaction_metaXdr(ctx context.Context, field grap }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.MetaXDR, nil + return ec.resolvers.Query().Transactions(rctx, fc.Args["first"].(*int32), fc.Args["after"].(*string), fc.Args["last"].(*int32), fc.Args["before"].(*string)) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } return graphql.Null } - res := resTmp.(string) + res := resTmp.(*TransactionConnection) fc.Result = res - return ec.marshalNString2string(ctx, field.Selections, res) + return ec.marshalOTransactionConnection2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐTransactionConnection(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Transaction_metaXdr(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Query_transactions(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Transaction", + Object: "Query", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + switch field.Name { + case "edges": + return ec.fieldContext_TransactionConnection_edges(ctx, field) + case "pageInfo": + return ec.fieldContext_TransactionConnection_pageInfo(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type TransactionConnection", field.Name) }, } - return fc, nil -} - -func (ec *executionContext) _Transaction_ledgerNumber(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Transaction_ledgerNumber(ctx, field) - if err != nil { - return graphql.Null - } - ctx = graphql.WithFieldContext(ctx, fc) defer func() { if r := recover(); r != nil { - ec.Error(ctx, ec.Recover(ctx, r)) - ret = graphql.Null + err = ec.Recover(ctx, r) + ec.Error(ctx, err) } }() - resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { - ctx = rctx // use context from middleware stack in children - return obj.LedgerNumber, nil - }) - if err != nil { + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_Query_transactions_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { ec.Error(ctx, err) - return graphql.Null - } - if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } - return graphql.Null - } - res := resTmp.(uint32) - fc.Result = res - return ec.marshalNUInt322uint32(ctx, field.Selections, res) -} - -func (ec *executionContext) fieldContext_Transaction_ledgerNumber(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { - fc = &graphql.FieldContext{ - Object: "Transaction", - Field: field, - IsMethod: false, - IsResolver: false, - Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type UInt32 does not have child fields") - }, + return fc, err } return fc, nil } -func (ec *executionContext) _Transaction_ledgerCreatedAt(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) +func (ec *executionContext) _Query_accountByAddress(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Query_accountByAddress(ctx, field) if err != nil { return graphql.Null } @@ -5625,82 +6363,56 @@ func (ec *executionContext) _Transaction_ledgerCreatedAt(ctx context.Context, fi }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.LedgerCreatedAt, nil + return ec.resolvers.Query().AccountByAddress(rctx, fc.Args["address"].(string)) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } return graphql.Null } - res := resTmp.(time.Time) + res := resTmp.(*types.Account) fc.Result = res - return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) + return ec.marshalOAccount2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccount(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Transaction_ledgerCreatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Query_accountByAddress(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Transaction", + Object: "Query", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Time does not have child fields") + switch field.Name { + case "address": + return ec.fieldContext_Account_address(ctx, field) + case "transactions": + return ec.fieldContext_Account_transactions(ctx, field) + case "operations": + return ec.fieldContext_Account_operations(ctx, field) + case "stateChanges": + return ec.fieldContext_Account_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Account", field.Name) }, } - return fc, nil -} - -func (ec *executionContext) _Transaction_ingestedAt(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Transaction_ingestedAt(ctx, field) - if err != nil { - return graphql.Null - } - ctx = graphql.WithFieldContext(ctx, fc) defer func() { if r := recover(); r != nil { - ec.Error(ctx, ec.Recover(ctx, r)) - ret = graphql.Null + err = ec.Recover(ctx, r) + ec.Error(ctx, err) } }() - resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { - ctx = rctx // use context from middleware stack in children - return obj.IngestedAt, nil - }) - if err != nil { + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_Query_accountByAddress_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { ec.Error(ctx, err) - return graphql.Null - } - if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } - return graphql.Null - } - res := resTmp.(time.Time) - fc.Result = res - return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) -} - -func (ec *executionContext) fieldContext_Transaction_ingestedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { - fc = &graphql.FieldContext{ - Object: "Transaction", - Field: field, - IsMethod: false, - IsResolver: false, - Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Time does not have child fields") - }, + return fc, err } return fc, nil } -func (ec *executionContext) _Transaction_operations(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Transaction_operations(ctx, field) +func (ec *executionContext) _Query_operations(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Query_operations(ctx, field) if err != nil { return graphql.Null } @@ -5713,7 +6425,7 @@ func (ec *executionContext) _Transaction_operations(ctx context.Context, field g }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Transaction().Operations(rctx, obj, fc.Args["first"].(*int32), fc.Args["after"].(*string), fc.Args["last"].(*int32), fc.Args["before"].(*string)) + return ec.resolvers.Query().Operations(rctx, fc.Args["first"].(*int32), fc.Args["after"].(*string), fc.Args["last"].(*int32), fc.Args["before"].(*string)) }) if err != nil { ec.Error(ctx, err) @@ -5727,9 +6439,9 @@ func (ec *executionContext) _Transaction_operations(ctx context.Context, field g return ec.marshalOOperationConnection2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐOperationConnection(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Transaction_operations(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Query_operations(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Transaction", + Object: "Query", Field: field, IsMethod: true, IsResolver: true, @@ -5750,15 +6462,15 @@ func (ec *executionContext) fieldContext_Transaction_operations(ctx context.Cont } }() ctx = graphql.WithFieldContext(ctx, fc) - if fc.Args, err = ec.field_Transaction_operations_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + if fc.Args, err = ec.field_Query_operations_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { ec.Error(ctx, err) return fc, err } return fc, nil } -func (ec *executionContext) _Transaction_accounts(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Transaction_accounts(ctx, field) +func (ec *executionContext) _Query_operationById(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Query_operationById(ctx, field) if err != nil { return graphql.Null } @@ -5771,48 +6483,66 @@ func (ec *executionContext) _Transaction_accounts(ctx context.Context, field gra }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Transaction().Accounts(rctx, obj) + return ec.resolvers.Query().OperationByID(rctx, fc.Args["id"].(int64)) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } return graphql.Null } - res := resTmp.([]*types.Account) + res := resTmp.(*types.Operation) fc.Result = res - return ec.marshalNAccount2ᚕᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccountᚄ(ctx, field.Selections, res) + return ec.marshalOOperation2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐOperation(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Transaction_accounts(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Query_operationById(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Transaction", + Object: "Query", Field: field, IsMethod: true, IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { - case "address": - return ec.fieldContext_Account_address(ctx, field) - case "transactions": - return ec.fieldContext_Account_transactions(ctx, field) - case "operations": - return ec.fieldContext_Account_operations(ctx, field) - case "stateChanges": - return ec.fieldContext_Account_stateChanges(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type Account", field.Name) - }, - } + case "id": + return ec.fieldContext_Operation_id(ctx, field) + case "operationType": + return ec.fieldContext_Operation_operationType(ctx, field) + case "operationXdr": + return ec.fieldContext_Operation_operationXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Operation_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Operation_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Operation_ingestedAt(ctx, field) + case "transaction": + return ec.fieldContext_Operation_transaction(ctx, field) + case "accounts": + return ec.fieldContext_Operation_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Operation_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Operation", field.Name) + }, + } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_Query_operationById_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } return fc, nil } -func (ec *executionContext) _Transaction_stateChanges(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_Transaction_stateChanges(ctx, field) +func (ec *executionContext) _Query_stateChanges(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Query_stateChanges(ctx, field) if err != nil { return graphql.Null } @@ -5825,7 +6555,7 @@ func (ec *executionContext) _Transaction_stateChanges(ctx context.Context, field }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return ec.resolvers.Transaction().StateChanges(rctx, obj, fc.Args["first"].(*int32), fc.Args["after"].(*string), fc.Args["last"].(*int32), fc.Args["before"].(*string)) + return ec.resolvers.Query().StateChanges(rctx, fc.Args["first"].(*int32), fc.Args["after"].(*string), fc.Args["last"].(*int32), fc.Args["before"].(*string)) }) if err != nil { ec.Error(ctx, err) @@ -5839,9 +6569,9 @@ func (ec *executionContext) _Transaction_stateChanges(ctx context.Context, field return ec.marshalOStateChangeConnection2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐStateChangeConnection(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_Transaction_stateChanges(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Query_stateChanges(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "Transaction", + Object: "Query", Field: field, IsMethod: true, IsResolver: true, @@ -5862,15 +6592,15 @@ func (ec *executionContext) fieldContext_Transaction_stateChanges(ctx context.Co } }() ctx = graphql.WithFieldContext(ctx, fc) - if fc.Args, err = ec.field_Transaction_stateChanges_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + if fc.Args, err = ec.field_Query_stateChanges_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { ec.Error(ctx, err) return fc, err } return fc, nil } -func (ec *executionContext) _TransactionConnection_edges(ctx context.Context, field graphql.CollectedField, obj *TransactionConnection) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_TransactionConnection_edges(ctx, field) +func (ec *executionContext) _Query___type(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Query___type(ctx, field) if err != nil { return graphql.Null } @@ -5883,7 +6613,7 @@ func (ec *executionContext) _TransactionConnection_edges(ctx context.Context, fi }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Edges, nil + return ec.introspectType(fc.Args["name"].(string)) }) if err != nil { ec.Error(ctx, err) @@ -5892,32 +6622,61 @@ func (ec *executionContext) _TransactionConnection_edges(ctx context.Context, fi if resTmp == nil { return graphql.Null } - res := resTmp.([]*TransactionEdge) + res := resTmp.(*introspection.Type) fc.Result = res - return ec.marshalOTransactionEdge2ᚕᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐTransactionEdgeᚄ(ctx, field.Selections, res) + return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TransactionConnection_edges(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Query___type(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "TransactionConnection", + Object: "Query", Field: field, - IsMethod: false, + IsMethod: true, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { - case "node": - return ec.fieldContext_TransactionEdge_node(ctx, field) - case "cursor": - return ec.fieldContext_TransactionEdge_cursor(ctx, field) + case "kind": + return ec.fieldContext___Type_kind(ctx, field) + case "name": + return ec.fieldContext___Type_name(ctx, field) + case "description": + return ec.fieldContext___Type_description(ctx, field) + case "specifiedByURL": + return ec.fieldContext___Type_specifiedByURL(ctx, field) + case "fields": + return ec.fieldContext___Type_fields(ctx, field) + case "interfaces": + return ec.fieldContext___Type_interfaces(ctx, field) + case "possibleTypes": + return ec.fieldContext___Type_possibleTypes(ctx, field) + case "enumValues": + return ec.fieldContext___Type_enumValues(ctx, field) + case "inputFields": + return ec.fieldContext___Type_inputFields(ctx, field) + case "ofType": + return ec.fieldContext___Type_ofType(ctx, field) + case "isOneOf": + return ec.fieldContext___Type_isOneOf(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type TransactionEdge", field.Name) + return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) }, } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_Query___type_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } return fc, nil } -func (ec *executionContext) _TransactionConnection_pageInfo(ctx context.Context, field graphql.CollectedField, obj *TransactionConnection) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_TransactionConnection_pageInfo(ctx, field) +func (ec *executionContext) _Query___schema(ctx context.Context, field graphql.CollectedField) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Query___schema(ctx, field) if err != nil { return graphql.Null } @@ -5930,48 +6689,49 @@ func (ec *executionContext) _TransactionConnection_pageInfo(ctx context.Context, }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.PageInfo, nil + return ec.introspectSchema() }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } return graphql.Null } - res := resTmp.(*PageInfo) + res := resTmp.(*introspection.Schema) fc.Result = res - return ec.marshalNPageInfo2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐPageInfo(ctx, field.Selections, res) + return ec.marshalO__Schema2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐSchema(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TransactionConnection_pageInfo(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_Query___schema(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "TransactionConnection", + Object: "Query", Field: field, - IsMethod: false, + IsMethod: true, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { - case "startCursor": - return ec.fieldContext_PageInfo_startCursor(ctx, field) - case "endCursor": - return ec.fieldContext_PageInfo_endCursor(ctx, field) - case "hasNextPage": - return ec.fieldContext_PageInfo_hasNextPage(ctx, field) - case "hasPreviousPage": - return ec.fieldContext_PageInfo_hasPreviousPage(ctx, field) + case "description": + return ec.fieldContext___Schema_description(ctx, field) + case "types": + return ec.fieldContext___Schema_types(ctx, field) + case "queryType": + return ec.fieldContext___Schema_queryType(ctx, field) + case "mutationType": + return ec.fieldContext___Schema_mutationType(ctx, field) + case "subscriptionType": + return ec.fieldContext___Schema_subscriptionType(ctx, field) + case "directives": + return ec.fieldContext___Schema_directives(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type PageInfo", field.Name) + return nil, fmt.Errorf("no field named %q was found under type __Schema", field.Name) }, } return fc, nil } -func (ec *executionContext) _TransactionEdge_node(ctx context.Context, field graphql.CollectedField, obj *TransactionEdge) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_TransactionEdge_node(ctx, field) +func (ec *executionContext) _RegisterAccountPayload_success(ctx context.Context, field graphql.CollectedField, obj *RegisterAccountPayload) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_RegisterAccountPayload_success(ctx, field) if err != nil { return graphql.Null } @@ -5984,57 +6744,38 @@ func (ec *executionContext) _TransactionEdge_node(ctx context.Context, field gra }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Node, nil + return obj.Success, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*types.Transaction) + res := resTmp.(bool) fc.Result = res - return ec.marshalOTransaction2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐTransaction(ctx, field.Selections, res) + return ec.marshalNBoolean2bool(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TransactionEdge_node(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_RegisterAccountPayload_success(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "TransactionEdge", + Object: "RegisterAccountPayload", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "hash": - return ec.fieldContext_Transaction_hash(ctx, field) - case "envelopeXdr": - return ec.fieldContext_Transaction_envelopeXdr(ctx, field) - case "resultXdr": - return ec.fieldContext_Transaction_resultXdr(ctx, field) - case "metaXdr": - return ec.fieldContext_Transaction_metaXdr(ctx, field) - case "ledgerNumber": - return ec.fieldContext_Transaction_ledgerNumber(ctx, field) - case "ledgerCreatedAt": - return ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) - case "ingestedAt": - return ec.fieldContext_Transaction_ingestedAt(ctx, field) - case "operations": - return ec.fieldContext_Transaction_operations(ctx, field) - case "accounts": - return ec.fieldContext_Transaction_accounts(ctx, field) - case "stateChanges": - return ec.fieldContext_Transaction_stateChanges(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type Transaction", field.Name) + return nil, errors.New("field of type Boolean does not have child fields") }, } return fc, nil } -func (ec *executionContext) _TransactionEdge_cursor(ctx context.Context, field graphql.CollectedField, obj *TransactionEdge) (ret graphql.Marshaler) { - fc, err := ec.fieldContext_TransactionEdge_cursor(ctx, field) +func (ec *executionContext) _RegisterAccountPayload_account(ctx context.Context, field graphql.CollectedField, obj *RegisterAccountPayload) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_RegisterAccountPayload_account(ctx, field) if err != nil { return graphql.Null } @@ -6047,38 +6788,45 @@ func (ec *executionContext) _TransactionEdge_cursor(ctx context.Context, field g }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Cursor, nil + return obj.Account, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } return graphql.Null } - res := resTmp.(string) + res := resTmp.(*types.Account) fc.Result = res - return ec.marshalNString2string(ctx, field.Selections, res) + return ec.marshalOAccount2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccount(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext_TransactionEdge_cursor(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_RegisterAccountPayload_account(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "TransactionEdge", + Object: "RegisterAccountPayload", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + switch field.Name { + case "address": + return ec.fieldContext_Account_address(ctx, field) + case "transactions": + return ec.fieldContext_Account_transactions(ctx, field) + case "operations": + return ec.fieldContext_Account_operations(ctx, field) + case "stateChanges": + return ec.fieldContext_Account_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Account", field.Name) }, } return fc, nil } -func (ec *executionContext) ___Directive_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Directive_name(ctx, field) +func (ec *executionContext) _ReservesChange_type(ctx context.Context, field graphql.CollectedField, obj *types.ReservesStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_ReservesChange_type(ctx, field) if err != nil { return graphql.Null } @@ -6091,7 +6839,7 @@ func (ec *executionContext) ___Directive_name(ctx context.Context, field graphql }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Name, nil + return ec.resolvers.ReservesChange().Type(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -6103,26 +6851,26 @@ func (ec *executionContext) ___Directive_name(ctx context.Context, field graphql } return graphql.Null } - res := resTmp.(string) + res := resTmp.(types.StateChangeCategory) fc.Result = res - return ec.marshalNString2string(ctx, field.Selections, res) + return ec.marshalNStateChangeCategory2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeCategory(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Directive_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ReservesChange_type(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Directive", + Object: "ReservesChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type StateChangeCategory does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___Directive_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Directive_description(ctx, field) +func (ec *executionContext) _ReservesChange_reason(ctx context.Context, field graphql.CollectedField, obj *types.ReservesStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_ReservesChange_reason(ctx, field) if err != nil { return graphql.Null } @@ -6135,35 +6883,38 @@ func (ec *executionContext) ___Directive_description(ctx context.Context, field }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Description(), nil + return ec.resolvers.ReservesChange().Reason(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(types.StateChangeReason) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNStateChangeReason2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeReason(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Directive_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ReservesChange_reason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Directive", + Object: "ReservesChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type StateChangeReason does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___Directive_isRepeatable(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Directive_isRepeatable(ctx, field) +func (ec *executionContext) _ReservesChange_ingestedAt(ctx context.Context, field graphql.CollectedField, obj *types.ReservesStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_ReservesChange_ingestedAt(ctx, field) if err != nil { return graphql.Null } @@ -6176,7 +6927,7 @@ func (ec *executionContext) ___Directive_isRepeatable(ctx context.Context, field }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.IsRepeatable, nil + return obj.IngestedAt, nil }) if err != nil { ec.Error(ctx, err) @@ -6188,26 +6939,26 @@ func (ec *executionContext) ___Directive_isRepeatable(ctx context.Context, field } return graphql.Null } - res := resTmp.(bool) + res := resTmp.(time.Time) fc.Result = res - return ec.marshalNBoolean2bool(ctx, field.Selections, res) + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Directive_isRepeatable(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ReservesChange_ingestedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Directive", + Object: "ReservesChange", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Boolean does not have child fields") + return nil, errors.New("field of type Time does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___Directive_locations(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Directive_locations(ctx, field) +func (ec *executionContext) _ReservesChange_ledgerCreatedAt(ctx context.Context, field graphql.CollectedField, obj *types.ReservesStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_ReservesChange_ledgerCreatedAt(ctx, field) if err != nil { return graphql.Null } @@ -6220,7 +6971,7 @@ func (ec *executionContext) ___Directive_locations(ctx context.Context, field gr }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Locations, nil + return obj.LedgerCreatedAt, nil }) if err != nil { ec.Error(ctx, err) @@ -6232,26 +6983,26 @@ func (ec *executionContext) ___Directive_locations(ctx context.Context, field gr } return graphql.Null } - res := resTmp.([]string) + res := resTmp.(time.Time) fc.Result = res - return ec.marshalN__DirectiveLocation2ᚕstringᚄ(ctx, field.Selections, res) + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Directive_locations(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ReservesChange_ledgerCreatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Directive", + Object: "ReservesChange", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type __DirectiveLocation does not have child fields") + return nil, errors.New("field of type Time does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___Directive_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Directive_args(ctx, field) +func (ec *executionContext) _ReservesChange_ledgerNumber(ctx context.Context, field graphql.CollectedField, obj *types.ReservesStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_ReservesChange_ledgerNumber(ctx, field) if err != nil { return graphql.Null } @@ -6264,7 +7015,7 @@ func (ec *executionContext) ___Directive_args(ctx context.Context, field graphql }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Args, nil + return obj.LedgerNumber, nil }) if err != nil { ec.Error(ctx, err) @@ -6276,51 +7027,26 @@ func (ec *executionContext) ___Directive_args(ctx context.Context, field graphql } return graphql.Null } - res := resTmp.([]introspection.InputValue) + res := resTmp.(uint32) fc.Result = res - return ec.marshalN__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx, field.Selections, res) + return ec.marshalNUInt322uint32(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Directive_args(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ReservesChange_ledgerNumber(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Directive", + Object: "ReservesChange", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "name": - return ec.fieldContext___InputValue_name(ctx, field) - case "description": - return ec.fieldContext___InputValue_description(ctx, field) - case "type": - return ec.fieldContext___InputValue_type(ctx, field) - case "defaultValue": - return ec.fieldContext___InputValue_defaultValue(ctx, field) - case "isDeprecated": - return ec.fieldContext___InputValue_isDeprecated(ctx, field) - case "deprecationReason": - return ec.fieldContext___InputValue_deprecationReason(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type __InputValue", field.Name) + return nil, errors.New("field of type UInt32 does not have child fields") }, } - defer func() { - if r := recover(); r != nil { - err = ec.Recover(ctx, r) - ec.Error(ctx, err) - } - }() - ctx = graphql.WithFieldContext(ctx, fc) - if fc.Args, err = ec.field___Directive_args_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { - ec.Error(ctx, err) - return fc, err - } return fc, nil } -func (ec *executionContext) ___EnumValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___EnumValue_name(ctx, field) +func (ec *executionContext) _ReservesChange_account(ctx context.Context, field graphql.CollectedField, obj *types.ReservesStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_ReservesChange_account(ctx, field) if err != nil { return graphql.Null } @@ -6333,7 +7059,7 @@ func (ec *executionContext) ___EnumValue_name(ctx context.Context, field graphql }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Name, nil + return ec.resolvers.ReservesChange().Account(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -6345,26 +7071,36 @@ func (ec *executionContext) ___EnumValue_name(ctx context.Context, field graphql } return graphql.Null } - res := resTmp.(string) + res := resTmp.(*types.Account) fc.Result = res - return ec.marshalNString2string(ctx, field.Selections, res) + return ec.marshalNAccount2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccount(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___EnumValue_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ReservesChange_account(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__EnumValue", + Object: "ReservesChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + switch field.Name { + case "address": + return ec.fieldContext_Account_address(ctx, field) + case "transactions": + return ec.fieldContext_Account_transactions(ctx, field) + case "operations": + return ec.fieldContext_Account_operations(ctx, field) + case "stateChanges": + return ec.fieldContext_Account_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Account", field.Name) }, } return fc, nil } -func (ec *executionContext) ___EnumValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___EnumValue_description(ctx, field) +func (ec *executionContext) _ReservesChange_operation(ctx context.Context, field graphql.CollectedField, obj *types.ReservesStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_ReservesChange_operation(ctx, field) if err != nil { return graphql.Null } @@ -6377,7 +7113,7 @@ func (ec *executionContext) ___EnumValue_description(ctx context.Context, field }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Description(), nil + return ec.resolvers.ReservesChange().Operation(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -6386,26 +7122,46 @@ func (ec *executionContext) ___EnumValue_description(ctx context.Context, field if resTmp == nil { return graphql.Null } - res := resTmp.(*string) + res := resTmp.(*types.Operation) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalOOperation2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐOperation(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___EnumValue_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ReservesChange_operation(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__EnumValue", + Object: "ReservesChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + switch field.Name { + case "id": + return ec.fieldContext_Operation_id(ctx, field) + case "operationType": + return ec.fieldContext_Operation_operationType(ctx, field) + case "operationXdr": + return ec.fieldContext_Operation_operationXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Operation_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Operation_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Operation_ingestedAt(ctx, field) + case "transaction": + return ec.fieldContext_Operation_transaction(ctx, field) + case "accounts": + return ec.fieldContext_Operation_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Operation_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Operation", field.Name) }, } return fc, nil } -func (ec *executionContext) ___EnumValue_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___EnumValue_isDeprecated(ctx, field) +func (ec *executionContext) _ReservesChange_transaction(ctx context.Context, field graphql.CollectedField, obj *types.ReservesStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_ReservesChange_transaction(ctx, field) if err != nil { return graphql.Null } @@ -6418,7 +7174,7 @@ func (ec *executionContext) ___EnumValue_isDeprecated(ctx context.Context, field }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.IsDeprecated(), nil + return ec.resolvers.ReservesChange().Transaction(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -6430,26 +7186,48 @@ func (ec *executionContext) ___EnumValue_isDeprecated(ctx context.Context, field } return graphql.Null } - res := resTmp.(bool) + res := resTmp.(*types.Transaction) fc.Result = res - return ec.marshalNBoolean2bool(ctx, field.Selections, res) + return ec.marshalNTransaction2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐTransaction(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___EnumValue_isDeprecated(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ReservesChange_transaction(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__EnumValue", + Object: "ReservesChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Boolean does not have child fields") + switch field.Name { + case "hash": + return ec.fieldContext_Transaction_hash(ctx, field) + case "envelopeXdr": + return ec.fieldContext_Transaction_envelopeXdr(ctx, field) + case "resultXdr": + return ec.fieldContext_Transaction_resultXdr(ctx, field) + case "metaXdr": + return ec.fieldContext_Transaction_metaXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Transaction_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Transaction_ingestedAt(ctx, field) + case "operations": + return ec.fieldContext_Transaction_operations(ctx, field) + case "accounts": + return ec.fieldContext_Transaction_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Transaction_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Transaction", field.Name) }, } return fc, nil } -func (ec *executionContext) ___EnumValue_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___EnumValue_deprecationReason(ctx, field) +func (ec *executionContext) _ReservesChange_sponsoredAddress(ctx context.Context, field graphql.CollectedField, obj *types.ReservesStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_ReservesChange_sponsoredAddress(ctx, field) if err != nil { return graphql.Null } @@ -6462,7 +7240,7 @@ func (ec *executionContext) ___EnumValue_deprecationReason(ctx context.Context, }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.DeprecationReason(), nil + return ec.resolvers.ReservesChange().SponsoredAddress(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -6476,12 +7254,12 @@ func (ec *executionContext) ___EnumValue_deprecationReason(ctx context.Context, return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___EnumValue_deprecationReason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ReservesChange_sponsoredAddress(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__EnumValue", + Object: "ReservesChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { return nil, errors.New("field of type String does not have child fields") }, @@ -6489,8 +7267,8 @@ func (ec *executionContext) fieldContext___EnumValue_deprecationReason(_ context return fc, nil } -func (ec *executionContext) ___Field_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Field_name(ctx, field) +func (ec *executionContext) _ReservesChange_sponsorAddress(ctx context.Context, field graphql.CollectedField, obj *types.ReservesStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_ReservesChange_sponsorAddress(ctx, field) if err != nil { return graphql.Null } @@ -6503,29 +7281,26 @@ func (ec *executionContext) ___Field_name(ctx context.Context, field graphql.Col }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Name, nil + return ec.resolvers.ReservesChange().SponsorAddress(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } return graphql.Null } - res := resTmp.(string) + res := resTmp.(*string) fc.Result = res - return ec.marshalNString2string(ctx, field.Selections, res) + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Field_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_ReservesChange_sponsorAddress(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Field", + Object: "ReservesChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { return nil, errors.New("field of type String does not have child fields") }, @@ -6533,8 +7308,8 @@ func (ec *executionContext) fieldContext___Field_name(_ context.Context, field g return fc, nil } -func (ec *executionContext) ___Field_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Field_description(ctx, field) +func (ec *executionContext) _SignerChange_type(ctx context.Context, field graphql.CollectedField, obj *types.SignerStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerChange_type(ctx, field) if err != nil { return graphql.Null } @@ -6547,35 +7322,38 @@ func (ec *executionContext) ___Field_description(ctx context.Context, field grap }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Description(), nil + return ec.resolvers.SignerChange().Type(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(types.StateChangeCategory) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNStateChangeCategory2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeCategory(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Field_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerChange_type(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Field", + Object: "SignerChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type StateChangeCategory does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Field_args(ctx, field) +func (ec *executionContext) _SignerChange_reason(ctx context.Context, field graphql.CollectedField, obj *types.SignerStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerChange_reason(ctx, field) if err != nil { return graphql.Null } @@ -6588,7 +7366,7 @@ func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.Col }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Args, nil + return ec.resolvers.SignerChange().Reason(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -6600,51 +7378,26 @@ func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.Col } return graphql.Null } - res := resTmp.([]introspection.InputValue) + res := resTmp.(types.StateChangeReason) fc.Result = res - return ec.marshalN__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx, field.Selections, res) + return ec.marshalNStateChangeReason2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeReason(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Field_args(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerChange_reason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Field", + Object: "SignerChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "name": - return ec.fieldContext___InputValue_name(ctx, field) - case "description": - return ec.fieldContext___InputValue_description(ctx, field) - case "type": - return ec.fieldContext___InputValue_type(ctx, field) - case "defaultValue": - return ec.fieldContext___InputValue_defaultValue(ctx, field) - case "isDeprecated": - return ec.fieldContext___InputValue_isDeprecated(ctx, field) - case "deprecationReason": - return ec.fieldContext___InputValue_deprecationReason(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type __InputValue", field.Name) + return nil, errors.New("field of type StateChangeReason does not have child fields") }, } - defer func() { - if r := recover(); r != nil { - err = ec.Recover(ctx, r) - ec.Error(ctx, err) - } - }() - ctx = graphql.WithFieldContext(ctx, fc) - if fc.Args, err = ec.field___Field_args_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { - ec.Error(ctx, err) - return fc, err - } return fc, nil } -func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Field_type(ctx, field) +func (ec *executionContext) _SignerChange_ingestedAt(ctx context.Context, field graphql.CollectedField, obj *types.SignerStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerChange_ingestedAt(ctx, field) if err != nil { return graphql.Null } @@ -6657,7 +7410,7 @@ func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.Col }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Type, nil + return obj.IngestedAt, nil }) if err != nil { ec.Error(ctx, err) @@ -6669,50 +7422,26 @@ func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.Col } return graphql.Null } - res := resTmp.(*introspection.Type) + res := resTmp.(time.Time) fc.Result = res - return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Field_type(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerChange_ingestedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Field", + Object: "SignerChange", Field: field, IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "kind": - return ec.fieldContext___Type_kind(ctx, field) - case "name": - return ec.fieldContext___Type_name(ctx, field) - case "description": - return ec.fieldContext___Type_description(ctx, field) - case "specifiedByURL": - return ec.fieldContext___Type_specifiedByURL(ctx, field) - case "fields": - return ec.fieldContext___Type_fields(ctx, field) - case "interfaces": - return ec.fieldContext___Type_interfaces(ctx, field) - case "possibleTypes": - return ec.fieldContext___Type_possibleTypes(ctx, field) - case "enumValues": - return ec.fieldContext___Type_enumValues(ctx, field) - case "inputFields": - return ec.fieldContext___Type_inputFields(ctx, field) - case "ofType": - return ec.fieldContext___Type_ofType(ctx, field) - case "isOneOf": - return ec.fieldContext___Type_isOneOf(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + return nil, errors.New("field of type Time does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___Field_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Field_isDeprecated(ctx, field) +func (ec *executionContext) _SignerChange_ledgerCreatedAt(ctx context.Context, field graphql.CollectedField, obj *types.SignerStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerChange_ledgerCreatedAt(ctx, field) if err != nil { return graphql.Null } @@ -6725,7 +7454,7 @@ func (ec *executionContext) ___Field_isDeprecated(ctx context.Context, field gra }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.IsDeprecated(), nil + return obj.LedgerCreatedAt, nil }) if err != nil { ec.Error(ctx, err) @@ -6737,26 +7466,26 @@ func (ec *executionContext) ___Field_isDeprecated(ctx context.Context, field gra } return graphql.Null } - res := resTmp.(bool) + res := resTmp.(time.Time) fc.Result = res - return ec.marshalNBoolean2bool(ctx, field.Selections, res) + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Field_isDeprecated(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerChange_ledgerCreatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Field", + Object: "SignerChange", Field: field, - IsMethod: true, + IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Boolean does not have child fields") + return nil, errors.New("field of type Time does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___Field_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Field_deprecationReason(ctx, field) +func (ec *executionContext) _SignerChange_ledgerNumber(ctx context.Context, field graphql.CollectedField, obj *types.SignerStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerChange_ledgerNumber(ctx, field) if err != nil { return graphql.Null } @@ -6769,35 +7498,38 @@ func (ec *executionContext) ___Field_deprecationReason(ctx context.Context, fiel }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.DeprecationReason(), nil + return obj.LedgerNumber, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(uint32) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNUInt322uint32(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Field_deprecationReason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerChange_ledgerNumber(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Field", + Object: "SignerChange", Field: field, - IsMethod: true, + IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type UInt32 does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___InputValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___InputValue_name(ctx, field) +func (ec *executionContext) _SignerChange_account(ctx context.Context, field graphql.CollectedField, obj *types.SignerStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerChange_account(ctx, field) if err != nil { return graphql.Null } @@ -6810,7 +7542,7 @@ func (ec *executionContext) ___InputValue_name(ctx context.Context, field graphq }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Name, nil + return ec.resolvers.SignerChange().Account(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -6822,26 +7554,36 @@ func (ec *executionContext) ___InputValue_name(ctx context.Context, field graphq } return graphql.Null } - res := resTmp.(string) + res := resTmp.(*types.Account) fc.Result = res - return ec.marshalNString2string(ctx, field.Selections, res) + return ec.marshalNAccount2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccount(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___InputValue_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerChange_account(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__InputValue", + Object: "SignerChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + switch field.Name { + case "address": + return ec.fieldContext_Account_address(ctx, field) + case "transactions": + return ec.fieldContext_Account_transactions(ctx, field) + case "operations": + return ec.fieldContext_Account_operations(ctx, field) + case "stateChanges": + return ec.fieldContext_Account_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Account", field.Name) }, } return fc, nil } -func (ec *executionContext) ___InputValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___InputValue_description(ctx, field) +func (ec *executionContext) _SignerChange_operation(ctx context.Context, field graphql.CollectedField, obj *types.SignerStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerChange_operation(ctx, field) if err != nil { return graphql.Null } @@ -6854,7 +7596,7 @@ func (ec *executionContext) ___InputValue_description(ctx context.Context, field }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Description(), nil + return ec.resolvers.SignerChange().Operation(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -6863,26 +7605,46 @@ func (ec *executionContext) ___InputValue_description(ctx context.Context, field if resTmp == nil { return graphql.Null } - res := resTmp.(*string) + res := resTmp.(*types.Operation) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalOOperation2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐOperation(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___InputValue_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerChange_operation(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__InputValue", + Object: "SignerChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + switch field.Name { + case "id": + return ec.fieldContext_Operation_id(ctx, field) + case "operationType": + return ec.fieldContext_Operation_operationType(ctx, field) + case "operationXdr": + return ec.fieldContext_Operation_operationXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Operation_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Operation_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Operation_ingestedAt(ctx, field) + case "transaction": + return ec.fieldContext_Operation_transaction(ctx, field) + case "accounts": + return ec.fieldContext_Operation_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Operation_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Operation", field.Name) }, } return fc, nil } -func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___InputValue_type(ctx, field) +func (ec *executionContext) _SignerChange_transaction(ctx context.Context, field graphql.CollectedField, obj *types.SignerStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerChange_transaction(ctx, field) if err != nil { return graphql.Null } @@ -6895,7 +7657,7 @@ func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphq }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Type, nil + return ec.resolvers.SignerChange().Transaction(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -6907,50 +7669,48 @@ func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphq } return graphql.Null } - res := resTmp.(*introspection.Type) + res := resTmp.(*types.Transaction) fc.Result = res - return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) + return ec.marshalNTransaction2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐTransaction(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___InputValue_type(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerChange_transaction(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__InputValue", + Object: "SignerChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { - case "kind": - return ec.fieldContext___Type_kind(ctx, field) - case "name": - return ec.fieldContext___Type_name(ctx, field) - case "description": - return ec.fieldContext___Type_description(ctx, field) - case "specifiedByURL": - return ec.fieldContext___Type_specifiedByURL(ctx, field) - case "fields": - return ec.fieldContext___Type_fields(ctx, field) - case "interfaces": - return ec.fieldContext___Type_interfaces(ctx, field) - case "possibleTypes": - return ec.fieldContext___Type_possibleTypes(ctx, field) - case "enumValues": - return ec.fieldContext___Type_enumValues(ctx, field) - case "inputFields": - return ec.fieldContext___Type_inputFields(ctx, field) - case "ofType": - return ec.fieldContext___Type_ofType(ctx, field) - case "isOneOf": - return ec.fieldContext___Type_isOneOf(ctx, field) + case "hash": + return ec.fieldContext_Transaction_hash(ctx, field) + case "envelopeXdr": + return ec.fieldContext_Transaction_envelopeXdr(ctx, field) + case "resultXdr": + return ec.fieldContext_Transaction_resultXdr(ctx, field) + case "metaXdr": + return ec.fieldContext_Transaction_metaXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Transaction_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Transaction_ingestedAt(ctx, field) + case "operations": + return ec.fieldContext_Transaction_operations(ctx, field) + case "accounts": + return ec.fieldContext_Transaction_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Transaction_stateChanges(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + return nil, fmt.Errorf("no field named %q was found under type Transaction", field.Name) }, } return fc, nil } -func (ec *executionContext) ___InputValue_defaultValue(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___InputValue_defaultValue(ctx, field) +func (ec *executionContext) _SignerChange_signerAddress(ctx context.Context, field graphql.CollectedField, obj *types.SignerStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerChange_signerAddress(ctx, field) if err != nil { return graphql.Null } @@ -6963,7 +7723,7 @@ func (ec *executionContext) ___InputValue_defaultValue(ctx context.Context, fiel }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.DefaultValue, nil + return ec.resolvers.SignerChange().SignerAddress(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -6977,12 +7737,12 @@ func (ec *executionContext) ___InputValue_defaultValue(ctx context.Context, fiel return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___InputValue_defaultValue(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerChange_signerAddress(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__InputValue", + Object: "SignerChange", Field: field, - IsMethod: false, - IsResolver: false, + IsMethod: true, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { return nil, errors.New("field of type String does not have child fields") }, @@ -6990,8 +7750,8 @@ func (ec *executionContext) fieldContext___InputValue_defaultValue(_ context.Con return fc, nil } -func (ec *executionContext) ___InputValue_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___InputValue_isDeprecated(ctx, field) +func (ec *executionContext) _SignerChange_signerWeights(ctx context.Context, field graphql.CollectedField, obj *types.SignerStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerChange_signerWeights(ctx, field) if err != nil { return graphql.Null } @@ -7004,38 +7764,35 @@ func (ec *executionContext) ___InputValue_isDeprecated(ctx context.Context, fiel }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.IsDeprecated(), nil + return ec.resolvers.SignerChange().SignerWeights(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } return graphql.Null } - res := resTmp.(bool) + res := resTmp.(*string) fc.Result = res - return ec.marshalNBoolean2bool(ctx, field.Selections, res) + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___InputValue_isDeprecated(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerChange_signerWeights(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__InputValue", + Object: "SignerChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Boolean does not have child fields") + return nil, errors.New("field of type String does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___InputValue_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___InputValue_deprecationReason(ctx, field) +func (ec *executionContext) _SignerThresholdsChange_type(ctx context.Context, field graphql.CollectedField, obj *types.SignerThresholdsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerThresholdsChange_type(ctx, field) if err != nil { return graphql.Null } @@ -7048,35 +7805,38 @@ func (ec *executionContext) ___InputValue_deprecationReason(ctx context.Context, }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.DeprecationReason(), nil + return ec.resolvers.SignerThresholdsChange().Type(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(types.StateChangeCategory) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNStateChangeCategory2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeCategory(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___InputValue_deprecationReason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerThresholdsChange_type(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__InputValue", + Object: "SignerThresholdsChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type StateChangeCategory does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___Schema_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Schema_description(ctx, field) +func (ec *executionContext) _SignerThresholdsChange_reason(ctx context.Context, field graphql.CollectedField, obj *types.SignerThresholdsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerThresholdsChange_reason(ctx, field) if err != nil { return graphql.Null } @@ -7089,35 +7849,38 @@ func (ec *executionContext) ___Schema_description(ctx context.Context, field gra }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Description(), nil + return ec.resolvers.SignerThresholdsChange().Reason(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(types.StateChangeReason) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNStateChangeReason2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeReason(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Schema_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerThresholdsChange_reason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Schema", + Object: "SignerThresholdsChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type StateChangeReason does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Schema_types(ctx, field) +func (ec *executionContext) _SignerThresholdsChange_ingestedAt(ctx context.Context, field graphql.CollectedField, obj *types.SignerThresholdsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerThresholdsChange_ingestedAt(ctx, field) if err != nil { return graphql.Null } @@ -7130,7 +7893,7 @@ func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.C }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Types(), nil + return obj.IngestedAt, nil }) if err != nil { ec.Error(ctx, err) @@ -7142,50 +7905,26 @@ func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.C } return graphql.Null } - res := resTmp.([]introspection.Type) + res := resTmp.(time.Time) fc.Result = res - return ec.marshalN__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx, field.Selections, res) + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Schema_types(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerThresholdsChange_ingestedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Schema", + Object: "SignerThresholdsChange", Field: field, - IsMethod: true, + IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "kind": - return ec.fieldContext___Type_kind(ctx, field) - case "name": - return ec.fieldContext___Type_name(ctx, field) - case "description": - return ec.fieldContext___Type_description(ctx, field) - case "specifiedByURL": - return ec.fieldContext___Type_specifiedByURL(ctx, field) - case "fields": - return ec.fieldContext___Type_fields(ctx, field) - case "interfaces": - return ec.fieldContext___Type_interfaces(ctx, field) - case "possibleTypes": - return ec.fieldContext___Type_possibleTypes(ctx, field) - case "enumValues": - return ec.fieldContext___Type_enumValues(ctx, field) - case "inputFields": - return ec.fieldContext___Type_inputFields(ctx, field) - case "ofType": - return ec.fieldContext___Type_ofType(ctx, field) - case "isOneOf": - return ec.fieldContext___Type_isOneOf(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + return nil, errors.New("field of type Time does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Schema_queryType(ctx, field) +func (ec *executionContext) _SignerThresholdsChange_ledgerCreatedAt(ctx context.Context, field graphql.CollectedField, obj *types.SignerThresholdsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerThresholdsChange_ledgerCreatedAt(ctx, field) if err != nil { return graphql.Null } @@ -7198,7 +7937,7 @@ func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graph }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.QueryType(), nil + return obj.LedgerCreatedAt, nil }) if err != nil { ec.Error(ctx, err) @@ -7210,50 +7949,26 @@ func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graph } return graphql.Null } - res := resTmp.(*introspection.Type) + res := resTmp.(time.Time) fc.Result = res - return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Schema_queryType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerThresholdsChange_ledgerCreatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Schema", + Object: "SignerThresholdsChange", Field: field, - IsMethod: true, + IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "kind": - return ec.fieldContext___Type_kind(ctx, field) - case "name": - return ec.fieldContext___Type_name(ctx, field) - case "description": - return ec.fieldContext___Type_description(ctx, field) - case "specifiedByURL": - return ec.fieldContext___Type_specifiedByURL(ctx, field) - case "fields": - return ec.fieldContext___Type_fields(ctx, field) - case "interfaces": - return ec.fieldContext___Type_interfaces(ctx, field) - case "possibleTypes": - return ec.fieldContext___Type_possibleTypes(ctx, field) - case "enumValues": - return ec.fieldContext___Type_enumValues(ctx, field) - case "inputFields": - return ec.fieldContext___Type_inputFields(ctx, field) - case "ofType": - return ec.fieldContext___Type_ofType(ctx, field) - case "isOneOf": - return ec.fieldContext___Type_isOneOf(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + return nil, errors.New("field of type Time does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Schema_mutationType(ctx, field) +func (ec *executionContext) _SignerThresholdsChange_ledgerNumber(ctx context.Context, field graphql.CollectedField, obj *types.SignerThresholdsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerThresholdsChange_ledgerNumber(ctx, field) if err != nil { return graphql.Null } @@ -7266,59 +7981,38 @@ func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field gr }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.MutationType(), nil + return obj.LedgerNumber, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*introspection.Type) + res := resTmp.(uint32) fc.Result = res - return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) + return ec.marshalNUInt322uint32(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Schema_mutationType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerThresholdsChange_ledgerNumber(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Schema", + Object: "SignerThresholdsChange", Field: field, - IsMethod: true, + IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "kind": - return ec.fieldContext___Type_kind(ctx, field) - case "name": - return ec.fieldContext___Type_name(ctx, field) - case "description": - return ec.fieldContext___Type_description(ctx, field) - case "specifiedByURL": - return ec.fieldContext___Type_specifiedByURL(ctx, field) - case "fields": - return ec.fieldContext___Type_fields(ctx, field) - case "interfaces": - return ec.fieldContext___Type_interfaces(ctx, field) - case "possibleTypes": - return ec.fieldContext___Type_possibleTypes(ctx, field) - case "enumValues": - return ec.fieldContext___Type_enumValues(ctx, field) - case "inputFields": - return ec.fieldContext___Type_inputFields(ctx, field) - case "ofType": - return ec.fieldContext___Type_ofType(ctx, field) - case "isOneOf": - return ec.fieldContext___Type_isOneOf(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + return nil, errors.New("field of type UInt32 does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Schema_subscriptionType(ctx, field) +func (ec *executionContext) _SignerThresholdsChange_account(ctx context.Context, field graphql.CollectedField, obj *types.SignerThresholdsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerThresholdsChange_account(ctx, field) if err != nil { return graphql.Null } @@ -7331,59 +8025,48 @@ func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, fiel }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.SubscriptionType(), nil + return ec.resolvers.SignerThresholdsChange().Account(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*introspection.Type) + res := resTmp.(*types.Account) fc.Result = res - return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) + return ec.marshalNAccount2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccount(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Schema_subscriptionType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerThresholdsChange_account(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Schema", + Object: "SignerThresholdsChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { - case "kind": - return ec.fieldContext___Type_kind(ctx, field) - case "name": - return ec.fieldContext___Type_name(ctx, field) - case "description": - return ec.fieldContext___Type_description(ctx, field) - case "specifiedByURL": - return ec.fieldContext___Type_specifiedByURL(ctx, field) - case "fields": - return ec.fieldContext___Type_fields(ctx, field) - case "interfaces": - return ec.fieldContext___Type_interfaces(ctx, field) - case "possibleTypes": - return ec.fieldContext___Type_possibleTypes(ctx, field) - case "enumValues": - return ec.fieldContext___Type_enumValues(ctx, field) - case "inputFields": - return ec.fieldContext___Type_inputFields(ctx, field) - case "ofType": - return ec.fieldContext___Type_ofType(ctx, field) - case "isOneOf": - return ec.fieldContext___Type_isOneOf(ctx, field) + case "address": + return ec.fieldContext_Account_address(ctx, field) + case "transactions": + return ec.fieldContext_Account_transactions(ctx, field) + case "operations": + return ec.fieldContext_Account_operations(ctx, field) + case "stateChanges": + return ec.fieldContext_Account_stateChanges(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + return nil, fmt.Errorf("no field named %q was found under type Account", field.Name) }, } return fc, nil } -func (ec *executionContext) ___Schema_directives(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Schema_directives(ctx, field) +func (ec *executionContext) _SignerThresholdsChange_operation(ctx context.Context, field graphql.CollectedField, obj *types.SignerThresholdsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerThresholdsChange_operation(ctx, field) if err != nil { return graphql.Null } @@ -7396,50 +8079,55 @@ func (ec *executionContext) ___Schema_directives(ctx context.Context, field grap }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Directives(), nil + return ec.resolvers.SignerThresholdsChange().Operation(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { - if !graphql.HasFieldError(ctx, fc) { - ec.Errorf(ctx, "must not be null") - } return graphql.Null } - res := resTmp.([]introspection.Directive) + res := resTmp.(*types.Operation) fc.Result = res - return ec.marshalN__Directive2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐDirectiveᚄ(ctx, field.Selections, res) + return ec.marshalOOperation2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐOperation(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Schema_directives(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerThresholdsChange_operation(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Schema", + Object: "SignerThresholdsChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { - case "name": - return ec.fieldContext___Directive_name(ctx, field) - case "description": - return ec.fieldContext___Directive_description(ctx, field) - case "isRepeatable": - return ec.fieldContext___Directive_isRepeatable(ctx, field) - case "locations": - return ec.fieldContext___Directive_locations(ctx, field) - case "args": - return ec.fieldContext___Directive_args(ctx, field) + case "id": + return ec.fieldContext_Operation_id(ctx, field) + case "operationType": + return ec.fieldContext_Operation_operationType(ctx, field) + case "operationXdr": + return ec.fieldContext_Operation_operationXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Operation_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Operation_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Operation_ingestedAt(ctx, field) + case "transaction": + return ec.fieldContext_Operation_transaction(ctx, field) + case "accounts": + return ec.fieldContext_Operation_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Operation_stateChanges(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type __Directive", field.Name) + return nil, fmt.Errorf("no field named %q was found under type Operation", field.Name) }, } return fc, nil } -func (ec *executionContext) ___Type_kind(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Type_kind(ctx, field) +func (ec *executionContext) _SignerThresholdsChange_transaction(ctx context.Context, field graphql.CollectedField, obj *types.SignerThresholdsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerThresholdsChange_transaction(ctx, field) if err != nil { return graphql.Null } @@ -7452,7 +8140,7 @@ func (ec *executionContext) ___Type_kind(ctx context.Context, field graphql.Coll }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Kind(), nil + return ec.resolvers.SignerThresholdsChange().Transaction(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -7464,26 +8152,48 @@ func (ec *executionContext) ___Type_kind(ctx context.Context, field graphql.Coll } return graphql.Null } - res := resTmp.(string) + res := resTmp.(*types.Transaction) fc.Result = res - return ec.marshalN__TypeKind2string(ctx, field.Selections, res) + return ec.marshalNTransaction2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐTransaction(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_kind(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerThresholdsChange_transaction(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Type", + Object: "SignerThresholdsChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type __TypeKind does not have child fields") + switch field.Name { + case "hash": + return ec.fieldContext_Transaction_hash(ctx, field) + case "envelopeXdr": + return ec.fieldContext_Transaction_envelopeXdr(ctx, field) + case "resultXdr": + return ec.fieldContext_Transaction_resultXdr(ctx, field) + case "metaXdr": + return ec.fieldContext_Transaction_metaXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Transaction_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Transaction_ingestedAt(ctx, field) + case "operations": + return ec.fieldContext_Transaction_operations(ctx, field) + case "accounts": + return ec.fieldContext_Transaction_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Transaction_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Transaction", field.Name) }, } return fc, nil } -func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Type_name(ctx, field) +func (ec *executionContext) _SignerThresholdsChange_thresholds(ctx context.Context, field graphql.CollectedField, obj *types.SignerThresholdsStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_SignerThresholdsChange_thresholds(ctx, field) if err != nil { return graphql.Null } @@ -7496,26 +8206,29 @@ func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.Coll }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Name(), nil + return ec.resolvers.SignerThresholdsChange().Thresholds(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(string) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_SignerThresholdsChange_thresholds(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Type", + Object: "SignerThresholdsChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { return nil, errors.New("field of type String does not have child fields") }, @@ -7523,8 +8236,8 @@ func (ec *executionContext) fieldContext___Type_name(_ context.Context, field gr return fc, nil } -func (ec *executionContext) ___Type_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Type_description(ctx, field) +func (ec *executionContext) _StandardBalanceChange_type(ctx context.Context, field graphql.CollectedField, obj *types.StandardBalanceStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_StandardBalanceChange_type(ctx, field) if err != nil { return graphql.Null } @@ -7537,35 +8250,38 @@ func (ec *executionContext) ___Type_description(ctx context.Context, field graph }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Description(), nil + return ec.resolvers.StandardBalanceChange().Type(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(types.StateChangeCategory) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNStateChangeCategory2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeCategory(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_StandardBalanceChange_type(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Type", + Object: "StandardBalanceChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type StateChangeCategory does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___Type_specifiedByURL(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Type_specifiedByURL(ctx, field) +func (ec *executionContext) _StandardBalanceChange_reason(ctx context.Context, field graphql.CollectedField, obj *types.StandardBalanceStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_StandardBalanceChange_reason(ctx, field) if err != nil { return graphql.Null } @@ -7578,35 +8294,38 @@ func (ec *executionContext) ___Type_specifiedByURL(ctx context.Context, field gr }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.SpecifiedByURL(), nil + return ec.resolvers.StandardBalanceChange().Reason(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*string) + res := resTmp.(types.StateChangeReason) fc.Result = res - return ec.marshalOString2ᚖstring(ctx, field.Selections, res) + return ec.marshalNStateChangeReason2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeReason(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_specifiedByURL(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_StandardBalanceChange_reason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Type", + Object: "StandardBalanceChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type String does not have child fields") + return nil, errors.New("field of type StateChangeReason does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Type_fields(ctx, field) +func (ec *executionContext) _StandardBalanceChange_ingestedAt(ctx context.Context, field graphql.CollectedField, obj *types.StandardBalanceStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_StandardBalanceChange_ingestedAt(ctx, field) if err != nil { return graphql.Null } @@ -7619,60 +8338,38 @@ func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.Co }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Fields(fc.Args["includeDeprecated"].(bool)), nil + return obj.IngestedAt, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.([]introspection.Field) + res := resTmp.(time.Time) fc.Result = res - return ec.marshalO__Field2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐFieldᚄ(ctx, field.Selections, res) + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_fields(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_StandardBalanceChange_ingestedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Type", + Object: "StandardBalanceChange", Field: field, - IsMethod: true, + IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "name": - return ec.fieldContext___Field_name(ctx, field) - case "description": - return ec.fieldContext___Field_description(ctx, field) - case "args": - return ec.fieldContext___Field_args(ctx, field) - case "type": - return ec.fieldContext___Field_type(ctx, field) - case "isDeprecated": - return ec.fieldContext___Field_isDeprecated(ctx, field) - case "deprecationReason": - return ec.fieldContext___Field_deprecationReason(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type __Field", field.Name) + return nil, errors.New("field of type Time does not have child fields") }, } - defer func() { - if r := recover(); r != nil { - err = ec.Recover(ctx, r) - ec.Error(ctx, err) - } - }() - ctx = graphql.WithFieldContext(ctx, fc) - if fc.Args, err = ec.field___Type_fields_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { - ec.Error(ctx, err) - return fc, err - } return fc, nil } -func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Type_interfaces(ctx, field) +func (ec *executionContext) _StandardBalanceChange_ledgerCreatedAt(ctx context.Context, field graphql.CollectedField, obj *types.StandardBalanceStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_StandardBalanceChange_ledgerCreatedAt(ctx, field) if err != nil { return graphql.Null } @@ -7685,59 +8382,38 @@ func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphq }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.Interfaces(), nil + return obj.LedgerCreatedAt, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.([]introspection.Type) + res := resTmp.(time.Time) fc.Result = res - return ec.marshalO__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx, field.Selections, res) + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_interfaces(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_StandardBalanceChange_ledgerCreatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Type", + Object: "StandardBalanceChange", Field: field, - IsMethod: true, + IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "kind": - return ec.fieldContext___Type_kind(ctx, field) - case "name": - return ec.fieldContext___Type_name(ctx, field) - case "description": - return ec.fieldContext___Type_description(ctx, field) - case "specifiedByURL": - return ec.fieldContext___Type_specifiedByURL(ctx, field) - case "fields": - return ec.fieldContext___Type_fields(ctx, field) - case "interfaces": - return ec.fieldContext___Type_interfaces(ctx, field) - case "possibleTypes": - return ec.fieldContext___Type_possibleTypes(ctx, field) - case "enumValues": - return ec.fieldContext___Type_enumValues(ctx, field) - case "inputFields": - return ec.fieldContext___Type_inputFields(ctx, field) - case "ofType": - return ec.fieldContext___Type_ofType(ctx, field) - case "isOneOf": - return ec.fieldContext___Type_isOneOf(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + return nil, errors.New("field of type Time does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___Type_possibleTypes(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Type_possibleTypes(ctx, field) +func (ec *executionContext) _StandardBalanceChange_ledgerNumber(ctx context.Context, field graphql.CollectedField, obj *types.StandardBalanceStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_StandardBalanceChange_ledgerNumber(ctx, field) if err != nil { return graphql.Null } @@ -7750,59 +8426,38 @@ func (ec *executionContext) ___Type_possibleTypes(ctx context.Context, field gra }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.PossibleTypes(), nil + return obj.LedgerNumber, nil }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.([]introspection.Type) + res := resTmp.(uint32) fc.Result = res - return ec.marshalO__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx, field.Selections, res) + return ec.marshalNUInt322uint32(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_possibleTypes(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_StandardBalanceChange_ledgerNumber(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Type", + Object: "StandardBalanceChange", Field: field, - IsMethod: true, + IsMethod: false, IsResolver: false, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - switch field.Name { - case "kind": - return ec.fieldContext___Type_kind(ctx, field) - case "name": - return ec.fieldContext___Type_name(ctx, field) - case "description": - return ec.fieldContext___Type_description(ctx, field) - case "specifiedByURL": - return ec.fieldContext___Type_specifiedByURL(ctx, field) - case "fields": - return ec.fieldContext___Type_fields(ctx, field) - case "interfaces": - return ec.fieldContext___Type_interfaces(ctx, field) - case "possibleTypes": - return ec.fieldContext___Type_possibleTypes(ctx, field) - case "enumValues": - return ec.fieldContext___Type_enumValues(ctx, field) - case "inputFields": - return ec.fieldContext___Type_inputFields(ctx, field) - case "ofType": - return ec.fieldContext___Type_ofType(ctx, field) - case "isOneOf": - return ec.fieldContext___Type_isOneOf(ctx, field) - } - return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + return nil, errors.New("field of type UInt32 does not have child fields") }, } return fc, nil } -func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Type_enumValues(ctx, field) +func (ec *executionContext) _StandardBalanceChange_account(ctx context.Context, field graphql.CollectedField, obj *types.StandardBalanceStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_StandardBalanceChange_account(ctx, field) if err != nil { return graphql.Null } @@ -7815,56 +8470,48 @@ func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphq }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.EnumValues(fc.Args["includeDeprecated"].(bool)), nil + return ec.resolvers.StandardBalanceChange().Account(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.([]introspection.EnumValue) + res := resTmp.(*types.Account) fc.Result = res - return ec.marshalO__EnumValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐEnumValueᚄ(ctx, field.Selections, res) + return ec.marshalNAccount2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccount(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_enumValues(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_StandardBalanceChange_account(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Type", + Object: "StandardBalanceChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { - case "name": - return ec.fieldContext___EnumValue_name(ctx, field) - case "description": - return ec.fieldContext___EnumValue_description(ctx, field) - case "isDeprecated": - return ec.fieldContext___EnumValue_isDeprecated(ctx, field) - case "deprecationReason": - return ec.fieldContext___EnumValue_deprecationReason(ctx, field) + case "address": + return ec.fieldContext_Account_address(ctx, field) + case "transactions": + return ec.fieldContext_Account_transactions(ctx, field) + case "operations": + return ec.fieldContext_Account_operations(ctx, field) + case "stateChanges": + return ec.fieldContext_Account_stateChanges(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type __EnumValue", field.Name) + return nil, fmt.Errorf("no field named %q was found under type Account", field.Name) }, } - defer func() { - if r := recover(); r != nil { - err = ec.Recover(ctx, r) - ec.Error(ctx, err) - } - }() - ctx = graphql.WithFieldContext(ctx, fc) - if fc.Args, err = ec.field___Type_enumValues_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { - ec.Error(ctx, err) - return fc, err - } return fc, nil } -func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Type_inputFields(ctx, field) +func (ec *executionContext) _StandardBalanceChange_operation(ctx context.Context, field graphql.CollectedField, obj *types.StandardBalanceStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_StandardBalanceChange_operation(ctx, field) if err != nil { return graphql.Null } @@ -7877,7 +8524,7 @@ func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graph }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.InputFields(), nil + return ec.resolvers.StandardBalanceChange().Operation(rctx, obj) }) if err != nil { ec.Error(ctx, err) @@ -7886,40 +8533,46 @@ func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graph if resTmp == nil { return graphql.Null } - res := resTmp.([]introspection.InputValue) + res := resTmp.(*types.Operation) fc.Result = res - return ec.marshalO__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx, field.Selections, res) + return ec.marshalOOperation2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐOperation(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_inputFields(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_StandardBalanceChange_operation(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Type", + Object: "StandardBalanceChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { - case "name": - return ec.fieldContext___InputValue_name(ctx, field) - case "description": - return ec.fieldContext___InputValue_description(ctx, field) - case "type": - return ec.fieldContext___InputValue_type(ctx, field) - case "defaultValue": - return ec.fieldContext___InputValue_defaultValue(ctx, field) - case "isDeprecated": - return ec.fieldContext___InputValue_isDeprecated(ctx, field) - case "deprecationReason": - return ec.fieldContext___InputValue_deprecationReason(ctx, field) + case "id": + return ec.fieldContext_Operation_id(ctx, field) + case "operationType": + return ec.fieldContext_Operation_operationType(ctx, field) + case "operationXdr": + return ec.fieldContext_Operation_operationXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Operation_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Operation_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Operation_ingestedAt(ctx, field) + case "transaction": + return ec.fieldContext_Operation_transaction(ctx, field) + case "accounts": + return ec.fieldContext_Operation_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Operation_stateChanges(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type __InputValue", field.Name) + return nil, fmt.Errorf("no field named %q was found under type Operation", field.Name) }, } return fc, nil } -func (ec *executionContext) ___Type_ofType(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Type_ofType(ctx, field) +func (ec *executionContext) _StandardBalanceChange_transaction(ctx context.Context, field graphql.CollectedField, obj *types.StandardBalanceStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_StandardBalanceChange_transaction(ctx, field) if err != nil { return graphql.Null } @@ -7932,59 +8585,60 @@ func (ec *executionContext) ___Type_ofType(ctx context.Context, field graphql.Co }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.OfType(), nil + return ec.resolvers.StandardBalanceChange().Transaction(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(*introspection.Type) + res := resTmp.(*types.Transaction) fc.Result = res - return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) + return ec.marshalNTransaction2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐTransaction(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_ofType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_StandardBalanceChange_transaction(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Type", + Object: "StandardBalanceChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { switch field.Name { - case "kind": - return ec.fieldContext___Type_kind(ctx, field) - case "name": - return ec.fieldContext___Type_name(ctx, field) - case "description": - return ec.fieldContext___Type_description(ctx, field) - case "specifiedByURL": - return ec.fieldContext___Type_specifiedByURL(ctx, field) - case "fields": - return ec.fieldContext___Type_fields(ctx, field) - case "interfaces": - return ec.fieldContext___Type_interfaces(ctx, field) - case "possibleTypes": - return ec.fieldContext___Type_possibleTypes(ctx, field) - case "enumValues": - return ec.fieldContext___Type_enumValues(ctx, field) - case "inputFields": - return ec.fieldContext___Type_inputFields(ctx, field) - case "ofType": - return ec.fieldContext___Type_ofType(ctx, field) - case "isOneOf": - return ec.fieldContext___Type_isOneOf(ctx, field) + case "hash": + return ec.fieldContext_Transaction_hash(ctx, field) + case "envelopeXdr": + return ec.fieldContext_Transaction_envelopeXdr(ctx, field) + case "resultXdr": + return ec.fieldContext_Transaction_resultXdr(ctx, field) + case "metaXdr": + return ec.fieldContext_Transaction_metaXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Transaction_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Transaction_ingestedAt(ctx, field) + case "operations": + return ec.fieldContext_Transaction_operations(ctx, field) + case "accounts": + return ec.fieldContext_Transaction_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Transaction_stateChanges(ctx, field) } - return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + return nil, fmt.Errorf("no field named %q was found under type Transaction", field.Name) }, } return fc, nil } -func (ec *executionContext) ___Type_isOneOf(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { - fc, err := ec.fieldContext___Type_isOneOf(ctx, field) +func (ec *executionContext) _StandardBalanceChange_tokenId(ctx context.Context, field graphql.CollectedField, obj *types.StandardBalanceStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_StandardBalanceChange_tokenId(ctx, field) if err != nil { return graphql.Null } @@ -7997,241 +8651,5649 @@ func (ec *executionContext) ___Type_isOneOf(ctx context.Context, field graphql.C }() resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { ctx = rctx // use context from middleware stack in children - return obj.IsOneOf(), nil + return ec.resolvers.StandardBalanceChange().TokenID(rctx, obj) }) if err != nil { ec.Error(ctx, err) return graphql.Null } if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } return graphql.Null } - res := resTmp.(bool) + res := resTmp.(string) fc.Result = res - return ec.marshalOBoolean2bool(ctx, field.Selections, res) + return ec.marshalNString2string(ctx, field.Selections, res) } -func (ec *executionContext) fieldContext___Type_isOneOf(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { +func (ec *executionContext) fieldContext_StandardBalanceChange_tokenId(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { fc = &graphql.FieldContext{ - Object: "__Type", + Object: "StandardBalanceChange", Field: field, IsMethod: true, - IsResolver: false, + IsResolver: true, Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { - return nil, errors.New("field of type Boolean does not have child fields") + return nil, errors.New("field of type String does not have child fields") }, } return fc, nil } -// endregion **************************** field.gotpl ***************************** - -// region **************************** input.gotpl ***************************** - -func (ec *executionContext) unmarshalInputBuildTransactionInput(ctx context.Context, obj any) (BuildTransactionInput, error) { - var it BuildTransactionInput +func (ec *executionContext) _StandardBalanceChange_amount(ctx context.Context, field graphql.CollectedField, obj *types.StandardBalanceStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_StandardBalanceChange_amount(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.StandardBalanceChange().Amount(rctx, obj) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_StandardBalanceChange_amount(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "StandardBalanceChange", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _StateChangeConnection_edges(ctx context.Context, field graphql.CollectedField, obj *StateChangeConnection) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_StateChangeConnection_edges(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Edges, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.([]*StateChangeEdge) + fc.Result = res + return ec.marshalOStateChangeEdge2ᚕᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐStateChangeEdgeᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_StateChangeConnection_edges(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "StateChangeConnection", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "node": + return ec.fieldContext_StateChangeEdge_node(ctx, field) + case "cursor": + return ec.fieldContext_StateChangeEdge_cursor(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type StateChangeEdge", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _StateChangeConnection_pageInfo(ctx context.Context, field graphql.CollectedField, obj *StateChangeConnection) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_StateChangeConnection_pageInfo(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.PageInfo, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(*PageInfo) + fc.Result = res + return ec.marshalNPageInfo2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐPageInfo(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_StateChangeConnection_pageInfo(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "StateChangeConnection", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "startCursor": + return ec.fieldContext_PageInfo_startCursor(ctx, field) + case "endCursor": + return ec.fieldContext_PageInfo_endCursor(ctx, field) + case "hasNextPage": + return ec.fieldContext_PageInfo_hasNextPage(ctx, field) + case "hasPreviousPage": + return ec.fieldContext_PageInfo_hasPreviousPage(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type PageInfo", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _StateChangeEdge_node(ctx context.Context, field graphql.CollectedField, obj *StateChangeEdge) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_StateChangeEdge_node(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Node, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(BaseStateChange) + fc.Result = res + return ec.marshalOBaseStateChange2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐBaseStateChange(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_StateChangeEdge_node(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "StateChangeEdge", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("FieldContext.Child cannot be called on type INTERFACE") + }, + } + return fc, nil +} + +func (ec *executionContext) _StateChangeEdge_cursor(ctx context.Context, field graphql.CollectedField, obj *StateChangeEdge) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_StateChangeEdge_cursor(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Cursor, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_StateChangeEdge_cursor(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "StateChangeEdge", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _Transaction_hash(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Transaction_hash(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Hash, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Transaction_hash(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Transaction", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _Transaction_envelopeXdr(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Transaction_envelopeXdr(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.EnvelopeXDR, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Transaction_envelopeXdr(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Transaction", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _Transaction_resultXdr(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Transaction_resultXdr(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.ResultXDR, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Transaction_resultXdr(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Transaction", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _Transaction_metaXdr(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Transaction_metaXdr(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.MetaXDR, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Transaction_metaXdr(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Transaction", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _Transaction_ledgerNumber(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Transaction_ledgerNumber(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.LedgerNumber, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(uint32) + fc.Result = res + return ec.marshalNUInt322uint32(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Transaction_ledgerNumber(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Transaction", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type UInt32 does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _Transaction_ledgerCreatedAt(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.LedgerCreatedAt, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(time.Time) + fc.Result = res + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Transaction_ledgerCreatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Transaction", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Time does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _Transaction_ingestedAt(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Transaction_ingestedAt(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.IngestedAt, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(time.Time) + fc.Result = res + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Transaction_ingestedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Transaction", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Time does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _Transaction_operations(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Transaction_operations(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Transaction().Operations(rctx, obj, fc.Args["first"].(*int32), fc.Args["after"].(*string), fc.Args["last"].(*int32), fc.Args["before"].(*string)) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*OperationConnection) + fc.Result = res + return ec.marshalOOperationConnection2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐOperationConnection(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Transaction_operations(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Transaction", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "edges": + return ec.fieldContext_OperationConnection_edges(ctx, field) + case "pageInfo": + return ec.fieldContext_OperationConnection_pageInfo(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type OperationConnection", field.Name) + }, + } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_Transaction_operations_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } + return fc, nil +} + +func (ec *executionContext) _Transaction_accounts(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Transaction_accounts(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Transaction().Accounts(rctx, obj) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]*types.Account) + fc.Result = res + return ec.marshalNAccount2ᚕᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccountᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Transaction_accounts(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Transaction", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "address": + return ec.fieldContext_Account_address(ctx, field) + case "transactions": + return ec.fieldContext_Account_transactions(ctx, field) + case "operations": + return ec.fieldContext_Account_operations(ctx, field) + case "stateChanges": + return ec.fieldContext_Account_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Account", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _Transaction_stateChanges(ctx context.Context, field graphql.CollectedField, obj *types.Transaction) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_Transaction_stateChanges(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.Transaction().StateChanges(rctx, obj, fc.Args["first"].(*int32), fc.Args["after"].(*string), fc.Args["last"].(*int32), fc.Args["before"].(*string)) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*StateChangeConnection) + fc.Result = res + return ec.marshalOStateChangeConnection2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐStateChangeConnection(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_Transaction_stateChanges(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "Transaction", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "edges": + return ec.fieldContext_StateChangeConnection_edges(ctx, field) + case "pageInfo": + return ec.fieldContext_StateChangeConnection_pageInfo(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type StateChangeConnection", field.Name) + }, + } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field_Transaction_stateChanges_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } + return fc, nil +} + +func (ec *executionContext) _TransactionConnection_edges(ctx context.Context, field graphql.CollectedField, obj *TransactionConnection) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TransactionConnection_edges(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Edges, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.([]*TransactionEdge) + fc.Result = res + return ec.marshalOTransactionEdge2ᚕᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐTransactionEdgeᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TransactionConnection_edges(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TransactionConnection", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "node": + return ec.fieldContext_TransactionEdge_node(ctx, field) + case "cursor": + return ec.fieldContext_TransactionEdge_cursor(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type TransactionEdge", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _TransactionConnection_pageInfo(ctx context.Context, field graphql.CollectedField, obj *TransactionConnection) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TransactionConnection_pageInfo(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.PageInfo, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(*PageInfo) + fc.Result = res + return ec.marshalNPageInfo2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐPageInfo(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TransactionConnection_pageInfo(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TransactionConnection", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "startCursor": + return ec.fieldContext_PageInfo_startCursor(ctx, field) + case "endCursor": + return ec.fieldContext_PageInfo_endCursor(ctx, field) + case "hasNextPage": + return ec.fieldContext_PageInfo_hasNextPage(ctx, field) + case "hasPreviousPage": + return ec.fieldContext_PageInfo_hasPreviousPage(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type PageInfo", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _TransactionEdge_node(ctx context.Context, field graphql.CollectedField, obj *TransactionEdge) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TransactionEdge_node(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Node, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*types.Transaction) + fc.Result = res + return ec.marshalOTransaction2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐTransaction(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TransactionEdge_node(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TransactionEdge", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "hash": + return ec.fieldContext_Transaction_hash(ctx, field) + case "envelopeXdr": + return ec.fieldContext_Transaction_envelopeXdr(ctx, field) + case "resultXdr": + return ec.fieldContext_Transaction_resultXdr(ctx, field) + case "metaXdr": + return ec.fieldContext_Transaction_metaXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Transaction_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Transaction_ingestedAt(ctx, field) + case "operations": + return ec.fieldContext_Transaction_operations(ctx, field) + case "accounts": + return ec.fieldContext_Transaction_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Transaction_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Transaction", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _TransactionEdge_cursor(ctx context.Context, field graphql.CollectedField, obj *TransactionEdge) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TransactionEdge_cursor(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Cursor, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TransactionEdge_cursor(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TransactionEdge", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TrustlineChange_type(ctx context.Context, field graphql.CollectedField, obj *types.TrustlineStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TrustlineChange_type(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.TrustlineChange().Type(rctx, obj) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(types.StateChangeCategory) + fc.Result = res + return ec.marshalNStateChangeCategory2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeCategory(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TrustlineChange_type(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TrustlineChange", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type StateChangeCategory does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TrustlineChange_reason(ctx context.Context, field graphql.CollectedField, obj *types.TrustlineStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TrustlineChange_reason(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.TrustlineChange().Reason(rctx, obj) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(types.StateChangeReason) + fc.Result = res + return ec.marshalNStateChangeReason2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeReason(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TrustlineChange_reason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TrustlineChange", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type StateChangeReason does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TrustlineChange_ingestedAt(ctx context.Context, field graphql.CollectedField, obj *types.TrustlineStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TrustlineChange_ingestedAt(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.IngestedAt, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(time.Time) + fc.Result = res + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TrustlineChange_ingestedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TrustlineChange", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Time does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TrustlineChange_ledgerCreatedAt(ctx context.Context, field graphql.CollectedField, obj *types.TrustlineStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TrustlineChange_ledgerCreatedAt(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.LedgerCreatedAt, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(time.Time) + fc.Result = res + return ec.marshalNTime2timeᚐTime(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TrustlineChange_ledgerCreatedAt(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TrustlineChange", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Time does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TrustlineChange_ledgerNumber(ctx context.Context, field graphql.CollectedField, obj *types.TrustlineStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TrustlineChange_ledgerNumber(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.LedgerNumber, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(uint32) + fc.Result = res + return ec.marshalNUInt322uint32(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TrustlineChange_ledgerNumber(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TrustlineChange", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type UInt32 does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) _TrustlineChange_account(ctx context.Context, field graphql.CollectedField, obj *types.TrustlineStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TrustlineChange_account(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.TrustlineChange().Account(rctx, obj) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(*types.Account) + fc.Result = res + return ec.marshalNAccount2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccount(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TrustlineChange_account(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TrustlineChange", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "address": + return ec.fieldContext_Account_address(ctx, field) + case "transactions": + return ec.fieldContext_Account_transactions(ctx, field) + case "operations": + return ec.fieldContext_Account_operations(ctx, field) + case "stateChanges": + return ec.fieldContext_Account_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Account", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _TrustlineChange_operation(ctx context.Context, field graphql.CollectedField, obj *types.TrustlineStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TrustlineChange_operation(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.TrustlineChange().Operation(rctx, obj) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*types.Operation) + fc.Result = res + return ec.marshalOOperation2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐOperation(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TrustlineChange_operation(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TrustlineChange", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "id": + return ec.fieldContext_Operation_id(ctx, field) + case "operationType": + return ec.fieldContext_Operation_operationType(ctx, field) + case "operationXdr": + return ec.fieldContext_Operation_operationXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Operation_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Operation_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Operation_ingestedAt(ctx, field) + case "transaction": + return ec.fieldContext_Operation_transaction(ctx, field) + case "accounts": + return ec.fieldContext_Operation_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Operation_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Operation", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _TrustlineChange_transaction(ctx context.Context, field graphql.CollectedField, obj *types.TrustlineStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TrustlineChange_transaction(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.TrustlineChange().Transaction(rctx, obj) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(*types.Transaction) + fc.Result = res + return ec.marshalNTransaction2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐTransaction(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TrustlineChange_transaction(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TrustlineChange", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "hash": + return ec.fieldContext_Transaction_hash(ctx, field) + case "envelopeXdr": + return ec.fieldContext_Transaction_envelopeXdr(ctx, field) + case "resultXdr": + return ec.fieldContext_Transaction_resultXdr(ctx, field) + case "metaXdr": + return ec.fieldContext_Transaction_metaXdr(ctx, field) + case "ledgerNumber": + return ec.fieldContext_Transaction_ledgerNumber(ctx, field) + case "ledgerCreatedAt": + return ec.fieldContext_Transaction_ledgerCreatedAt(ctx, field) + case "ingestedAt": + return ec.fieldContext_Transaction_ingestedAt(ctx, field) + case "operations": + return ec.fieldContext_Transaction_operations(ctx, field) + case "accounts": + return ec.fieldContext_Transaction_accounts(ctx, field) + case "stateChanges": + return ec.fieldContext_Transaction_stateChanges(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type Transaction", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) _TrustlineChange_limit(ctx context.Context, field graphql.CollectedField, obj *types.TrustlineStateChangeModel) (ret graphql.Marshaler) { + fc, err := ec.fieldContext_TrustlineChange_limit(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return ec.resolvers.TrustlineChange().Limit(rctx, obj) + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext_TrustlineChange_limit(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "TrustlineChange", + Field: field, + IsMethod: true, + IsResolver: true, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___Directive_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Directive_name(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Name, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Directive_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Directive", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___Directive_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Directive_description(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Description(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Directive_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Directive", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___Directive_isRepeatable(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Directive_isRepeatable(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.IsRepeatable, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(bool) + fc.Result = res + return ec.marshalNBoolean2bool(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Directive_isRepeatable(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Directive", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Boolean does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___Directive_locations(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Directive_locations(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Locations, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]string) + fc.Result = res + return ec.marshalN__DirectiveLocation2ᚕstringᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Directive_locations(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Directive", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type __DirectiveLocation does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___Directive_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Directive) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Directive_args(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Args, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]introspection.InputValue) + fc.Result = res + return ec.marshalN__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Directive_args(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Directive", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "name": + return ec.fieldContext___InputValue_name(ctx, field) + case "description": + return ec.fieldContext___InputValue_description(ctx, field) + case "type": + return ec.fieldContext___InputValue_type(ctx, field) + case "defaultValue": + return ec.fieldContext___InputValue_defaultValue(ctx, field) + case "isDeprecated": + return ec.fieldContext___InputValue_isDeprecated(ctx, field) + case "deprecationReason": + return ec.fieldContext___InputValue_deprecationReason(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type __InputValue", field.Name) + }, + } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field___Directive_args_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } + return fc, nil +} + +func (ec *executionContext) ___EnumValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___EnumValue_name(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Name, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___EnumValue_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__EnumValue", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___EnumValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___EnumValue_description(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Description(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___EnumValue_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__EnumValue", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___EnumValue_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___EnumValue_isDeprecated(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.IsDeprecated(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(bool) + fc.Result = res + return ec.marshalNBoolean2bool(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___EnumValue_isDeprecated(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__EnumValue", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Boolean does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___EnumValue_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.EnumValue) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___EnumValue_deprecationReason(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.DeprecationReason(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___EnumValue_deprecationReason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__EnumValue", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___Field_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Field_name(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Name, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Field_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Field", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___Field_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Field_description(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Description(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Field_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Field", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___Field_args(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Field_args(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Args, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]introspection.InputValue) + fc.Result = res + return ec.marshalN__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Field_args(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Field", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "name": + return ec.fieldContext___InputValue_name(ctx, field) + case "description": + return ec.fieldContext___InputValue_description(ctx, field) + case "type": + return ec.fieldContext___InputValue_type(ctx, field) + case "defaultValue": + return ec.fieldContext___InputValue_defaultValue(ctx, field) + case "isDeprecated": + return ec.fieldContext___InputValue_isDeprecated(ctx, field) + case "deprecationReason": + return ec.fieldContext___InputValue_deprecationReason(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type __InputValue", field.Name) + }, + } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field___Field_args_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } + return fc, nil +} + +func (ec *executionContext) ___Field_type(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Field_type(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Type, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(*introspection.Type) + fc.Result = res + return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Field_type(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Field", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "kind": + return ec.fieldContext___Type_kind(ctx, field) + case "name": + return ec.fieldContext___Type_name(ctx, field) + case "description": + return ec.fieldContext___Type_description(ctx, field) + case "specifiedByURL": + return ec.fieldContext___Type_specifiedByURL(ctx, field) + case "fields": + return ec.fieldContext___Type_fields(ctx, field) + case "interfaces": + return ec.fieldContext___Type_interfaces(ctx, field) + case "possibleTypes": + return ec.fieldContext___Type_possibleTypes(ctx, field) + case "enumValues": + return ec.fieldContext___Type_enumValues(ctx, field) + case "inputFields": + return ec.fieldContext___Type_inputFields(ctx, field) + case "ofType": + return ec.fieldContext___Type_ofType(ctx, field) + case "isOneOf": + return ec.fieldContext___Type_isOneOf(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) ___Field_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Field_isDeprecated(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.IsDeprecated(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(bool) + fc.Result = res + return ec.marshalNBoolean2bool(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Field_isDeprecated(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Field", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Boolean does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___Field_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.Field) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Field_deprecationReason(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.DeprecationReason(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Field_deprecationReason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Field", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___InputValue_name(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___InputValue_name(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Name, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalNString2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___InputValue_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__InputValue", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___InputValue_description(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___InputValue_description(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Description(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___InputValue_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__InputValue", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___InputValue_type(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___InputValue_type(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Type, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(*introspection.Type) + fc.Result = res + return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___InputValue_type(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__InputValue", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "kind": + return ec.fieldContext___Type_kind(ctx, field) + case "name": + return ec.fieldContext___Type_name(ctx, field) + case "description": + return ec.fieldContext___Type_description(ctx, field) + case "specifiedByURL": + return ec.fieldContext___Type_specifiedByURL(ctx, field) + case "fields": + return ec.fieldContext___Type_fields(ctx, field) + case "interfaces": + return ec.fieldContext___Type_interfaces(ctx, field) + case "possibleTypes": + return ec.fieldContext___Type_possibleTypes(ctx, field) + case "enumValues": + return ec.fieldContext___Type_enumValues(ctx, field) + case "inputFields": + return ec.fieldContext___Type_inputFields(ctx, field) + case "ofType": + return ec.fieldContext___Type_ofType(ctx, field) + case "isOneOf": + return ec.fieldContext___Type_isOneOf(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) ___InputValue_defaultValue(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___InputValue_defaultValue(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.DefaultValue, nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___InputValue_defaultValue(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__InputValue", + Field: field, + IsMethod: false, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___InputValue_isDeprecated(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___InputValue_isDeprecated(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.IsDeprecated(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(bool) + fc.Result = res + return ec.marshalNBoolean2bool(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___InputValue_isDeprecated(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__InputValue", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Boolean does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___InputValue_deprecationReason(ctx context.Context, field graphql.CollectedField, obj *introspection.InputValue) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___InputValue_deprecationReason(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.DeprecationReason(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___InputValue_deprecationReason(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__InputValue", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___Schema_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Schema_description(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Description(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Schema_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Schema", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___Schema_types(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Schema_types(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Types(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]introspection.Type) + fc.Result = res + return ec.marshalN__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Schema_types(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Schema", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "kind": + return ec.fieldContext___Type_kind(ctx, field) + case "name": + return ec.fieldContext___Type_name(ctx, field) + case "description": + return ec.fieldContext___Type_description(ctx, field) + case "specifiedByURL": + return ec.fieldContext___Type_specifiedByURL(ctx, field) + case "fields": + return ec.fieldContext___Type_fields(ctx, field) + case "interfaces": + return ec.fieldContext___Type_interfaces(ctx, field) + case "possibleTypes": + return ec.fieldContext___Type_possibleTypes(ctx, field) + case "enumValues": + return ec.fieldContext___Type_enumValues(ctx, field) + case "inputFields": + return ec.fieldContext___Type_inputFields(ctx, field) + case "ofType": + return ec.fieldContext___Type_ofType(ctx, field) + case "isOneOf": + return ec.fieldContext___Type_isOneOf(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) ___Schema_queryType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Schema_queryType(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.QueryType(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(*introspection.Type) + fc.Result = res + return ec.marshalN__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Schema_queryType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Schema", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "kind": + return ec.fieldContext___Type_kind(ctx, field) + case "name": + return ec.fieldContext___Type_name(ctx, field) + case "description": + return ec.fieldContext___Type_description(ctx, field) + case "specifiedByURL": + return ec.fieldContext___Type_specifiedByURL(ctx, field) + case "fields": + return ec.fieldContext___Type_fields(ctx, field) + case "interfaces": + return ec.fieldContext___Type_interfaces(ctx, field) + case "possibleTypes": + return ec.fieldContext___Type_possibleTypes(ctx, field) + case "enumValues": + return ec.fieldContext___Type_enumValues(ctx, field) + case "inputFields": + return ec.fieldContext___Type_inputFields(ctx, field) + case "ofType": + return ec.fieldContext___Type_ofType(ctx, field) + case "isOneOf": + return ec.fieldContext___Type_isOneOf(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) ___Schema_mutationType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Schema_mutationType(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.MutationType(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*introspection.Type) + fc.Result = res + return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Schema_mutationType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Schema", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "kind": + return ec.fieldContext___Type_kind(ctx, field) + case "name": + return ec.fieldContext___Type_name(ctx, field) + case "description": + return ec.fieldContext___Type_description(ctx, field) + case "specifiedByURL": + return ec.fieldContext___Type_specifiedByURL(ctx, field) + case "fields": + return ec.fieldContext___Type_fields(ctx, field) + case "interfaces": + return ec.fieldContext___Type_interfaces(ctx, field) + case "possibleTypes": + return ec.fieldContext___Type_possibleTypes(ctx, field) + case "enumValues": + return ec.fieldContext___Type_enumValues(ctx, field) + case "inputFields": + return ec.fieldContext___Type_inputFields(ctx, field) + case "ofType": + return ec.fieldContext___Type_ofType(ctx, field) + case "isOneOf": + return ec.fieldContext___Type_isOneOf(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) ___Schema_subscriptionType(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Schema_subscriptionType(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.SubscriptionType(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*introspection.Type) + fc.Result = res + return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Schema_subscriptionType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Schema", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "kind": + return ec.fieldContext___Type_kind(ctx, field) + case "name": + return ec.fieldContext___Type_name(ctx, field) + case "description": + return ec.fieldContext___Type_description(ctx, field) + case "specifiedByURL": + return ec.fieldContext___Type_specifiedByURL(ctx, field) + case "fields": + return ec.fieldContext___Type_fields(ctx, field) + case "interfaces": + return ec.fieldContext___Type_interfaces(ctx, field) + case "possibleTypes": + return ec.fieldContext___Type_possibleTypes(ctx, field) + case "enumValues": + return ec.fieldContext___Type_enumValues(ctx, field) + case "inputFields": + return ec.fieldContext___Type_inputFields(ctx, field) + case "ofType": + return ec.fieldContext___Type_ofType(ctx, field) + case "isOneOf": + return ec.fieldContext___Type_isOneOf(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) ___Schema_directives(ctx context.Context, field graphql.CollectedField, obj *introspection.Schema) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Schema_directives(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Directives(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.([]introspection.Directive) + fc.Result = res + return ec.marshalN__Directive2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐDirectiveᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Schema_directives(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Schema", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "name": + return ec.fieldContext___Directive_name(ctx, field) + case "description": + return ec.fieldContext___Directive_description(ctx, field) + case "isRepeatable": + return ec.fieldContext___Directive_isRepeatable(ctx, field) + case "locations": + return ec.fieldContext___Directive_locations(ctx, field) + case "args": + return ec.fieldContext___Directive_args(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type __Directive", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) ___Type_kind(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Type_kind(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Kind(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + if !graphql.HasFieldError(ctx, fc) { + ec.Errorf(ctx, "must not be null") + } + return graphql.Null + } + res := resTmp.(string) + fc.Result = res + return ec.marshalN__TypeKind2string(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Type_kind(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Type", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type __TypeKind does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___Type_name(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Type_name(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Name(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Type_name(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Type", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___Type_description(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Type_description(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Description(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Type_description(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Type", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___Type_specifiedByURL(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Type_specifiedByURL(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.SpecifiedByURL(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*string) + fc.Result = res + return ec.marshalOString2ᚖstring(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Type_specifiedByURL(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Type", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type String does not have child fields") + }, + } + return fc, nil +} + +func (ec *executionContext) ___Type_fields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Type_fields(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Fields(fc.Args["includeDeprecated"].(bool)), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.([]introspection.Field) + fc.Result = res + return ec.marshalO__Field2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐFieldᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Type_fields(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Type", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "name": + return ec.fieldContext___Field_name(ctx, field) + case "description": + return ec.fieldContext___Field_description(ctx, field) + case "args": + return ec.fieldContext___Field_args(ctx, field) + case "type": + return ec.fieldContext___Field_type(ctx, field) + case "isDeprecated": + return ec.fieldContext___Field_isDeprecated(ctx, field) + case "deprecationReason": + return ec.fieldContext___Field_deprecationReason(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type __Field", field.Name) + }, + } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field___Type_fields_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } + return fc, nil +} + +func (ec *executionContext) ___Type_interfaces(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Type_interfaces(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.Interfaces(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.([]introspection.Type) + fc.Result = res + return ec.marshalO__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Type_interfaces(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Type", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "kind": + return ec.fieldContext___Type_kind(ctx, field) + case "name": + return ec.fieldContext___Type_name(ctx, field) + case "description": + return ec.fieldContext___Type_description(ctx, field) + case "specifiedByURL": + return ec.fieldContext___Type_specifiedByURL(ctx, field) + case "fields": + return ec.fieldContext___Type_fields(ctx, field) + case "interfaces": + return ec.fieldContext___Type_interfaces(ctx, field) + case "possibleTypes": + return ec.fieldContext___Type_possibleTypes(ctx, field) + case "enumValues": + return ec.fieldContext___Type_enumValues(ctx, field) + case "inputFields": + return ec.fieldContext___Type_inputFields(ctx, field) + case "ofType": + return ec.fieldContext___Type_ofType(ctx, field) + case "isOneOf": + return ec.fieldContext___Type_isOneOf(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) ___Type_possibleTypes(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Type_possibleTypes(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.PossibleTypes(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.([]introspection.Type) + fc.Result = res + return ec.marshalO__Type2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐTypeᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Type_possibleTypes(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Type", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "kind": + return ec.fieldContext___Type_kind(ctx, field) + case "name": + return ec.fieldContext___Type_name(ctx, field) + case "description": + return ec.fieldContext___Type_description(ctx, field) + case "specifiedByURL": + return ec.fieldContext___Type_specifiedByURL(ctx, field) + case "fields": + return ec.fieldContext___Type_fields(ctx, field) + case "interfaces": + return ec.fieldContext___Type_interfaces(ctx, field) + case "possibleTypes": + return ec.fieldContext___Type_possibleTypes(ctx, field) + case "enumValues": + return ec.fieldContext___Type_enumValues(ctx, field) + case "inputFields": + return ec.fieldContext___Type_inputFields(ctx, field) + case "ofType": + return ec.fieldContext___Type_ofType(ctx, field) + case "isOneOf": + return ec.fieldContext___Type_isOneOf(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) ___Type_enumValues(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Type_enumValues(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.EnumValues(fc.Args["includeDeprecated"].(bool)), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.([]introspection.EnumValue) + fc.Result = res + return ec.marshalO__EnumValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐEnumValueᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Type_enumValues(ctx context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Type", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "name": + return ec.fieldContext___EnumValue_name(ctx, field) + case "description": + return ec.fieldContext___EnumValue_description(ctx, field) + case "isDeprecated": + return ec.fieldContext___EnumValue_isDeprecated(ctx, field) + case "deprecationReason": + return ec.fieldContext___EnumValue_deprecationReason(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type __EnumValue", field.Name) + }, + } + defer func() { + if r := recover(); r != nil { + err = ec.Recover(ctx, r) + ec.Error(ctx, err) + } + }() + ctx = graphql.WithFieldContext(ctx, fc) + if fc.Args, err = ec.field___Type_enumValues_args(ctx, field.ArgumentMap(ec.Variables)); err != nil { + ec.Error(ctx, err) + return fc, err + } + return fc, nil +} + +func (ec *executionContext) ___Type_inputFields(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Type_inputFields(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.InputFields(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.([]introspection.InputValue) + fc.Result = res + return ec.marshalO__InputValue2ᚕgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐInputValueᚄ(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Type_inputFields(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Type", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "name": + return ec.fieldContext___InputValue_name(ctx, field) + case "description": + return ec.fieldContext___InputValue_description(ctx, field) + case "type": + return ec.fieldContext___InputValue_type(ctx, field) + case "defaultValue": + return ec.fieldContext___InputValue_defaultValue(ctx, field) + case "isDeprecated": + return ec.fieldContext___InputValue_isDeprecated(ctx, field) + case "deprecationReason": + return ec.fieldContext___InputValue_deprecationReason(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type __InputValue", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) ___Type_ofType(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Type_ofType(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.OfType(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(*introspection.Type) + fc.Result = res + return ec.marshalO__Type2ᚖgithubᚗcomᚋ99designsᚋgqlgenᚋgraphqlᚋintrospectionᚐType(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Type_ofType(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Type", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + switch field.Name { + case "kind": + return ec.fieldContext___Type_kind(ctx, field) + case "name": + return ec.fieldContext___Type_name(ctx, field) + case "description": + return ec.fieldContext___Type_description(ctx, field) + case "specifiedByURL": + return ec.fieldContext___Type_specifiedByURL(ctx, field) + case "fields": + return ec.fieldContext___Type_fields(ctx, field) + case "interfaces": + return ec.fieldContext___Type_interfaces(ctx, field) + case "possibleTypes": + return ec.fieldContext___Type_possibleTypes(ctx, field) + case "enumValues": + return ec.fieldContext___Type_enumValues(ctx, field) + case "inputFields": + return ec.fieldContext___Type_inputFields(ctx, field) + case "ofType": + return ec.fieldContext___Type_ofType(ctx, field) + case "isOneOf": + return ec.fieldContext___Type_isOneOf(ctx, field) + } + return nil, fmt.Errorf("no field named %q was found under type __Type", field.Name) + }, + } + return fc, nil +} + +func (ec *executionContext) ___Type_isOneOf(ctx context.Context, field graphql.CollectedField, obj *introspection.Type) (ret graphql.Marshaler) { + fc, err := ec.fieldContext___Type_isOneOf(ctx, field) + if err != nil { + return graphql.Null + } + ctx = graphql.WithFieldContext(ctx, fc) + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + ret = graphql.Null + } + }() + resTmp, err := ec.ResolverMiddleware(ctx, func(rctx context.Context) (any, error) { + ctx = rctx // use context from middleware stack in children + return obj.IsOneOf(), nil + }) + if err != nil { + ec.Error(ctx, err) + return graphql.Null + } + if resTmp == nil { + return graphql.Null + } + res := resTmp.(bool) + fc.Result = res + return ec.marshalOBoolean2bool(ctx, field.Selections, res) +} + +func (ec *executionContext) fieldContext___Type_isOneOf(_ context.Context, field graphql.CollectedField) (fc *graphql.FieldContext, err error) { + fc = &graphql.FieldContext{ + Object: "__Type", + Field: field, + IsMethod: true, + IsResolver: false, + Child: func(ctx context.Context, field graphql.CollectedField) (*graphql.FieldContext, error) { + return nil, errors.New("field of type Boolean does not have child fields") + }, + } + return fc, nil +} + +// endregion **************************** field.gotpl ***************************** + +// region **************************** input.gotpl ***************************** + +func (ec *executionContext) unmarshalInputBuildTransactionInput(ctx context.Context, obj any) (BuildTransactionInput, error) { + var it BuildTransactionInput + asMap := map[string]any{} + for k, v := range obj.(map[string]any) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"transaction"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "transaction": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("transaction")) + data, err := ec.unmarshalNTransactionInput2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐTransactionInput(ctx, v) + if err != nil { + return it, err + } + it.Transaction = data + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputDeregisterAccountInput(ctx context.Context, obj any) (DeregisterAccountInput, error) { + var it DeregisterAccountInput + asMap := map[string]any{} + for k, v := range obj.(map[string]any) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"address"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "address": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("address")) + data, err := ec.unmarshalNString2string(ctx, v) + if err != nil { + return it, err + } + it.Address = data + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputRegisterAccountInput(ctx context.Context, obj any) (RegisterAccountInput, error) { + var it RegisterAccountInput + asMap := map[string]any{} + for k, v := range obj.(map[string]any) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"address"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "address": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("address")) + data, err := ec.unmarshalNString2string(ctx, v) + if err != nil { + return it, err + } + it.Address = data + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputSimulationResultInput(ctx context.Context, obj any) (SimulationResultInput, error) { + var it SimulationResultInput + asMap := map[string]any{} + for k, v := range obj.(map[string]any) { + asMap[k] = v + } + + fieldsInOrder := [...]string{"transactionData", "events", "minResourceFee", "results", "latestLedger", "error"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "transactionData": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("transactionData")) + data, err := ec.unmarshalOString2ᚖstring(ctx, v) + if err != nil { + return it, err + } + it.TransactionData = data + case "events": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("events")) + data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) + if err != nil { + return it, err + } + it.Events = data + case "minResourceFee": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("minResourceFee")) + data, err := ec.unmarshalOString2ᚖstring(ctx, v) + if err != nil { + return it, err + } + it.MinResourceFee = data + case "results": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("results")) + data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) + if err != nil { + return it, err + } + it.Results = data + case "latestLedger": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("latestLedger")) + data, err := ec.unmarshalOInt2ᚖint32(ctx, v) + if err != nil { + return it, err + } + it.LatestLedger = data + case "error": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("error")) + data, err := ec.unmarshalOString2ᚖstring(ctx, v) + if err != nil { + return it, err + } + it.Error = data + } + } + + return it, nil +} + +func (ec *executionContext) unmarshalInputTransactionInput(ctx context.Context, obj any) (TransactionInput, error) { + var it TransactionInput asMap := map[string]any{} for k, v := range obj.(map[string]any) { asMap[k] = v } - fieldsInOrder := [...]string{"transaction"} - for _, k := range fieldsInOrder { - v, ok := asMap[k] - if !ok { - continue + fieldsInOrder := [...]string{"operations", "timeout", "simulationResult"} + for _, k := range fieldsInOrder { + v, ok := asMap[k] + if !ok { + continue + } + switch k { + case "operations": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("operations")) + data, err := ec.unmarshalNString2ᚕstringᚄ(ctx, v) + if err != nil { + return it, err + } + it.Operations = data + case "timeout": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("timeout")) + data, err := ec.unmarshalNInt2int32(ctx, v) + if err != nil { + return it, err + } + it.Timeout = data + case "simulationResult": + ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("simulationResult")) + data, err := ec.unmarshalOSimulationResultInput2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐSimulationResultInput(ctx, v) + if err != nil { + return it, err + } + it.SimulationResult = data + } + } + + return it, nil +} + +// endregion **************************** input.gotpl ***************************** + +// region ************************** interface.gotpl *************************** + +func (ec *executionContext) _BaseStateChange(ctx context.Context, sel ast.SelectionSet, obj BaseStateChange) graphql.Marshaler { + switch obj := (obj).(type) { + case nil: + return graphql.Null + case types.TrustlineStateChangeModel: + return ec._TrustlineChange(ctx, sel, &obj) + case *types.TrustlineStateChangeModel: + if obj == nil { + return graphql.Null + } + return ec._TrustlineChange(ctx, sel, obj) + case types.StandardBalanceStateChangeModel: + return ec._StandardBalanceChange(ctx, sel, &obj) + case *types.StandardBalanceStateChangeModel: + if obj == nil { + return graphql.Null + } + return ec._StandardBalanceChange(ctx, sel, obj) + case types.SignerThresholdsStateChangeModel: + return ec._SignerThresholdsChange(ctx, sel, &obj) + case *types.SignerThresholdsStateChangeModel: + if obj == nil { + return graphql.Null + } + return ec._SignerThresholdsChange(ctx, sel, obj) + case types.SignerStateChangeModel: + return ec._SignerChange(ctx, sel, &obj) + case *types.SignerStateChangeModel: + if obj == nil { + return graphql.Null + } + return ec._SignerChange(ctx, sel, obj) + case types.ReservesStateChangeModel: + return ec._ReservesChange(ctx, sel, &obj) + case *types.ReservesStateChangeModel: + if obj == nil { + return graphql.Null + } + return ec._ReservesChange(ctx, sel, obj) + case types.MetadataStateChangeModel: + return ec._MetadataChange(ctx, sel, &obj) + case *types.MetadataStateChangeModel: + if obj == nil { + return graphql.Null + } + return ec._MetadataChange(ctx, sel, obj) + case types.FlagsStateChangeModel: + return ec._FlagsChange(ctx, sel, &obj) + case *types.FlagsStateChangeModel: + if obj == nil { + return graphql.Null + } + return ec._FlagsChange(ctx, sel, obj) + case types.BalanceAuthorizationStateChangeModel: + return ec._BalanceAuthorizationChange(ctx, sel, &obj) + case *types.BalanceAuthorizationStateChangeModel: + if obj == nil { + return graphql.Null + } + return ec._BalanceAuthorizationChange(ctx, sel, obj) + case types.AccountStateChangeModel: + return ec._AccountChange(ctx, sel, &obj) + case *types.AccountStateChangeModel: + if obj == nil { + return graphql.Null + } + return ec._AccountChange(ctx, sel, obj) + default: + panic(fmt.Errorf("unexpected type %T", obj)) + } +} + +// endregion ************************** interface.gotpl *************************** + +// region **************************** object.gotpl **************************** + +var accountImplementors = []string{"Account"} + +func (ec *executionContext) _Account(ctx context.Context, sel ast.SelectionSet, obj *types.Account) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, accountImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("Account") + case "address": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Account_address(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "transactions": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Account_transactions(ctx, field, obj) + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "operations": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Account_operations(ctx, field, obj) + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "stateChanges": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Account_stateChanges(ctx, field, obj) + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var accountChangeImplementors = []string{"AccountChange", "BaseStateChange"} + +func (ec *executionContext) _AccountChange(ctx context.Context, sel ast.SelectionSet, obj *types.AccountStateChangeModel) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, accountChangeImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("AccountChange") + case "type": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._AccountChange_type(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "reason": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._AccountChange_reason(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "ingestedAt": + out.Values[i] = ec._AccountChange_ingestedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerCreatedAt": + out.Values[i] = ec._AccountChange_ledgerCreatedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerNumber": + out.Values[i] = ec._AccountChange_ledgerNumber(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "account": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._AccountChange_account(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "operation": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._AccountChange_operation(ctx, field, obj) + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "transaction": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._AccountChange_transaction(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "tokenId": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._AccountChange_tokenId(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "amount": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._AccountChange_amount(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var balanceAuthorizationChangeImplementors = []string{"BalanceAuthorizationChange", "BaseStateChange"} + +func (ec *executionContext) _BalanceAuthorizationChange(ctx context.Context, sel ast.SelectionSet, obj *types.BalanceAuthorizationStateChangeModel) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, balanceAuthorizationChangeImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("BalanceAuthorizationChange") + case "type": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._BalanceAuthorizationChange_type(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "reason": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._BalanceAuthorizationChange_reason(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "ingestedAt": + out.Values[i] = ec._BalanceAuthorizationChange_ingestedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerCreatedAt": + out.Values[i] = ec._BalanceAuthorizationChange_ledgerCreatedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerNumber": + out.Values[i] = ec._BalanceAuthorizationChange_ledgerNumber(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "account": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._BalanceAuthorizationChange_account(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "operation": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._BalanceAuthorizationChange_operation(ctx, field, obj) + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "transaction": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._BalanceAuthorizationChange_transaction(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "flags": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._BalanceAuthorizationChange_flags(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "keyValue": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._BalanceAuthorizationChange_keyValue(ctx, field, obj) + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var buildTransactionPayloadImplementors = []string{"BuildTransactionPayload"} + +func (ec *executionContext) _BuildTransactionPayload(ctx context.Context, sel ast.SelectionSet, obj *BuildTransactionPayload) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, buildTransactionPayloadImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("BuildTransactionPayload") + case "success": + out.Values[i] = ec._BuildTransactionPayload_success(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "transactionXdr": + out.Values[i] = ec._BuildTransactionPayload_transactionXdr(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var deregisterAccountPayloadImplementors = []string{"DeregisterAccountPayload"} + +func (ec *executionContext) _DeregisterAccountPayload(ctx context.Context, sel ast.SelectionSet, obj *DeregisterAccountPayload) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, deregisterAccountPayloadImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("DeregisterAccountPayload") + case "success": + out.Values[i] = ec._DeregisterAccountPayload_success(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "message": + out.Values[i] = ec._DeregisterAccountPayload_message(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var flagsChangeImplementors = []string{"FlagsChange", "BaseStateChange"} + +func (ec *executionContext) _FlagsChange(ctx context.Context, sel ast.SelectionSet, obj *types.FlagsStateChangeModel) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, flagsChangeImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("FlagsChange") + case "type": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._FlagsChange_type(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "reason": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._FlagsChange_reason(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "ingestedAt": + out.Values[i] = ec._FlagsChange_ingestedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerCreatedAt": + out.Values[i] = ec._FlagsChange_ledgerCreatedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerNumber": + out.Values[i] = ec._FlagsChange_ledgerNumber(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "account": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._FlagsChange_account(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "operation": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._FlagsChange_operation(ctx, field, obj) + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "transaction": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._FlagsChange_transaction(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "flags": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._FlagsChange_flags(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var metadataChangeImplementors = []string{"MetadataChange", "BaseStateChange"} + +func (ec *executionContext) _MetadataChange(ctx context.Context, sel ast.SelectionSet, obj *types.MetadataStateChangeModel) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, metadataChangeImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("MetadataChange") + case "type": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._MetadataChange_type(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "reason": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._MetadataChange_reason(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "ingestedAt": + out.Values[i] = ec._MetadataChange_ingestedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerCreatedAt": + out.Values[i] = ec._MetadataChange_ledgerCreatedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerNumber": + out.Values[i] = ec._MetadataChange_ledgerNumber(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "account": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._MetadataChange_account(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "operation": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._MetadataChange_operation(ctx, field, obj) + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "transaction": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._MetadataChange_transaction(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "keyValue": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._MetadataChange_keyValue(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var mutationImplementors = []string{"Mutation"} + +func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, mutationImplementors) + ctx = graphql.WithFieldContext(ctx, &graphql.FieldContext{ + Object: "Mutation", + }) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + innerCtx := graphql.WithRootFieldContext(ctx, &graphql.RootFieldContext{ + Object: field.Name, + Field: field, + }) + + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("Mutation") + case "registerAccount": + out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) { + return ec._Mutation_registerAccount(ctx, field) + }) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "deregisterAccount": + out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) { + return ec._Mutation_deregisterAccount(ctx, field) + }) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "buildTransaction": + out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) { + return ec._Mutation_buildTransaction(ctx, field) + }) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var operationImplementors = []string{"Operation"} + +func (ec *executionContext) _Operation(ctx context.Context, sel ast.SelectionSet, obj *types.Operation) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, operationImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("Operation") + case "id": + out.Values[i] = ec._Operation_id(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "operationType": + out.Values[i] = ec._Operation_operationType(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "operationXdr": + out.Values[i] = ec._Operation_operationXdr(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerNumber": + out.Values[i] = ec._Operation_ledgerNumber(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerCreatedAt": + out.Values[i] = ec._Operation_ledgerCreatedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ingestedAt": + out.Values[i] = ec._Operation_ingestedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "transaction": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Operation_transaction(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "accounts": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Operation_accounts(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "stateChanges": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Operation_stateChanges(ctx, field, obj) + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var operationConnectionImplementors = []string{"OperationConnection"} + +func (ec *executionContext) _OperationConnection(ctx context.Context, sel ast.SelectionSet, obj *OperationConnection) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, operationConnectionImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("OperationConnection") + case "edges": + out.Values[i] = ec._OperationConnection_edges(ctx, field, obj) + case "pageInfo": + out.Values[i] = ec._OperationConnection_pageInfo(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var operationEdgeImplementors = []string{"OperationEdge"} + +func (ec *executionContext) _OperationEdge(ctx context.Context, sel ast.SelectionSet, obj *OperationEdge) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, operationEdgeImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("OperationEdge") + case "node": + out.Values[i] = ec._OperationEdge_node(ctx, field, obj) + case "cursor": + out.Values[i] = ec._OperationEdge_cursor(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) } - switch k { - case "transaction": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("transaction")) - data, err := ec.unmarshalNTransactionInput2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐTransactionInput(ctx, v) - if err != nil { - return it, err + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var pageInfoImplementors = []string{"PageInfo"} + +func (ec *executionContext) _PageInfo(ctx context.Context, sel ast.SelectionSet, obj *PageInfo) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, pageInfoImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("PageInfo") + case "startCursor": + out.Values[i] = ec._PageInfo_startCursor(ctx, field, obj) + case "endCursor": + out.Values[i] = ec._PageInfo_endCursor(ctx, field, obj) + case "hasNextPage": + out.Values[i] = ec._PageInfo_hasNextPage(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + case "hasPreviousPage": + out.Values[i] = ec._PageInfo_hasPreviousPage(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var queryImplementors = []string{"Query"} + +func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, queryImplementors) + ctx = graphql.WithFieldContext(ctx, &graphql.FieldContext{ + Object: "Query", + }) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + innerCtx := graphql.WithRootFieldContext(ctx, &graphql.RootFieldContext{ + Object: field.Name, + Field: field, + }) + + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("Query") + case "transactionByHash": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Query_transactionByHash(ctx, field) + return res + } + + rrm := func(ctx context.Context) graphql.Marshaler { + return ec.OperationContext.RootResolverMiddleware(ctx, + func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) + case "transactions": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Query_transactions(ctx, field) + return res + } + + rrm := func(ctx context.Context) graphql.Marshaler { + return ec.OperationContext.RootResolverMiddleware(ctx, + func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) + case "accountByAddress": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Query_accountByAddress(ctx, field) + return res + } + + rrm := func(ctx context.Context) graphql.Marshaler { + return ec.OperationContext.RootResolverMiddleware(ctx, + func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) + case "operations": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Query_operations(ctx, field) + return res + } + + rrm := func(ctx context.Context) graphql.Marshaler { + return ec.OperationContext.RootResolverMiddleware(ctx, + func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) + case "operationById": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Query_operationById(ctx, field) + return res + } + + rrm := func(ctx context.Context) graphql.Marshaler { + return ec.OperationContext.RootResolverMiddleware(ctx, + func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + } + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) + case "stateChanges": + field := field + + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._Query_stateChanges(ctx, field) + return res + } + + rrm := func(ctx context.Context) graphql.Marshaler { + return ec.OperationContext.RootResolverMiddleware(ctx, + func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) } - it.Transaction = data + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) + case "__type": + out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) { + return ec._Query___type(ctx, field) + }) + case "__schema": + out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) { + return ec._Query___schema(ctx, field) + }) + default: + panic("unknown field " + strconv.Quote(field.Name)) } } - - return it, nil -} - -func (ec *executionContext) unmarshalInputDeregisterAccountInput(ctx context.Context, obj any) (DeregisterAccountInput, error) { - var it DeregisterAccountInput - asMap := map[string]any{} - for k, v := range obj.(map[string]any) { - asMap[k] = v + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null } - fieldsInOrder := [...]string{"address"} - for _, k := range fieldsInOrder { - v, ok := asMap[k] - if !ok { - continue - } - switch k { - case "address": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("address")) - data, err := ec.unmarshalNString2string(ctx, v) - if err != nil { - return it, err - } - it.Address = data - } + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) } - return it, nil + return out } -func (ec *executionContext) unmarshalInputRegisterAccountInput(ctx context.Context, obj any) (RegisterAccountInput, error) { - var it RegisterAccountInput - asMap := map[string]any{} - for k, v := range obj.(map[string]any) { - asMap[k] = v - } +var registerAccountPayloadImplementors = []string{"RegisterAccountPayload"} - fieldsInOrder := [...]string{"address"} - for _, k := range fieldsInOrder { - v, ok := asMap[k] - if !ok { - continue - } - switch k { - case "address": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("address")) - data, err := ec.unmarshalNString2string(ctx, v) - if err != nil { - return it, err +func (ec *executionContext) _RegisterAccountPayload(ctx context.Context, sel ast.SelectionSet, obj *RegisterAccountPayload) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, registerAccountPayloadImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("RegisterAccountPayload") + case "success": + out.Values[i] = ec._RegisterAccountPayload_success(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ } - it.Address = data + case "account": + out.Values[i] = ec._RegisterAccountPayload_account(ctx, field, obj) + default: + panic("unknown field " + strconv.Quote(field.Name)) } } - - return it, nil -} - -func (ec *executionContext) unmarshalInputSimulationResultInput(ctx context.Context, obj any) (SimulationResultInput, error) { - var it SimulationResultInput - asMap := map[string]any{} - for k, v := range obj.(map[string]any) { - asMap[k] = v + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null } - fieldsInOrder := [...]string{"transactionData", "events", "minResourceFee", "results", "latestLedger", "error"} - for _, k := range fieldsInOrder { - v, ok := asMap[k] - if !ok { - continue - } - switch k { - case "transactionData": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("transactionData")) - data, err := ec.unmarshalOString2ᚖstring(ctx, v) - if err != nil { - return it, err - } - it.TransactionData = data - case "events": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("events")) - data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) - if err != nil { - return it, err - } - it.Events = data - case "minResourceFee": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("minResourceFee")) - data, err := ec.unmarshalOString2ᚖstring(ctx, v) - if err != nil { - return it, err - } - it.MinResourceFee = data - case "results": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("results")) - data, err := ec.unmarshalOString2ᚕstringᚄ(ctx, v) - if err != nil { - return it, err - } - it.Results = data - case "latestLedger": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("latestLedger")) - data, err := ec.unmarshalOInt2ᚖint32(ctx, v) - if err != nil { - return it, err - } - it.LatestLedger = data - case "error": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("error")) - data, err := ec.unmarshalOString2ᚖstring(ctx, v) - if err != nil { - return it, err - } - it.Error = data - } + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) } - return it, nil + return out } -func (ec *executionContext) unmarshalInputTransactionInput(ctx context.Context, obj any) (TransactionInput, error) { - var it TransactionInput - asMap := map[string]any{} - for k, v := range obj.(map[string]any) { - asMap[k] = v - } +var reservesChangeImplementors = []string{"ReservesChange", "BaseStateChange"} - fieldsInOrder := [...]string{"operations", "timeout", "simulationResult"} - for _, k := range fieldsInOrder { - v, ok := asMap[k] - if !ok { - continue - } - switch k { - case "operations": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("operations")) - data, err := ec.unmarshalNString2ᚕstringᚄ(ctx, v) - if err != nil { - return it, err - } - it.Operations = data - case "timeout": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("timeout")) - data, err := ec.unmarshalNInt2int32(ctx, v) - if err != nil { - return it, err - } - it.Timeout = data - case "simulationResult": - ctx := graphql.WithPathContext(ctx, graphql.NewPathWithField("simulationResult")) - data, err := ec.unmarshalOSimulationResultInput2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐSimulationResultInput(ctx, v) - if err != nil { - return it, err - } - it.SimulationResult = data - } - } +func (ec *executionContext) _ReservesChange(ctx context.Context, sel ast.SelectionSet, obj *types.ReservesStateChangeModel) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, reservesChangeImplementors) - return it, nil -} + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("ReservesChange") + case "type": + field := field -// endregion **************************** input.gotpl ***************************** + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._ReservesChange_type(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } -// region ************************** interface.gotpl *************************** + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) -// endregion ************************** interface.gotpl *************************** + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } -// region **************************** object.gotpl **************************** + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "reason": + field := field -var accountImplementors = []string{"Account"} + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._ReservesChange_reason(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) -func (ec *executionContext) _Account(ctx context.Context, sel ast.SelectionSet, obj *types.Account) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, accountImplementors) + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } - out := graphql.NewFieldSet(fields) - deferred := make(map[string]*graphql.FieldSet) - for i, field := range fields { - switch field.Name { - case "__typename": - out.Values[i] = graphql.MarshalString("Account") - case "address": + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "ingestedAt": + out.Values[i] = ec._ReservesChange_ingestedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerCreatedAt": + out.Values[i] = ec._ReservesChange_ledgerCreatedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerNumber": + out.Values[i] = ec._ReservesChange_ledgerNumber(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "account": field := field innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { @@ -8240,7 +14302,7 @@ func (ec *executionContext) _Account(ctx context.Context, sel ast.SelectionSet, ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._Account_address(ctx, field, obj) + res = ec._ReservesChange_account(ctx, field, obj) if res == graphql.Null { atomic.AddUint32(&fs.Invalids, 1) } @@ -8267,7 +14329,7 @@ func (ec *executionContext) _Account(ctx context.Context, sel ast.SelectionSet, } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "transactions": + case "operation": field := field innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { @@ -8276,7 +14338,7 @@ func (ec *executionContext) _Account(ctx context.Context, sel ast.SelectionSet, ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._Account_transactions(ctx, field, obj) + res = ec._ReservesChange_operation(ctx, field, obj) return res } @@ -8300,16 +14362,19 @@ func (ec *executionContext) _Account(ctx context.Context, sel ast.SelectionSet, } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "operations": + case "transaction": field := field - innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._Account_operations(ctx, field, obj) + res = ec._ReservesChange_transaction(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } return res } @@ -8333,7 +14398,7 @@ func (ec *executionContext) _Account(ctx context.Context, sel ast.SelectionSet, } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "stateChanges": + case "sponsoredAddress": field := field innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { @@ -8342,7 +14407,7 @@ func (ec *executionContext) _Account(ctx context.Context, sel ast.SelectionSet, ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._Account_stateChanges(ctx, field, obj) + res = ec._ReservesChange_sponsoredAddress(ctx, field, obj) return res } @@ -8366,154 +14431,39 @@ func (ec *executionContext) _Account(ctx context.Context, sel ast.SelectionSet, } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - default: - panic("unknown field " + strconv.Quote(field.Name)) - } - } - out.Dispatch(ctx) - if out.Invalids > 0 { - return graphql.Null - } - - atomic.AddInt32(&ec.deferred, int32(len(deferred))) - - for label, dfs := range deferred { - ec.processDeferredGroup(graphql.DeferredGroup{ - Label: label, - Path: graphql.GetPath(ctx), - FieldSet: dfs, - Context: ctx, - }) - } - - return out -} - -var buildTransactionPayloadImplementors = []string{"BuildTransactionPayload"} - -func (ec *executionContext) _BuildTransactionPayload(ctx context.Context, sel ast.SelectionSet, obj *BuildTransactionPayload) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, buildTransactionPayloadImplementors) + case "sponsorAddress": + field := field - out := graphql.NewFieldSet(fields) - deferred := make(map[string]*graphql.FieldSet) - for i, field := range fields { - switch field.Name { - case "__typename": - out.Values[i] = graphql.MarshalString("BuildTransactionPayload") - case "success": - out.Values[i] = ec._BuildTransactionPayload_success(ctx, field, obj) - if out.Values[i] == graphql.Null { - out.Invalids++ - } - case "transactionXdr": - out.Values[i] = ec._BuildTransactionPayload_transactionXdr(ctx, field, obj) - if out.Values[i] == graphql.Null { - out.Invalids++ + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._ReservesChange_sponsorAddress(ctx, field, obj) + return res } - default: - panic("unknown field " + strconv.Quote(field.Name)) - } - } - out.Dispatch(ctx) - if out.Invalids > 0 { - return graphql.Null - } - - atomic.AddInt32(&ec.deferred, int32(len(deferred))) - for label, dfs := range deferred { - ec.processDeferredGroup(graphql.DeferredGroup{ - Label: label, - Path: graphql.GetPath(ctx), - FieldSet: dfs, - Context: ctx, - }) - } - - return out -} - -var deregisterAccountPayloadImplementors = []string{"DeregisterAccountPayload"} - -func (ec *executionContext) _DeregisterAccountPayload(ctx context.Context, sel ast.SelectionSet, obj *DeregisterAccountPayload) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, deregisterAccountPayloadImplementors) + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) - out := graphql.NewFieldSet(fields) - deferred := make(map[string]*graphql.FieldSet) - for i, field := range fields { - switch field.Name { - case "__typename": - out.Values[i] = graphql.MarshalString("DeregisterAccountPayload") - case "success": - out.Values[i] = ec._DeregisterAccountPayload_success(ctx, field, obj) - if out.Values[i] == graphql.Null { - out.Invalids++ + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue } - case "message": - out.Values[i] = ec._DeregisterAccountPayload_message(ctx, field, obj) - default: - panic("unknown field " + strconv.Quote(field.Name)) - } - } - out.Dispatch(ctx) - if out.Invalids > 0 { - return graphql.Null - } - - atomic.AddInt32(&ec.deferred, int32(len(deferred))) - - for label, dfs := range deferred { - ec.processDeferredGroup(graphql.DeferredGroup{ - Label: label, - Path: graphql.GetPath(ctx), - FieldSet: dfs, - Context: ctx, - }) - } - - return out -} - -var mutationImplementors = []string{"Mutation"} - -func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, mutationImplementors) - ctx = graphql.WithFieldContext(ctx, &graphql.FieldContext{ - Object: "Mutation", - }) - - out := graphql.NewFieldSet(fields) - deferred := make(map[string]*graphql.FieldSet) - for i, field := range fields { - innerCtx := graphql.WithRootFieldContext(ctx, &graphql.RootFieldContext{ - Object: field.Name, - Field: field, - }) - switch field.Name { - case "__typename": - out.Values[i] = graphql.MarshalString("Mutation") - case "registerAccount": - out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) { - return ec._Mutation_registerAccount(ctx, field) - }) - if out.Values[i] == graphql.Null { - out.Invalids++ - } - case "deregisterAccount": - out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) { - return ec._Mutation_deregisterAccount(ctx, field) - }) - if out.Values[i] == graphql.Null { - out.Invalids++ - } - case "buildTransaction": - out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) { - return ec._Mutation_buildTransaction(ctx, field) - }) - if out.Values[i] == graphql.Null { - out.Invalids++ - } + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) default: panic("unknown field " + strconv.Quote(field.Name)) } @@ -8537,48 +14487,18 @@ func (ec *executionContext) _Mutation(ctx context.Context, sel ast.SelectionSet) return out } -var operationImplementors = []string{"Operation"} +var signerChangeImplementors = []string{"SignerChange", "BaseStateChange"} -func (ec *executionContext) _Operation(ctx context.Context, sel ast.SelectionSet, obj *types.Operation) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, operationImplementors) +func (ec *executionContext) _SignerChange(ctx context.Context, sel ast.SelectionSet, obj *types.SignerStateChangeModel) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, signerChangeImplementors) out := graphql.NewFieldSet(fields) deferred := make(map[string]*graphql.FieldSet) for i, field := range fields { switch field.Name { case "__typename": - out.Values[i] = graphql.MarshalString("Operation") - case "id": - out.Values[i] = ec._Operation_id(ctx, field, obj) - if out.Values[i] == graphql.Null { - atomic.AddUint32(&out.Invalids, 1) - } - case "operationType": - out.Values[i] = ec._Operation_operationType(ctx, field, obj) - if out.Values[i] == graphql.Null { - atomic.AddUint32(&out.Invalids, 1) - } - case "operationXdr": - out.Values[i] = ec._Operation_operationXdr(ctx, field, obj) - if out.Values[i] == graphql.Null { - atomic.AddUint32(&out.Invalids, 1) - } - case "ledgerNumber": - out.Values[i] = ec._Operation_ledgerNumber(ctx, field, obj) - if out.Values[i] == graphql.Null { - atomic.AddUint32(&out.Invalids, 1) - } - case "ledgerCreatedAt": - out.Values[i] = ec._Operation_ledgerCreatedAt(ctx, field, obj) - if out.Values[i] == graphql.Null { - atomic.AddUint32(&out.Invalids, 1) - } - case "ingestedAt": - out.Values[i] = ec._Operation_ingestedAt(ctx, field, obj) - if out.Values[i] == graphql.Null { - atomic.AddUint32(&out.Invalids, 1) - } - case "transaction": + out.Values[i] = graphql.MarshalString("SignerChange") + case "type": field := field innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { @@ -8587,7 +14507,7 @@ func (ec *executionContext) _Operation(ctx context.Context, sel ast.SelectionSet ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._Operation_transaction(ctx, field, obj) + res = ec._SignerChange_type(ctx, field, obj) if res == graphql.Null { atomic.AddUint32(&fs.Invalids, 1) } @@ -8614,7 +14534,7 @@ func (ec *executionContext) _Operation(ctx context.Context, sel ast.SelectionSet } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "accounts": + case "reason": field := field innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { @@ -8623,7 +14543,7 @@ func (ec *executionContext) _Operation(ctx context.Context, sel ast.SelectionSet ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._Operation_accounts(ctx, field, obj) + res = ec._SignerChange_reason(ctx, field, obj) if res == graphql.Null { atomic.AddUint32(&fs.Invalids, 1) } @@ -8650,16 +14570,34 @@ func (ec *executionContext) _Operation(ctx context.Context, sel ast.SelectionSet } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "stateChanges": + case "ingestedAt": + out.Values[i] = ec._SignerChange_ingestedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerCreatedAt": + out.Values[i] = ec._SignerChange_ledgerCreatedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerNumber": + out.Values[i] = ec._SignerChange_ledgerNumber(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "account": field := field - innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._Operation_stateChanges(ctx, field, obj) + res = ec._SignerChange_account(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } return res } @@ -8683,198 +14621,7 @@ func (ec *executionContext) _Operation(ctx context.Context, sel ast.SelectionSet } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - default: - panic("unknown field " + strconv.Quote(field.Name)) - } - } - out.Dispatch(ctx) - if out.Invalids > 0 { - return graphql.Null - } - - atomic.AddInt32(&ec.deferred, int32(len(deferred))) - - for label, dfs := range deferred { - ec.processDeferredGroup(graphql.DeferredGroup{ - Label: label, - Path: graphql.GetPath(ctx), - FieldSet: dfs, - Context: ctx, - }) - } - - return out -} - -var operationConnectionImplementors = []string{"OperationConnection"} - -func (ec *executionContext) _OperationConnection(ctx context.Context, sel ast.SelectionSet, obj *OperationConnection) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, operationConnectionImplementors) - - out := graphql.NewFieldSet(fields) - deferred := make(map[string]*graphql.FieldSet) - for i, field := range fields { - switch field.Name { - case "__typename": - out.Values[i] = graphql.MarshalString("OperationConnection") - case "edges": - out.Values[i] = ec._OperationConnection_edges(ctx, field, obj) - case "pageInfo": - out.Values[i] = ec._OperationConnection_pageInfo(ctx, field, obj) - if out.Values[i] == graphql.Null { - out.Invalids++ - } - default: - panic("unknown field " + strconv.Quote(field.Name)) - } - } - out.Dispatch(ctx) - if out.Invalids > 0 { - return graphql.Null - } - - atomic.AddInt32(&ec.deferred, int32(len(deferred))) - - for label, dfs := range deferred { - ec.processDeferredGroup(graphql.DeferredGroup{ - Label: label, - Path: graphql.GetPath(ctx), - FieldSet: dfs, - Context: ctx, - }) - } - - return out -} - -var operationEdgeImplementors = []string{"OperationEdge"} - -func (ec *executionContext) _OperationEdge(ctx context.Context, sel ast.SelectionSet, obj *OperationEdge) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, operationEdgeImplementors) - - out := graphql.NewFieldSet(fields) - deferred := make(map[string]*graphql.FieldSet) - for i, field := range fields { - switch field.Name { - case "__typename": - out.Values[i] = graphql.MarshalString("OperationEdge") - case "node": - out.Values[i] = ec._OperationEdge_node(ctx, field, obj) - case "cursor": - out.Values[i] = ec._OperationEdge_cursor(ctx, field, obj) - if out.Values[i] == graphql.Null { - out.Invalids++ - } - default: - panic("unknown field " + strconv.Quote(field.Name)) - } - } - out.Dispatch(ctx) - if out.Invalids > 0 { - return graphql.Null - } - - atomic.AddInt32(&ec.deferred, int32(len(deferred))) - - for label, dfs := range deferred { - ec.processDeferredGroup(graphql.DeferredGroup{ - Label: label, - Path: graphql.GetPath(ctx), - FieldSet: dfs, - Context: ctx, - }) - } - - return out -} - -var pageInfoImplementors = []string{"PageInfo"} - -func (ec *executionContext) _PageInfo(ctx context.Context, sel ast.SelectionSet, obj *PageInfo) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, pageInfoImplementors) - - out := graphql.NewFieldSet(fields) - deferred := make(map[string]*graphql.FieldSet) - for i, field := range fields { - switch field.Name { - case "__typename": - out.Values[i] = graphql.MarshalString("PageInfo") - case "startCursor": - out.Values[i] = ec._PageInfo_startCursor(ctx, field, obj) - case "endCursor": - out.Values[i] = ec._PageInfo_endCursor(ctx, field, obj) - case "hasNextPage": - out.Values[i] = ec._PageInfo_hasNextPage(ctx, field, obj) - if out.Values[i] == graphql.Null { - out.Invalids++ - } - case "hasPreviousPage": - out.Values[i] = ec._PageInfo_hasPreviousPage(ctx, field, obj) - if out.Values[i] == graphql.Null { - out.Invalids++ - } - default: - panic("unknown field " + strconv.Quote(field.Name)) - } - } - out.Dispatch(ctx) - if out.Invalids > 0 { - return graphql.Null - } - - atomic.AddInt32(&ec.deferred, int32(len(deferred))) - - for label, dfs := range deferred { - ec.processDeferredGroup(graphql.DeferredGroup{ - Label: label, - Path: graphql.GetPath(ctx), - FieldSet: dfs, - Context: ctx, - }) - } - - return out -} - -var queryImplementors = []string{"Query"} - -func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, queryImplementors) - ctx = graphql.WithFieldContext(ctx, &graphql.FieldContext{ - Object: "Query", - }) - - out := graphql.NewFieldSet(fields) - deferred := make(map[string]*graphql.FieldSet) - for i, field := range fields { - innerCtx := graphql.WithRootFieldContext(ctx, &graphql.RootFieldContext{ - Object: field.Name, - Field: field, - }) - - switch field.Name { - case "__typename": - out.Values[i] = graphql.MarshalString("Query") - case "transactionByHash": - field := field - - innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { - defer func() { - if r := recover(); r != nil { - ec.Error(ctx, ec.Recover(ctx, r)) - } - }() - res = ec._Query_transactionByHash(ctx, field) - return res - } - - rrm := func(ctx context.Context) graphql.Marshaler { - return ec.OperationContext.RootResolverMiddleware(ctx, - func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - } - - out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) - case "transactions": + case "operation": field := field innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { @@ -8883,55 +14630,67 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._Query_transactions(ctx, field) + res = ec._SignerChange_operation(ctx, field, obj) return res } - rrm := func(ctx context.Context) graphql.Marshaler { - return ec.OperationContext.RootResolverMiddleware(ctx, - func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - } - - out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) - case "accountByAddress": - field := field - - innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { - defer func() { - if r := recover(); r != nil { - ec.Error(ctx, ec.Recover(ctx, r)) - } - }() - res = ec._Query_accountByAddress(ctx, field) - return res - } + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) - rrm := func(ctx context.Context) graphql.Marshaler { - return ec.OperationContext.RootResolverMiddleware(ctx, - func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue } - out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) - case "operations": + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "transaction": field := field - innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._Query_operations(ctx, field) + res = ec._SignerChange_transaction(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } return res } - rrm := func(ctx context.Context) graphql.Marshaler { - return ec.OperationContext.RootResolverMiddleware(ctx, - func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue } - out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) - case "operationById": + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "signerAddress": field := field innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { @@ -8940,17 +14699,31 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._Query_operationById(ctx, field) + res = ec._SignerChange_signerAddress(ctx, field, obj) return res } - rrm := func(ctx context.Context) graphql.Marshaler { - return ec.OperationContext.RootResolverMiddleware(ctx, - func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue } - out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) - case "stateChanges": + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "signerWeights": field := field innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { @@ -8959,24 +14732,30 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._Query_stateChanges(ctx, field) + res = ec._SignerChange_signerWeights(ctx, field, obj) return res } - rrm := func(ctx context.Context) graphql.Marshaler { - return ec.OperationContext.RootResolverMiddleware(ctx, - func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue } - out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return rrm(innerCtx) }) - case "__type": - out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) { - return ec._Query___type(ctx, field) - }) - case "__schema": - out.Values[i] = ec.OperationContext.RootResolverMiddleware(innerCtx, func(ctx context.Context) (res graphql.Marshaler) { - return ec._Query___schema(ctx, field) - }) + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) default: panic("unknown field " + strconv.Quote(field.Name)) } @@ -9000,95 +14779,66 @@ func (ec *executionContext) _Query(ctx context.Context, sel ast.SelectionSet) gr return out } -var registerAccountPayloadImplementors = []string{"RegisterAccountPayload"} +var signerThresholdsChangeImplementors = []string{"SignerThresholdsChange", "BaseStateChange"} -func (ec *executionContext) _RegisterAccountPayload(ctx context.Context, sel ast.SelectionSet, obj *RegisterAccountPayload) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, registerAccountPayloadImplementors) +func (ec *executionContext) _SignerThresholdsChange(ctx context.Context, sel ast.SelectionSet, obj *types.SignerThresholdsStateChangeModel) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, signerThresholdsChangeImplementors) out := graphql.NewFieldSet(fields) deferred := make(map[string]*graphql.FieldSet) for i, field := range fields { switch field.Name { case "__typename": - out.Values[i] = graphql.MarshalString("RegisterAccountPayload") - case "success": - out.Values[i] = ec._RegisterAccountPayload_success(ctx, field, obj) - if out.Values[i] == graphql.Null { - out.Invalids++ - } - case "account": - out.Values[i] = ec._RegisterAccountPayload_account(ctx, field, obj) - default: - panic("unknown field " + strconv.Quote(field.Name)) - } - } - out.Dispatch(ctx) - if out.Invalids > 0 { - return graphql.Null - } - - atomic.AddInt32(&ec.deferred, int32(len(deferred))) - - for label, dfs := range deferred { - ec.processDeferredGroup(graphql.DeferredGroup{ - Label: label, - Path: graphql.GetPath(ctx), - FieldSet: dfs, - Context: ctx, - }) - } - - return out -} + out.Values[i] = graphql.MarshalString("SignerThresholdsChange") + case "type": + field := field -var stateChangeImplementors = []string{"StateChange"} + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._SignerThresholdsChange_type(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } -func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionSet, obj *types.StateChange) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, stateChangeImplementors) + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) - out := graphql.NewFieldSet(fields) - deferred := make(map[string]*graphql.FieldSet) - for i, field := range fields { - switch field.Name { - case "__typename": - out.Values[i] = graphql.MarshalString("StateChange") - case "accountId": - out.Values[i] = ec._StateChange_accountId(ctx, field, obj) - if out.Values[i] == graphql.Null { - atomic.AddUint32(&out.Invalids, 1) - } - case "stateChangeCategory": - out.Values[i] = ec._StateChange_stateChangeCategory(ctx, field, obj) - if out.Values[i] == graphql.Null { - atomic.AddUint32(&out.Invalids, 1) - } - case "stateChangeReason": - out.Values[i] = ec._StateChange_stateChangeReason(ctx, field, obj) - case "ingestedAt": - out.Values[i] = ec._StateChange_ingestedAt(ctx, field, obj) - if out.Values[i] == graphql.Null { - atomic.AddUint32(&out.Invalids, 1) - } - case "ledgerCreatedAt": - out.Values[i] = ec._StateChange_ledgerCreatedAt(ctx, field, obj) - if out.Values[i] == graphql.Null { - atomic.AddUint32(&out.Invalids, 1) - } - case "ledgerNumber": - out.Values[i] = ec._StateChange_ledgerNumber(ctx, field, obj) - if out.Values[i] == graphql.Null { - atomic.AddUint32(&out.Invalids, 1) + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue } - case "tokenId": + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "reason": field := field - innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._StateChange_tokenId(ctx, field, obj) + res = ec._SignerThresholdsChange_reason(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } return res } @@ -9112,16 +14862,34 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "amount": + case "ingestedAt": + out.Values[i] = ec._SignerThresholdsChange_ingestedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerCreatedAt": + out.Values[i] = ec._SignerThresholdsChange_ledgerCreatedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerNumber": + out.Values[i] = ec._SignerThresholdsChange_ledgerNumber(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "account": field := field - innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._StateChange_amount(ctx, field, obj) + res = ec._SignerThresholdsChange_account(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } return res } @@ -9145,7 +14913,7 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "claimableBalanceId": + case "operation": field := field innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { @@ -9154,7 +14922,7 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._StateChange_claimableBalanceId(ctx, field, obj) + res = ec._SignerThresholdsChange_operation(ctx, field, obj) return res } @@ -9178,16 +14946,19 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "liquidityPoolId": + case "transaction": field := field - innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._StateChange_liquidityPoolId(ctx, field, obj) + res = ec._SignerThresholdsChange_transaction(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } return res } @@ -9211,16 +14982,19 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "offerId": + case "thresholds": field := field - innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._StateChange_offerId(ctx, field, obj) + res = ec._SignerThresholdsChange_thresholds(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } return res } @@ -9244,16 +15018,53 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "signerAccountId": + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var standardBalanceChangeImplementors = []string{"StandardBalanceChange", "BaseStateChange"} + +func (ec *executionContext) _StandardBalanceChange(ctx context.Context, sel ast.SelectionSet, obj *types.StandardBalanceStateChangeModel) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, standardBalanceChangeImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("StandardBalanceChange") + case "type": field := field - innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._StateChange_signerAccountId(ctx, field, obj) + res = ec._StandardBalanceChange_type(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } return res } @@ -9277,16 +15088,19 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "spenderAccountId": + case "reason": field := field - innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._StateChange_spenderAccountId(ctx, field, obj) + res = ec._StandardBalanceChange_reason(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } return res } @@ -9308,18 +15122,36 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS out.Values[i] = graphql.Null continue } - - out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "sponsoredAccountId": + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "ingestedAt": + out.Values[i] = ec._StandardBalanceChange_ingestedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerCreatedAt": + out.Values[i] = ec._StandardBalanceChange_ledgerCreatedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerNumber": + out.Values[i] = ec._StandardBalanceChange_ledgerNumber(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "account": field := field - innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._StateChange_sponsoredAccountId(ctx, field, obj) + res = ec._StandardBalanceChange_account(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } return res } @@ -9343,7 +15175,7 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "sponsorAccountId": + case "operation": field := field innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { @@ -9352,7 +15184,7 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._StateChange_sponsorAccountId(ctx, field, obj) + res = ec._StandardBalanceChange_operation(ctx, field, obj) return res } @@ -9376,16 +15208,19 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "signerWeights": + case "transaction": field := field - innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._StateChange_signerWeights(ctx, field, obj) + res = ec._StandardBalanceChange_transaction(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } return res } @@ -9409,16 +15244,19 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "thresholds": + case "tokenId": field := field - innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._StateChange_thresholds(ctx, field, obj) + res = ec._StandardBalanceChange_tokenId(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } return res } @@ -9442,16 +15280,19 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "flags": + case "amount": field := field - innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._StateChange_flags(ctx, field, obj) + res = ec._StandardBalanceChange_amount(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } return res } @@ -9475,7 +15316,158 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "keyValue": + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var stateChangeConnectionImplementors = []string{"StateChangeConnection"} + +func (ec *executionContext) _StateChangeConnection(ctx context.Context, sel ast.SelectionSet, obj *StateChangeConnection) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, stateChangeConnectionImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("StateChangeConnection") + case "edges": + out.Values[i] = ec._StateChangeConnection_edges(ctx, field, obj) + case "pageInfo": + out.Values[i] = ec._StateChangeConnection_pageInfo(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var stateChangeEdgeImplementors = []string{"StateChangeEdge"} + +func (ec *executionContext) _StateChangeEdge(ctx context.Context, sel ast.SelectionSet, obj *StateChangeEdge) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, stateChangeEdgeImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("StateChangeEdge") + case "node": + out.Values[i] = ec._StateChangeEdge_node(ctx, field, obj) + case "cursor": + out.Values[i] = ec._StateChangeEdge_cursor(ctx, field, obj) + if out.Values[i] == graphql.Null { + out.Invalids++ + } + default: + panic("unknown field " + strconv.Quote(field.Name)) + } + } + out.Dispatch(ctx) + if out.Invalids > 0 { + return graphql.Null + } + + atomic.AddInt32(&ec.deferred, int32(len(deferred))) + + for label, dfs := range deferred { + ec.processDeferredGroup(graphql.DeferredGroup{ + Label: label, + Path: graphql.GetPath(ctx), + FieldSet: dfs, + Context: ctx, + }) + } + + return out +} + +var transactionImplementors = []string{"Transaction"} + +func (ec *executionContext) _Transaction(ctx context.Context, sel ast.SelectionSet, obj *types.Transaction) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, transactionImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("Transaction") + case "hash": + out.Values[i] = ec._Transaction_hash(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "envelopeXdr": + out.Values[i] = ec._Transaction_envelopeXdr(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "resultXdr": + out.Values[i] = ec._Transaction_resultXdr(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "metaXdr": + out.Values[i] = ec._Transaction_metaXdr(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerNumber": + out.Values[i] = ec._Transaction_ledgerNumber(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ledgerCreatedAt": + out.Values[i] = ec._Transaction_ledgerCreatedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "ingestedAt": + out.Values[i] = ec._Transaction_ingestedAt(ctx, field, obj) + if out.Values[i] == graphql.Null { + atomic.AddUint32(&out.Invalids, 1) + } + case "operations": field := field innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { @@ -9484,7 +15476,7 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._StateChange_keyValue(ctx, field, obj) + res = ec._Transaction_operations(ctx, field, obj) return res } @@ -9508,16 +15500,19 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "operation": + case "accounts": field := field - innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._StateChange_operation(ctx, field, obj) + res = ec._Transaction_accounts(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } return res } @@ -9541,19 +15536,16 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "transaction": + case "stateChanges": field := field - innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._StateChange_transaction(ctx, field, obj) - if res == graphql.Null { - atomic.AddUint32(&fs.Invalids, 1) - } + res = ec._Transaction_stateChanges(ctx, field, obj) return res } @@ -9600,21 +15592,21 @@ func (ec *executionContext) _StateChange(ctx context.Context, sel ast.SelectionS return out } -var stateChangeConnectionImplementors = []string{"StateChangeConnection"} +var transactionConnectionImplementors = []string{"TransactionConnection"} -func (ec *executionContext) _StateChangeConnection(ctx context.Context, sel ast.SelectionSet, obj *StateChangeConnection) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, stateChangeConnectionImplementors) +func (ec *executionContext) _TransactionConnection(ctx context.Context, sel ast.SelectionSet, obj *TransactionConnection) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, transactionConnectionImplementors) out := graphql.NewFieldSet(fields) deferred := make(map[string]*graphql.FieldSet) for i, field := range fields { switch field.Name { case "__typename": - out.Values[i] = graphql.MarshalString("StateChangeConnection") + out.Values[i] = graphql.MarshalString("TransactionConnection") case "edges": - out.Values[i] = ec._StateChangeConnection_edges(ctx, field, obj) + out.Values[i] = ec._TransactionConnection_edges(ctx, field, obj) case "pageInfo": - out.Values[i] = ec._StateChangeConnection_pageInfo(ctx, field, obj) + out.Values[i] = ec._TransactionConnection_pageInfo(ctx, field, obj) if out.Values[i] == graphql.Null { out.Invalids++ } @@ -9641,21 +15633,21 @@ func (ec *executionContext) _StateChangeConnection(ctx context.Context, sel ast. return out } -var stateChangeEdgeImplementors = []string{"StateChangeEdge"} +var transactionEdgeImplementors = []string{"TransactionEdge"} -func (ec *executionContext) _StateChangeEdge(ctx context.Context, sel ast.SelectionSet, obj *StateChangeEdge) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, stateChangeEdgeImplementors) +func (ec *executionContext) _TransactionEdge(ctx context.Context, sel ast.SelectionSet, obj *TransactionEdge) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, transactionEdgeImplementors) out := graphql.NewFieldSet(fields) deferred := make(map[string]*graphql.FieldSet) for i, field := range fields { switch field.Name { case "__typename": - out.Values[i] = graphql.MarshalString("StateChangeEdge") + out.Values[i] = graphql.MarshalString("TransactionEdge") case "node": - out.Values[i] = ec._StateChangeEdge_node(ctx, field, obj) + out.Values[i] = ec._TransactionEdge_node(ctx, field, obj) case "cursor": - out.Values[i] = ec._StateChangeEdge_cursor(ctx, field, obj) + out.Values[i] = ec._TransactionEdge_cursor(ctx, field, obj) if out.Values[i] == graphql.Null { out.Invalids++ } @@ -9679,56 +15671,144 @@ func (ec *executionContext) _StateChangeEdge(ctx context.Context, sel ast.Select }) } - return out -} + return out +} + +var trustlineChangeImplementors = []string{"TrustlineChange", "BaseStateChange"} + +func (ec *executionContext) _TrustlineChange(ctx context.Context, sel ast.SelectionSet, obj *types.TrustlineStateChangeModel) graphql.Marshaler { + fields := graphql.CollectFields(ec.OperationContext, sel, trustlineChangeImplementors) + + out := graphql.NewFieldSet(fields) + deferred := make(map[string]*graphql.FieldSet) + for i, field := range fields { + switch field.Name { + case "__typename": + out.Values[i] = graphql.MarshalString("TrustlineChange") + case "type": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._TrustlineChange_type(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res + } + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) -var transactionImplementors = []string{"Transaction"} + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue + } -func (ec *executionContext) _Transaction(ctx context.Context, sel ast.SelectionSet, obj *types.Transaction) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, transactionImplementors) + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "reason": + field := field - out := graphql.NewFieldSet(fields) - deferred := make(map[string]*graphql.FieldSet) - for i, field := range fields { - switch field.Name { - case "__typename": - out.Values[i] = graphql.MarshalString("Transaction") - case "hash": - out.Values[i] = ec._Transaction_hash(ctx, field, obj) - if out.Values[i] == graphql.Null { - atomic.AddUint32(&out.Invalids, 1) + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._TrustlineChange_reason(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res } - case "envelopeXdr": - out.Values[i] = ec._Transaction_envelopeXdr(ctx, field, obj) - if out.Values[i] == graphql.Null { - atomic.AddUint32(&out.Invalids, 1) + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue } - case "resultXdr": - out.Values[i] = ec._Transaction_resultXdr(ctx, field, obj) + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "ingestedAt": + out.Values[i] = ec._TrustlineChange_ingestedAt(ctx, field, obj) if out.Values[i] == graphql.Null { atomic.AddUint32(&out.Invalids, 1) } - case "metaXdr": - out.Values[i] = ec._Transaction_metaXdr(ctx, field, obj) + case "ledgerCreatedAt": + out.Values[i] = ec._TrustlineChange_ledgerCreatedAt(ctx, field, obj) if out.Values[i] == graphql.Null { atomic.AddUint32(&out.Invalids, 1) } case "ledgerNumber": - out.Values[i] = ec._Transaction_ledgerNumber(ctx, field, obj) + out.Values[i] = ec._TrustlineChange_ledgerNumber(ctx, field, obj) if out.Values[i] == graphql.Null { atomic.AddUint32(&out.Invalids, 1) } - case "ledgerCreatedAt": - out.Values[i] = ec._Transaction_ledgerCreatedAt(ctx, field, obj) - if out.Values[i] == graphql.Null { - atomic.AddUint32(&out.Invalids, 1) + case "account": + field := field + + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { + defer func() { + if r := recover(); r != nil { + ec.Error(ctx, ec.Recover(ctx, r)) + } + }() + res = ec._TrustlineChange_account(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } + return res } - case "ingestedAt": - out.Values[i] = ec._Transaction_ingestedAt(ctx, field, obj) - if out.Values[i] == graphql.Null { - atomic.AddUint32(&out.Invalids, 1) + + if field.Deferrable != nil { + dfs, ok := deferred[field.Deferrable.Label] + di := 0 + if ok { + dfs.AddField(field) + di = len(dfs.Values) - 1 + } else { + dfs = graphql.NewFieldSet([]graphql.CollectedField{field}) + deferred[field.Deferrable.Label] = dfs + } + dfs.Concurrently(di, func(ctx context.Context) graphql.Marshaler { + return innerFunc(ctx, dfs) + }) + + // don't run the out.Concurrently() call below + out.Values[i] = graphql.Null + continue } - case "operations": + + out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) + case "operation": field := field innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { @@ -9737,7 +15817,7 @@ func (ec *executionContext) _Transaction(ctx context.Context, sel ast.SelectionS ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._Transaction_operations(ctx, field, obj) + res = ec._TrustlineChange_operation(ctx, field, obj) return res } @@ -9761,7 +15841,7 @@ func (ec *executionContext) _Transaction(ctx context.Context, sel ast.SelectionS } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "accounts": + case "transaction": field := field innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { @@ -9770,7 +15850,7 @@ func (ec *executionContext) _Transaction(ctx context.Context, sel ast.SelectionS ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._Transaction_accounts(ctx, field, obj) + res = ec._TrustlineChange_transaction(ctx, field, obj) if res == graphql.Null { atomic.AddUint32(&fs.Invalids, 1) } @@ -9797,16 +15877,19 @@ func (ec *executionContext) _Transaction(ctx context.Context, sel ast.SelectionS } out.Concurrently(i, func(ctx context.Context) graphql.Marshaler { return innerFunc(ctx, out) }) - case "stateChanges": + case "limit": field := field - innerFunc := func(ctx context.Context, _ *graphql.FieldSet) (res graphql.Marshaler) { + innerFunc := func(ctx context.Context, fs *graphql.FieldSet) (res graphql.Marshaler) { defer func() { if r := recover(); r != nil { ec.Error(ctx, ec.Recover(ctx, r)) } }() - res = ec._Transaction_stateChanges(ctx, field, obj) + res = ec._TrustlineChange_limit(ctx, field, obj) + if res == graphql.Null { + atomic.AddUint32(&fs.Invalids, 1) + } return res } @@ -9853,88 +15936,6 @@ func (ec *executionContext) _Transaction(ctx context.Context, sel ast.SelectionS return out } -var transactionConnectionImplementors = []string{"TransactionConnection"} - -func (ec *executionContext) _TransactionConnection(ctx context.Context, sel ast.SelectionSet, obj *TransactionConnection) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, transactionConnectionImplementors) - - out := graphql.NewFieldSet(fields) - deferred := make(map[string]*graphql.FieldSet) - for i, field := range fields { - switch field.Name { - case "__typename": - out.Values[i] = graphql.MarshalString("TransactionConnection") - case "edges": - out.Values[i] = ec._TransactionConnection_edges(ctx, field, obj) - case "pageInfo": - out.Values[i] = ec._TransactionConnection_pageInfo(ctx, field, obj) - if out.Values[i] == graphql.Null { - out.Invalids++ - } - default: - panic("unknown field " + strconv.Quote(field.Name)) - } - } - out.Dispatch(ctx) - if out.Invalids > 0 { - return graphql.Null - } - - atomic.AddInt32(&ec.deferred, int32(len(deferred))) - - for label, dfs := range deferred { - ec.processDeferredGroup(graphql.DeferredGroup{ - Label: label, - Path: graphql.GetPath(ctx), - FieldSet: dfs, - Context: ctx, - }) - } - - return out -} - -var transactionEdgeImplementors = []string{"TransactionEdge"} - -func (ec *executionContext) _TransactionEdge(ctx context.Context, sel ast.SelectionSet, obj *TransactionEdge) graphql.Marshaler { - fields := graphql.CollectFields(ec.OperationContext, sel, transactionEdgeImplementors) - - out := graphql.NewFieldSet(fields) - deferred := make(map[string]*graphql.FieldSet) - for i, field := range fields { - switch field.Name { - case "__typename": - out.Values[i] = graphql.MarshalString("TransactionEdge") - case "node": - out.Values[i] = ec._TransactionEdge_node(ctx, field, obj) - case "cursor": - out.Values[i] = ec._TransactionEdge_cursor(ctx, field, obj) - if out.Values[i] == graphql.Null { - out.Invalids++ - } - default: - panic("unknown field " + strconv.Quote(field.Name)) - } - } - out.Dispatch(ctx) - if out.Invalids > 0 { - return graphql.Null - } - - atomic.AddInt32(&ec.deferred, int32(len(deferred))) - - for label, dfs := range deferred { - ec.processDeferredGroup(graphql.DeferredGroup{ - Label: label, - Path: graphql.GetPath(ctx), - FieldSet: dfs, - Context: ctx, - }) - } - - return out -} - var __DirectiveImplementors = []string{"__Directive"} func (ec *executionContext) ___Directive(ctx context.Context, sel ast.SelectionSet, obj *introspection.Directive) graphql.Marshaler { @@ -10270,6 +16271,10 @@ func (ec *executionContext) ___Type(ctx context.Context, sel ast.SelectionSet, o // region ***************************** type.gotpl ***************************** +func (ec *executionContext) marshalNAccount2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccount(ctx context.Context, sel ast.SelectionSet, v types.Account) graphql.Marshaler { + return ec._Account(ctx, sel, &v) +} + func (ec *executionContext) marshalNAccount2ᚕᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐAccountᚄ(ctx context.Context, sel ast.SelectionSet, v []*types.Account) graphql.Marshaler { ret := make(graphql.Array, len(v)) var wg sync.WaitGroup @@ -10493,6 +16498,23 @@ func (ec *executionContext) marshalNStateChangeEdge2ᚖgithubᚗcomᚋstellarᚋ return ec._StateChangeEdge(ctx, sel, v) } +func (ec *executionContext) unmarshalNStateChangeReason2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeReason(ctx context.Context, v any) (types.StateChangeReason, error) { + tmp, err := graphql.UnmarshalString(v) + res := types.StateChangeReason(tmp) + return res, graphql.ErrorOnPath(ctx, err) +} + +func (ec *executionContext) marshalNStateChangeReason2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeReason(ctx context.Context, sel ast.SelectionSet, v types.StateChangeReason) graphql.Marshaler { + _ = sel + res := graphql.MarshalString(string(v)) + if res == graphql.Null { + if !graphql.HasFieldError(ctx, graphql.GetFieldContext(ctx)) { + ec.Errorf(ctx, "the requested element is null which the schema does not allow") + } + } + return res +} + func (ec *executionContext) unmarshalNString2string(ctx context.Context, v any) (string, error) { res, err := graphql.UnmarshalString(v) return res, graphql.ErrorOnPath(ctx, err) @@ -10860,6 +16882,13 @@ func (ec *executionContext) marshalOAccount2ᚖgithubᚗcomᚋstellarᚋwallet return ec._Account(ctx, sel, v) } +func (ec *executionContext) marshalOBaseStateChange2githubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐBaseStateChange(ctx context.Context, sel ast.SelectionSet, v BaseStateChange) graphql.Marshaler { + if v == nil { + return graphql.Null + } + return ec._BaseStateChange(ctx, sel, v) +} + func (ec *executionContext) unmarshalOBoolean2bool(ctx context.Context, v any) (bool, error) { res, err := graphql.UnmarshalBoolean(v) return res, graphql.ErrorOnPath(ctx, err) @@ -10977,13 +17006,6 @@ func (ec *executionContext) unmarshalOSimulationResultInput2ᚖgithubᚗcomᚋst return &res, graphql.ErrorOnPath(ctx, err) } -func (ec *executionContext) marshalOStateChange2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChange(ctx context.Context, sel ast.SelectionSet, v *types.StateChange) graphql.Marshaler { - if v == nil { - return graphql.Null - } - return ec._StateChange(ctx, sel, v) -} - func (ec *executionContext) marshalOStateChangeConnection2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋserveᚋgraphqlᚋgeneratedᚐStateChangeConnection(ctx context.Context, sel ast.SelectionSet, v *StateChangeConnection) graphql.Marshaler { if v == nil { return graphql.Null @@ -11038,25 +17060,6 @@ func (ec *executionContext) marshalOStateChangeEdge2ᚕᚖgithubᚗcomᚋstellar return ret } -func (ec *executionContext) unmarshalOStateChangeReason2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeReason(ctx context.Context, v any) (*types.StateChangeReason, error) { - if v == nil { - return nil, nil - } - tmp, err := graphql.UnmarshalString(v) - res := types.StateChangeReason(tmp) - return &res, graphql.ErrorOnPath(ctx, err) -} - -func (ec *executionContext) marshalOStateChangeReason2ᚖgithubᚗcomᚋstellarᚋwalletᚑbackendᚋinternalᚋindexerᚋtypesᚐStateChangeReason(ctx context.Context, sel ast.SelectionSet, v *types.StateChangeReason) graphql.Marshaler { - if v == nil { - return graphql.Null - } - _ = sel - _ = ctx - res := graphql.MarshalString(string(*v)) - return res -} - func (ec *executionContext) unmarshalOString2ᚕstringᚄ(ctx context.Context, v any) ([]string, error) { if v == nil { return nil, nil diff --git a/internal/serve/graphql/generated/models_gen.go b/internal/serve/graphql/generated/models_gen.go index efe8126c..98800050 100644 --- a/internal/serve/graphql/generated/models_gen.go +++ b/internal/serve/graphql/generated/models_gen.go @@ -3,9 +3,23 @@ package graphql import ( + "time" + "github.com/stellar/wallet-backend/internal/indexer/types" ) +type BaseStateChange interface { + IsBaseStateChange() + GetType() types.StateChangeCategory + GetReason() types.StateChangeReason + GetIngestedAt() time.Time + GetLedgerCreatedAt() time.Time + GetLedgerNumber() uint32 + GetAccount() *types.Account + GetOperation() *types.Operation + GetTransaction() *types.Transaction +} + type BuildTransactionInput struct { Transaction *TransactionInput `json:"transaction"` } @@ -71,8 +85,8 @@ type StateChangeConnection struct { } type StateChangeEdge struct { - Node *types.StateChange `json:"node,omitempty"` - Cursor string `json:"cursor"` + Node BaseStateChange `json:"node,omitempty"` + Cursor string `json:"cursor"` } type TransactionConnection struct { diff --git a/internal/serve/graphql/resolvers/account.resolvers.go b/internal/serve/graphql/resolvers/account.resolvers.go index b9c214e4..8f056d12 100644 --- a/internal/serve/graphql/resolvers/account.resolvers.go +++ b/internal/serve/graphql/resolvers/account.resolvers.go @@ -100,14 +100,15 @@ func (r *accountResolver) StateChanges(ctx context.Context, obj *types.Account, return nil, fmt.Errorf("getting state changes from db for account %s: %w", obj.StellarAddress, err) } - conn := NewConnectionWithRelayPagination(stateChanges, params, func(sc *types.StateChangeWithCursor) string { - return fmt.Sprintf("%d:%d", sc.Cursor.ToID, sc.Cursor.StateChangeOrder) + convertedStateChanges := convertStateChangeToBaseStateChange(stateChanges) + conn := NewConnectionWithRelayPagination(convertedStateChanges, params, func(sc *baseStateChangeWithCursor) string { + return fmt.Sprintf("%d:%d", sc.cursor.ToID, sc.cursor.StateChangeOrder) }) edges := make([]*graphql1.StateChangeEdge, len(conn.Edges)) for i, edge := range conn.Edges { edges[i] = &graphql1.StateChangeEdge{ - Node: &edge.Node.StateChange, + Node: edge.Node.stateChange, Cursor: edge.Cursor, } } diff --git a/internal/serve/graphql/resolvers/account_resolvers_test.go b/internal/serve/graphql/resolvers/account_resolvers_test.go index 41d4b3f9..65da5ceb 100644 --- a/internal/serve/graphql/resolvers/account_resolvers_test.go +++ b/internal/serve/graphql/resolvers/account_resolvers_test.go @@ -278,11 +278,10 @@ func TestAccountResolver_StateChanges(t *testing.T) { require.NoError(t, err) require.Len(t, stateChanges.Edges, 20) // With 16 state changes ordered by ToID descending, check first few - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[1].Node.ToID, stateChanges.Edges[1].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[2].Node.ToID, stateChanges.Edges[2].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[3].Node.ToID, stateChanges.Edges[3].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[3].Node.ToID, stateChanges.Edges[3].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[1].Node).ToID, extractStateChangeIDs(stateChanges.Edges[1].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[2].Node).ToID, extractStateChangeIDs(stateChanges.Edges[2].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[3].Node).ToID, extractStateChangeIDs(stateChanges.Edges[3].Node).StateChangeOrder)) }) t.Run("get state changes with first/after limit and cursor", func(t *testing.T) { @@ -291,9 +290,9 @@ func TestAccountResolver_StateChanges(t *testing.T) { stateChanges, err := resolver.StateChanges(ctx, parentAccount, &first, nil, nil, nil) require.NoError(t, err) assert.Len(t, stateChanges.Edges, 3) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[1].Node.ToID, stateChanges.Edges[1].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[2].Node.ToID, stateChanges.Edges[2].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[1].Node).ToID, extractStateChangeIDs(stateChanges.Edges[1].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[2].Node).ToID, extractStateChangeIDs(stateChanges.Edges[2].Node).StateChangeOrder)) assert.True(t, stateChanges.PageInfo.HasNextPage) assert.False(t, stateChanges.PageInfo.HasPreviousPage) @@ -304,9 +303,9 @@ func TestAccountResolver_StateChanges(t *testing.T) { require.NoError(t, err) assert.Len(t, stateChanges.Edges, 3) // Fee state change with no operation - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[1].Node.ToID, stateChanges.Edges[1].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 2, 0).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[2].Node.ToID, stateChanges.Edges[2].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[1].Node).ToID, extractStateChangeIDs(stateChanges.Edges[1].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 2, 0).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[2].Node).ToID, extractStateChangeIDs(stateChanges.Edges[2].Node).StateChangeOrder)) assert.True(t, stateChanges.PageInfo.HasNextPage) assert.True(t, stateChanges.PageInfo.HasPreviousPage) @@ -317,10 +316,10 @@ func TestAccountResolver_StateChanges(t *testing.T) { stateChanges, err = resolver.StateChanges(ctx, parentAccount, &first, nextCursor, nil, nil) require.NoError(t, err) assert.Len(t, stateChanges.Edges, 14) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 2, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 2, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[1].Node.ToID, stateChanges.Edges[1].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 2, 2).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[2].Node.ToID, stateChanges.Edges[2].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 2, 2).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[3].Node.ToID, stateChanges.Edges[3].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 2, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 2, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[1].Node).ToID, extractStateChangeIDs(stateChanges.Edges[1].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 2, 2).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[2].Node).ToID, extractStateChangeIDs(stateChanges.Edges[2].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 2, 2).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[3].Node).ToID, extractStateChangeIDs(stateChanges.Edges[3].Node).StateChangeOrder)) assert.False(t, stateChanges.PageInfo.HasNextPage) assert.True(t, stateChanges.PageInfo.HasPreviousPage) }) @@ -331,9 +330,9 @@ func TestAccountResolver_StateChanges(t *testing.T) { stateChanges, err := resolver.StateChanges(ctx, parentAccount, nil, nil, &last, nil) require.NoError(t, err) assert.Len(t, stateChanges.Edges, 3) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 4, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 4, 2).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[1].Node.ToID, stateChanges.Edges[1].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 4, 2).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[2].Node.ToID, stateChanges.Edges[2].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 4, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 4, 2).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[1].Node).ToID, extractStateChangeIDs(stateChanges.Edges[1].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 4, 2).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[2].Node).ToID, extractStateChangeIDs(stateChanges.Edges[2].Node).StateChangeOrder)) assert.True(t, stateChanges.PageInfo.HasPreviousPage) assert.False(t, stateChanges.PageInfo.HasNextPage) @@ -343,9 +342,9 @@ func TestAccountResolver_StateChanges(t *testing.T) { stateChanges, err = resolver.StateChanges(ctx, parentAccount, nil, nil, &last, nextCursor) require.NoError(t, err) assert.Len(t, stateChanges.Edges, 3) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 3, 2).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 4, 0).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[1].Node.ToID, stateChanges.Edges[1].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 4, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[2].Node.ToID, stateChanges.Edges[2].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 3, 2).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 4, 0).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[1].Node).ToID, extractStateChangeIDs(stateChanges.Edges[1].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 4, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[2].Node).ToID, extractStateChangeIDs(stateChanges.Edges[2].Node).StateChangeOrder)) assert.True(t, stateChanges.PageInfo.HasNextPage) assert.True(t, stateChanges.PageInfo.HasPreviousPage) @@ -355,9 +354,9 @@ func TestAccountResolver_StateChanges(t *testing.T) { stateChanges, err = resolver.StateChanges(ctx, parentAccount, nil, nil, &last, nextCursor) require.NoError(t, err) assert.Len(t, stateChanges.Edges, 14) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[1].Node.ToID, stateChanges.Edges[1].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[2].Node.ToID, stateChanges.Edges[2].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[1].Node).ToID, extractStateChangeIDs(stateChanges.Edges[1].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[2].Node).ToID, extractStateChangeIDs(stateChanges.Edges[2].Node).StateChangeOrder)) assert.True(t, stateChanges.PageInfo.HasNextPage) assert.False(t, stateChanges.PageInfo.HasPreviousPage) }) diff --git a/internal/serve/graphql/resolvers/operation.resolvers.go b/internal/serve/graphql/resolvers/operation.resolvers.go index e7772b05..041857f8 100644 --- a/internal/serve/graphql/resolvers/operation.resolvers.go +++ b/internal/serve/graphql/resolvers/operation.resolvers.go @@ -87,14 +87,15 @@ func (r *operationResolver) StateChanges(ctx context.Context, obj *types.Operati return nil, err } - conn := NewConnectionWithRelayPagination(stateChanges, params, func(sc *types.StateChangeWithCursor) string { - return fmt.Sprintf("%d:%d", sc.Cursor.ToID, sc.Cursor.StateChangeOrder) + convertedStateChanges := convertStateChangeToBaseStateChange(stateChanges) + conn := NewConnectionWithRelayPagination(convertedStateChanges, params, func(sc *baseStateChangeWithCursor) string { + return fmt.Sprintf("%d:%d", sc.cursor.ToID, sc.cursor.StateChangeOrder) }) edges := make([]*graphql1.StateChangeEdge, len(conn.Edges)) for i, edge := range conn.Edges { edges[i] = &graphql1.StateChangeEdge{ - Node: &edge.Node.StateChange, + Node: edge.Node.stateChange, Cursor: edge.Cursor, } } diff --git a/internal/serve/graphql/resolvers/operation_resolvers_test.go b/internal/serve/graphql/resolvers/operation_resolvers_test.go index bbb7af95..eacda76a 100644 --- a/internal/serve/graphql/resolvers/operation_resolvers_test.go +++ b/internal/serve/graphql/resolvers/operation_resolvers_test.go @@ -143,8 +143,8 @@ func TestOperationResolver_StateChanges(t *testing.T) { require.NoError(t, err) require.Len(t, stateChanges.Edges, 2) // operation 1000,1,1 has 2 state changes - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[1].Node.ToID, stateChanges.Edges[1].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[1].Node).ToID, extractStateChangeIDs(stateChanges.Edges[1].Node).StateChangeOrder)) assert.False(t, stateChanges.PageInfo.HasNextPage) assert.False(t, stateChanges.PageInfo.HasPreviousPage) }) @@ -156,7 +156,7 @@ func TestOperationResolver_StateChanges(t *testing.T) { stateChanges, err := resolver.StateChanges(ctx, parentOperation, &first, nil, nil, nil) require.NoError(t, err) assert.Len(t, stateChanges.Edges, 1) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) assert.True(t, stateChanges.PageInfo.HasNextPage) assert.False(t, stateChanges.PageInfo.HasPreviousPage) @@ -166,7 +166,7 @@ func TestOperationResolver_StateChanges(t *testing.T) { stateChanges, err = resolver.StateChanges(ctx, parentOperation, &first, nextCursor, nil, nil) require.NoError(t, err) assert.Len(t, stateChanges.Edges, 1) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) assert.False(t, stateChanges.PageInfo.HasNextPage) assert.True(t, stateChanges.PageInfo.HasPreviousPage) }) @@ -178,7 +178,7 @@ func TestOperationResolver_StateChanges(t *testing.T) { stateChanges, err := resolver.StateChanges(ctx, parentOperation, nil, nil, &last, nil) require.NoError(t, err) assert.Len(t, stateChanges.Edges, 1) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) assert.False(t, stateChanges.PageInfo.HasNextPage) assert.True(t, stateChanges.PageInfo.HasPreviousPage) @@ -189,7 +189,7 @@ func TestOperationResolver_StateChanges(t *testing.T) { stateChanges, err = resolver.StateChanges(ctx, parentOperation, nil, nil, &last, prevCursor) require.NoError(t, err) assert.Len(t, stateChanges.Edges, 1) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) assert.True(t, stateChanges.PageInfo.HasNextPage) assert.False(t, stateChanges.PageInfo.HasPreviousPage) }) diff --git a/internal/serve/graphql/resolvers/queries.resolvers.go b/internal/serve/graphql/resolvers/queries.resolvers.go index 0e336b25..5c3805db 100644 --- a/internal/serve/graphql/resolvers/queries.resolvers.go +++ b/internal/serve/graphql/resolvers/queries.resolvers.go @@ -113,14 +113,15 @@ func (r *queryResolver) StateChanges(ctx context.Context, first *int32, after *s return nil, fmt.Errorf("getting state changes from db: %w", err) } - conn := NewConnectionWithRelayPagination(stateChanges, params, func(sc *types.StateChangeWithCursor) string { - return fmt.Sprintf("%d:%d", sc.Cursor.ToID, sc.Cursor.StateChangeOrder) + convertedStateChanges := convertStateChangeToBaseStateChange(stateChanges) + conn := NewConnectionWithRelayPagination(convertedStateChanges, params, func(sc *baseStateChangeWithCursor) string { + return fmt.Sprintf("%d:%d", sc.cursor.ToID, sc.cursor.StateChangeOrder) }) edges := make([]*graphql1.StateChangeEdge, len(conn.Edges)) for i, edge := range conn.Edges { edges[i] = &graphql1.StateChangeEdge{ - Node: &edge.Node.StateChange, + Node: edge.Node.stateChange, Cursor: edge.Cursor, } } diff --git a/internal/serve/graphql/resolvers/queries_resolvers_test.go b/internal/serve/graphql/resolvers/queries_resolvers_test.go index d398cc61..c8667d56 100644 --- a/internal/serve/graphql/resolvers/queries_resolvers_test.go +++ b/internal/serve/graphql/resolvers/queries_resolvers_test.go @@ -488,9 +488,9 @@ func TestQueryResolver_StateChanges(t *testing.T) { stateChanges, err := resolver.StateChanges(ctx, nil, nil, nil, nil) require.NoError(t, err) assert.Len(t, stateChanges.Edges, 20) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[1].Node.ToID, stateChanges.Edges[1].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[2].Node.ToID, stateChanges.Edges[2].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[1].Node).ToID, extractStateChangeIDs(stateChanges.Edges[1].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[2].Node).ToID, extractStateChangeIDs(stateChanges.Edges[2].Node).StateChangeOrder)) }) t.Run("get state changes with first/after limit and cursor", func(t *testing.T) { @@ -499,8 +499,8 @@ func TestQueryResolver_StateChanges(t *testing.T) { scs, err := resolver.StateChanges(ctx, &first, nil, nil, nil) require.NoError(t, err) assert.Len(t, scs.Edges, 2) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", scs.Edges[0].Node.ToID, scs.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", scs.Edges[1].Node.ToID, scs.Edges[1].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(scs.Edges[0].Node).ToID, extractStateChangeIDs(scs.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(scs.Edges[1].Node).ToID, extractStateChangeIDs(scs.Edges[1].Node).StateChangeOrder)) assert.True(t, scs.PageInfo.HasNextPage) assert.False(t, scs.PageInfo.HasPreviousPage) @@ -510,8 +510,8 @@ func TestQueryResolver_StateChanges(t *testing.T) { scs, err = resolver.StateChanges(ctx, &first, nextCursor, nil, nil) require.NoError(t, err) assert.Len(t, scs.Edges, 2) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", scs.Edges[0].Node.ToID, scs.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", scs.Edges[1].Node.ToID, scs.Edges[1].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(scs.Edges[0].Node).ToID, extractStateChangeIDs(scs.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(scs.Edges[1].Node).ToID, extractStateChangeIDs(scs.Edges[1].Node).StateChangeOrder)) assert.True(t, scs.PageInfo.HasNextPage) assert.True(t, scs.PageInfo.HasPreviousPage) @@ -522,8 +522,8 @@ func TestQueryResolver_StateChanges(t *testing.T) { scs, err = resolver.StateChanges(ctx, &first, nextCursor, nil, nil) require.NoError(t, err) assert.Len(t, scs.Edges, 16) // Should return next 10 items - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", scs.Edges[0].Node.ToID, scs.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 2, 0).ToInt64()), fmt.Sprintf("%d:%d", scs.Edges[1].Node.ToID, scs.Edges[1].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(scs.Edges[0].Node).ToID, extractStateChangeIDs(scs.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 2, 0).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(scs.Edges[1].Node).ToID, extractStateChangeIDs(scs.Edges[1].Node).StateChangeOrder)) assert.False(t, scs.PageInfo.HasNextPage) assert.True(t, scs.PageInfo.HasPreviousPage) }) @@ -534,8 +534,8 @@ func TestQueryResolver_StateChanges(t *testing.T) { stateChanges, err := resolver.StateChanges(ctx, nil, nil, &last, nil) require.NoError(t, err) assert.Len(t, stateChanges.Edges, 2) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 4, 2).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 4, 2).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[1].Node.ToID, stateChanges.Edges[1].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 4, 2).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 4, 2).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[1].Node).ToID, extractStateChangeIDs(stateChanges.Edges[1].Node).StateChangeOrder)) assert.False(t, stateChanges.PageInfo.HasNextPage) assert.True(t, stateChanges.PageInfo.HasPreviousPage) @@ -545,8 +545,8 @@ func TestQueryResolver_StateChanges(t *testing.T) { stateChanges, err = resolver.StateChanges(ctx, nil, nil, &last, prevCursor) require.NoError(t, err) assert.Len(t, stateChanges.Edges, 2) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 4, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 4, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[1].Node.ToID, stateChanges.Edges[1].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 4, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 4, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[1].Node).ToID, extractStateChangeIDs(stateChanges.Edges[1].Node).StateChangeOrder)) assert.True(t, stateChanges.PageInfo.HasNextPage) assert.True(t, stateChanges.PageInfo.HasPreviousPage) @@ -557,8 +557,8 @@ func TestQueryResolver_StateChanges(t *testing.T) { stateChanges, err = resolver.StateChanges(ctx, nil, nil, &last, prevCursor) require.NoError(t, err) assert.Len(t, stateChanges.Edges, 16) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[1].Node.ToID, stateChanges.Edges[1].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[1].Node).ToID, extractStateChangeIDs(stateChanges.Edges[1].Node).StateChangeOrder)) assert.True(t, stateChanges.PageInfo.HasNextPage) assert.False(t, stateChanges.PageInfo.HasPreviousPage) // We're at the beginning }) diff --git a/internal/serve/graphql/resolvers/resolver.go b/internal/serve/graphql/resolvers/resolver.go index 7f063f17..524b96c8 100644 --- a/internal/serve/graphql/resolvers/resolver.go +++ b/internal/serve/graphql/resolvers/resolver.go @@ -8,13 +8,25 @@ package resolvers // This is the main resolver struct that gqlgen uses to resolve GraphQL queries. import ( + "context" + "database/sql" + "encoding/json" + "errors" + "fmt" + "strings" + "github.com/stellar/wallet-backend/internal/data" + "github.com/stellar/wallet-backend/internal/indexer/types" + "github.com/stellar/wallet-backend/internal/serve/graphql/dataloaders" + "github.com/stellar/wallet-backend/internal/serve/middleware" "github.com/stellar/wallet-backend/internal/services" // TODO: Move TransactionService under /services txservices "github.com/stellar/wallet-backend/internal/transactions/services" ) +var ErrNotStateChange = errors.New("object is not a StateChange") + // Resolver is the main resolver struct for gqlgen // It holds dependencies needed by all resolver functions // gqlgen will embed this struct in generated resolver interfaces @@ -38,3 +50,116 @@ func NewResolver(models *data.Models, accountService services.AccountService, tr transactionService: transactionService, } } + +// Shared field resolver functions +// These functions handle common field resolution patterns to avoid duplication + +// resolveNullableString resolves nullable string fields from the database +// Returns pointer to string if valid, nil if null +func (r *Resolver) resolveNullableString(field sql.NullString) *string { + if field.Valid { + return &field.String + } + return nil +} + +// resolveRequiredString resolves required string fields from the database +// Returns empty string if null to satisfy non-nullable GraphQL fields +func (r *Resolver) resolveRequiredString(field sql.NullString) string { + if field.Valid { + return field.String + } + return "" +} + +// resolveJSONBField resolves JSONB fields that return nullable strings +// Marshals Go object to JSON string, returns nil if field is nil or empty map +func (r *Resolver) resolveJSONBField(field interface{}) (*string, error) { + if field == nil { + return nil, nil + } + + // Handle NullableJSONB specifically - if it's an empty map, treat as nil + if jsonbField, ok := field.(types.NullableJSONB); ok { + if len(jsonbField) == 0 { + return nil, nil + } + } + + jsonBytes, err := json.Marshal(field) + if err != nil { + return nil, fmt.Errorf("failed to marshal JSONB field: %w", err) + } + jsonString := string(jsonBytes) + return &jsonString, nil +} + +// resolveRequiredJSONBField resolves JSONB fields that return required strings +// Marshals Go object to JSON string, returns empty string if field is nil +func (r *Resolver) resolveRequiredJSONBField(field interface{}) (string, error) { + if field == nil { + return "", nil + } + jsonBytes, err := json.Marshal(field) + if err != nil { + return "", fmt.Errorf("failed to marshal JSONB field: %w", err) + } + return string(jsonBytes), nil +} + +// Shared resolver functions for BaseStateChange interface +// These functions provide common logic that all state change types can use + +// resolveStateChangeAccount resolves the account field for any state change type +// Since state changes have a direct account_id reference, we can fetch the account directly +func (r *Resolver) resolveStateChangeAccount(ctx context.Context, toID int64, stateChangeOrder int64) (*types.Account, error) { + loaders := ctx.Value(middleware.LoadersKey).(*dataloaders.Dataloaders) + dbColumns := GetDBColumnsForFields(ctx, types.Account{}) + + stateChangeID := fmt.Sprintf("%d-%d", toID, stateChangeOrder) + loaderKey := dataloaders.AccountColumnsKey{ + StateChangeID: stateChangeID, + Columns: strings.Join(dbColumns, ", "), + } + account, err := loaders.AccountByStateChangeIDLoader.Load(ctx, loaderKey) + if err != nil { + return nil, fmt.Errorf("loading account for state change %s: %w", stateChangeID, err) + } + return account, nil +} + +// resolveStateChangeOperation resolves the operation field for any state change type +// Reuses the existing logic from the original StateChange resolver +func (r *Resolver) resolveStateChangeOperation(ctx context.Context, toID int64, stateChangeOrder int64) (*types.Operation, error) { + loaders := ctx.Value(middleware.LoadersKey).(*dataloaders.Dataloaders) + dbColumns := GetDBColumnsForFields(ctx, types.Operation{}) + + stateChangeID := fmt.Sprintf("%d-%d", toID, stateChangeOrder) + loaderKey := dataloaders.OperationColumnsKey{ + StateChangeID: stateChangeID, + Columns: strings.Join(dbColumns, ", "), + } + operations, err := loaders.OperationByStateChangeIDLoader.Load(ctx, loaderKey) + if err != nil { + return nil, fmt.Errorf("loading operation for state change %s: %w", stateChangeID, err) + } + return operations, nil +} + +// resolveStateChangeTransaction resolves the transaction field for any state change type +// Reuses the existing logic from the original StateChange resolver +func (r *Resolver) resolveStateChangeTransaction(ctx context.Context, toID int64, stateChangeOrder int64) (*types.Transaction, error) { + loaders := ctx.Value(middleware.LoadersKey).(*dataloaders.Dataloaders) + dbColumns := GetDBColumnsForFields(ctx, types.Transaction{}) + + stateChangeID := fmt.Sprintf("%d-%d", toID, stateChangeOrder) + loaderKey := dataloaders.TransactionColumnsKey{ + StateChangeID: stateChangeID, + Columns: strings.Join(dbColumns, ", "), + } + transaction, err := loaders.TransactionByStateChangeIDLoader.Load(ctx, loaderKey) + if err != nil { + return nil, fmt.Errorf("loading transaction for state change %s: %w", stateChangeID, err) + } + return transaction, nil +} diff --git a/internal/serve/graphql/resolvers/statechange.resolvers.go b/internal/serve/graphql/resolvers/statechange.resolvers.go index 899ea1ec..8e69545b 100644 --- a/internal/serve/graphql/resolvers/statechange.resolvers.go +++ b/internal/serve/graphql/resolvers/statechange.resolvers.go @@ -6,182 +6,353 @@ package resolvers import ( "context" - "encoding/json" - "fmt" - "strings" "github.com/stellar/wallet-backend/internal/indexer/types" - "github.com/stellar/wallet-backend/internal/serve/graphql/dataloaders" graphql1 "github.com/stellar/wallet-backend/internal/serve/graphql/generated" - "github.com/stellar/wallet-backend/internal/serve/middleware" ) +// Type is the resolver for the type field. +func (r *accountChangeResolver) Type(ctx context.Context, obj *types.AccountStateChangeModel) (types.StateChangeCategory, error) { + return obj.StateChangeCategory, nil +} + +// Reason is the resolver for the reason field. +func (r *accountChangeResolver) Reason(ctx context.Context, obj *types.AccountStateChangeModel) (types.StateChangeReason, error) { + return *obj.StateChangeReason, nil +} + +// Account is the resolver for the account field. +func (r *accountChangeResolver) Account(ctx context.Context, obj *types.AccountStateChangeModel) (*types.Account, error) { + return r.resolveStateChangeAccount(ctx, obj.ToID, obj.StateChangeOrder) +} + +// Operation is the resolver for the operation field. +func (r *accountChangeResolver) Operation(ctx context.Context, obj *types.AccountStateChangeModel) (*types.Operation, error) { + return r.resolveStateChangeOperation(ctx, obj.ToID, obj.StateChangeOrder) +} + +// Transaction is the resolver for the transaction field. +func (r *accountChangeResolver) Transaction(ctx context.Context, obj *types.AccountStateChangeModel) (*types.Transaction, error) { + return r.resolveStateChangeTransaction(ctx, obj.ToID, obj.StateChangeOrder) +} + // TokenID is the resolver for the tokenId field. -// This resolver handles nullable string fields from the database -// GraphQL nullable fields return null when the database value is not valid -func (r *stateChangeResolver) TokenID(ctx context.Context, obj *types.StateChange) (*string, error) { - if obj.TokenID.Valid { - return &obj.TokenID.String, nil - } - return nil, nil +func (r *accountChangeResolver) TokenID(ctx context.Context, obj *types.AccountStateChangeModel) (string, error) { + return r.resolveRequiredString(obj.TokenID), nil } // Amount is the resolver for the amount field. -func (r *stateChangeResolver) Amount(ctx context.Context, obj *types.StateChange) (*string, error) { - if obj.Amount.Valid { - return &obj.Amount.String, nil - } - return nil, nil +func (r *accountChangeResolver) Amount(ctx context.Context, obj *types.AccountStateChangeModel) (string, error) { + return r.resolveRequiredString(obj.Amount), nil } -// ClaimableBalanceID is the resolver for the claimableBalanceId field. -func (r *stateChangeResolver) ClaimableBalanceID(ctx context.Context, obj *types.StateChange) (*string, error) { - if obj.ClaimableBalanceID.Valid { - return &obj.ClaimableBalanceID.String, nil - } - return nil, nil +// Type is the resolver for the type field. +func (r *balanceAuthorizationChangeResolver) Type(ctx context.Context, obj *types.BalanceAuthorizationStateChangeModel) (types.StateChangeCategory, error) { + return obj.StateChangeCategory, nil } -// LiquidityPoolID is the resolver for the liquidityPoolId field. -func (r *stateChangeResolver) LiquidityPoolID(ctx context.Context, obj *types.StateChange) (*string, error) { - if obj.LiquidityPoolID.Valid { - return &obj.LiquidityPoolID.String, nil - } - return nil, nil +// Reason is the resolver for the reason field. +func (r *balanceAuthorizationChangeResolver) Reason(ctx context.Context, obj *types.BalanceAuthorizationStateChangeModel) (types.StateChangeReason, error) { + return *obj.StateChangeReason, nil } -// OfferID is the resolver for the offerId field. -func (r *stateChangeResolver) OfferID(ctx context.Context, obj *types.StateChange) (*string, error) { - if obj.OfferID.Valid { - return &obj.OfferID.String, nil - } - return nil, nil +// Account is the resolver for the account field. +func (r *balanceAuthorizationChangeResolver) Account(ctx context.Context, obj *types.BalanceAuthorizationStateChangeModel) (*types.Account, error) { + return r.resolveStateChangeAccount(ctx, obj.ToID, obj.StateChangeOrder) } -// SignerAccountID is the resolver for the signerAccountId field. -func (r *stateChangeResolver) SignerAccountID(ctx context.Context, obj *types.StateChange) (*string, error) { - if obj.SignerAccountID.Valid { - return &obj.SignerAccountID.String, nil - } - return nil, nil +// Operation is the resolver for the operation field. +func (r *balanceAuthorizationChangeResolver) Operation(ctx context.Context, obj *types.BalanceAuthorizationStateChangeModel) (*types.Operation, error) { + return r.resolveStateChangeOperation(ctx, obj.ToID, obj.StateChangeOrder) } -// SpenderAccountID is the resolver for the spenderAccountId field. -func (r *stateChangeResolver) SpenderAccountID(ctx context.Context, obj *types.StateChange) (*string, error) { - if obj.SpenderAccountID.Valid { - return &obj.SpenderAccountID.String, nil - } - return nil, nil +// Transaction is the resolver for the transaction field. +func (r *balanceAuthorizationChangeResolver) Transaction(ctx context.Context, obj *types.BalanceAuthorizationStateChangeModel) (*types.Transaction, error) { + return r.resolveStateChangeTransaction(ctx, obj.ToID, obj.StateChangeOrder) } -// SponsoredAccountID is the resolver for the sponsoredAccountId field. -func (r *stateChangeResolver) SponsoredAccountID(ctx context.Context, obj *types.StateChange) (*string, error) { - if obj.SponsoredAccountID.Valid { - return &obj.SponsoredAccountID.String, nil - } - return nil, nil +// Flags is the resolver for the flags field. +func (r *balanceAuthorizationChangeResolver) Flags(ctx context.Context, obj *types.BalanceAuthorizationStateChangeModel) ([]string, error) { + return obj.Flags, nil } -// SponsorAccountID is the resolver for the sponsorAccountId field. -func (r *stateChangeResolver) SponsorAccountID(ctx context.Context, obj *types.StateChange) (*string, error) { - if obj.SponsorAccountID.Valid { - return &obj.SponsorAccountID.String, nil - } - return nil, nil +// KeyValue is the resolver for the keyValue field. +func (r *balanceAuthorizationChangeResolver) KeyValue(ctx context.Context, obj *types.BalanceAuthorizationStateChangeModel) (*string, error) { + return r.resolveJSONBField(obj.KeyValue) } -// SignerWeights is the resolver for the signerWeights field. -// This resolver handles JSONB fields from the database -// Converts Go struct/map to JSON string for GraphQL -func (r *stateChangeResolver) SignerWeights(ctx context.Context, obj *types.StateChange) (*string, error) { - // Check if JSONB field has data - if obj.SignerWeights == nil { - return nil, nil - } - // Marshal Go object to JSON bytes - jsonBytes, err := json.Marshal(obj.SignerWeights) - if err != nil { - return nil, fmt.Errorf("failed to marshal signerWeights: %w", err) - } - jsonString := string(jsonBytes) - return &jsonString, nil +// Type is the resolver for the type field. +func (r *flagsChangeResolver) Type(ctx context.Context, obj *types.FlagsStateChangeModel) (types.StateChangeCategory, error) { + return obj.StateChangeCategory, nil } -// Thresholds is the resolver for the thresholds field. -// Handles JSONB threshold data conversion to JSON string -func (r *stateChangeResolver) Thresholds(ctx context.Context, obj *types.StateChange) (*string, error) { - if obj.Thresholds == nil { - return nil, nil - } - // Marshal Go object to JSON for GraphQL - jsonBytes, err := json.Marshal(obj.Thresholds) - if err != nil { - return nil, fmt.Errorf("failed to marshal thresholds: %w", err) - } - jsonString := string(jsonBytes) - return &jsonString, nil +// Reason is the resolver for the reason field. +func (r *flagsChangeResolver) Reason(ctx context.Context, obj *types.FlagsStateChangeModel) (types.StateChangeReason, error) { + return *obj.StateChangeReason, nil +} + +// Account is the resolver for the account field. +func (r *flagsChangeResolver) Account(ctx context.Context, obj *types.FlagsStateChangeModel) (*types.Account, error) { + return r.resolveStateChangeAccount(ctx, obj.ToID, obj.StateChangeOrder) +} + +// Operation is the resolver for the operation field. +func (r *flagsChangeResolver) Operation(ctx context.Context, obj *types.FlagsStateChangeModel) (*types.Operation, error) { + return r.resolveStateChangeOperation(ctx, obj.ToID, obj.StateChangeOrder) +} + +// Transaction is the resolver for the transaction field. +func (r *flagsChangeResolver) Transaction(ctx context.Context, obj *types.FlagsStateChangeModel) (*types.Transaction, error) { + return r.resolveStateChangeTransaction(ctx, obj.ToID, obj.StateChangeOrder) } // Flags is the resolver for the flags field. -// Converts Go string slice to GraphQL string array -// This field uses a non-nullable array return type -func (r *stateChangeResolver) Flags(ctx context.Context, obj *types.StateChange) ([]string, error) { - if obj.Flags == nil { - return []string{}, nil - } - return []string(obj.Flags), nil +func (r *flagsChangeResolver) Flags(ctx context.Context, obj *types.FlagsStateChangeModel) ([]string, error) { + return obj.Flags, nil +} + +// Type is the resolver for the type field. +func (r *metadataChangeResolver) Type(ctx context.Context, obj *types.MetadataStateChangeModel) (types.StateChangeCategory, error) { + return obj.StateChangeCategory, nil +} + +// Reason is the resolver for the reason field. +func (r *metadataChangeResolver) Reason(ctx context.Context, obj *types.MetadataStateChangeModel) (types.StateChangeReason, error) { + return *obj.StateChangeReason, nil +} + +// Account is the resolver for the account field. +func (r *metadataChangeResolver) Account(ctx context.Context, obj *types.MetadataStateChangeModel) (*types.Account, error) { + return r.resolveStateChangeAccount(ctx, obj.ToID, obj.StateChangeOrder) +} + +// Operation is the resolver for the operation field. +func (r *metadataChangeResolver) Operation(ctx context.Context, obj *types.MetadataStateChangeModel) (*types.Operation, error) { + return r.resolveStateChangeOperation(ctx, obj.ToID, obj.StateChangeOrder) +} + +// Transaction is the resolver for the transaction field. +func (r *metadataChangeResolver) Transaction(ctx context.Context, obj *types.MetadataStateChangeModel) (*types.Transaction, error) { + return r.resolveStateChangeTransaction(ctx, obj.ToID, obj.StateChangeOrder) } // KeyValue is the resolver for the keyValue field. -// Handles JSONB key-value data conversion to JSON string -func (r *stateChangeResolver) KeyValue(ctx context.Context, obj *types.StateChange) (*string, error) { - if obj.KeyValue == nil { - return nil, nil - } - // Marshal Go object to JSON for GraphQL - jsonBytes, err := json.Marshal(obj.KeyValue) - if err != nil { - return nil, fmt.Errorf("failed to marshal keyValue: %w", err) - } - jsonString := string(jsonBytes) - return &jsonString, nil +func (r *metadataChangeResolver) KeyValue(ctx context.Context, obj *types.MetadataStateChangeModel) (string, error) { + return r.resolveRequiredJSONBField(obj.KeyValue) +} + +// Type is the resolver for the type field. +func (r *reservesChangeResolver) Type(ctx context.Context, obj *types.ReservesStateChangeModel) (types.StateChangeCategory, error) { + return obj.StateChangeCategory, nil +} + +// Reason is the resolver for the reason field. +func (r *reservesChangeResolver) Reason(ctx context.Context, obj *types.ReservesStateChangeModel) (types.StateChangeReason, error) { + return *obj.StateChangeReason, nil +} + +// Account is the resolver for the account field. +func (r *reservesChangeResolver) Account(ctx context.Context, obj *types.ReservesStateChangeModel) (*types.Account, error) { + return r.resolveStateChangeAccount(ctx, obj.ToID, obj.StateChangeOrder) +} + +// Operation is the resolver for the operation field. +func (r *reservesChangeResolver) Operation(ctx context.Context, obj *types.ReservesStateChangeModel) (*types.Operation, error) { + return r.resolveStateChangeOperation(ctx, obj.ToID, obj.StateChangeOrder) +} + +// Transaction is the resolver for the transaction field. +func (r *reservesChangeResolver) Transaction(ctx context.Context, obj *types.ReservesStateChangeModel) (*types.Transaction, error) { + return r.resolveStateChangeTransaction(ctx, obj.ToID, obj.StateChangeOrder) +} + +// SponsoredAddress is the resolver for the sponsoredAddress field. +func (r *reservesChangeResolver) SponsoredAddress(ctx context.Context, obj *types.ReservesStateChangeModel) (*string, error) { + return r.resolveNullableString(obj.SponsoredAccountID), nil +} + +// SponsorAddress is the resolver for the sponsorAddress field. +func (r *reservesChangeResolver) SponsorAddress(ctx context.Context, obj *types.ReservesStateChangeModel) (*string, error) { + return r.resolveNullableString(obj.SponsorAccountID), nil +} + +// Type is the resolver for the type field. +func (r *signerChangeResolver) Type(ctx context.Context, obj *types.SignerStateChangeModel) (types.StateChangeCategory, error) { + return obj.StateChangeCategory, nil +} + +// Reason is the resolver for the reason field. +func (r *signerChangeResolver) Reason(ctx context.Context, obj *types.SignerStateChangeModel) (types.StateChangeReason, error) { + return *obj.StateChangeReason, nil +} + +// Account is the resolver for the account field. +func (r *signerChangeResolver) Account(ctx context.Context, obj *types.SignerStateChangeModel) (*types.Account, error) { + return r.resolveStateChangeAccount(ctx, obj.ToID, obj.StateChangeOrder) +} + +// Operation is the resolver for the operation field. +func (r *signerChangeResolver) Operation(ctx context.Context, obj *types.SignerStateChangeModel) (*types.Operation, error) { + return r.resolveStateChangeOperation(ctx, obj.ToID, obj.StateChangeOrder) +} + +// Transaction is the resolver for the transaction field. +func (r *signerChangeResolver) Transaction(ctx context.Context, obj *types.SignerStateChangeModel) (*types.Transaction, error) { + return r.resolveStateChangeTransaction(ctx, obj.ToID, obj.StateChangeOrder) +} + +// SignerAddress is the resolver for the signerAddress field. +func (r *signerChangeResolver) SignerAddress(ctx context.Context, obj *types.SignerStateChangeModel) (*string, error) { + return r.resolveNullableString(obj.SignerAccountID), nil +} + +// SignerWeights is the resolver for the signerWeights field. +func (r *signerChangeResolver) SignerWeights(ctx context.Context, obj *types.SignerStateChangeModel) (*string, error) { + return r.resolveJSONBField(obj.SignerWeights) +} + +// Type is the resolver for the type field. +func (r *signerThresholdsChangeResolver) Type(ctx context.Context, obj *types.SignerThresholdsStateChangeModel) (types.StateChangeCategory, error) { + return obj.StateChangeCategory, nil +} + +// Reason is the resolver for the reason field. +func (r *signerThresholdsChangeResolver) Reason(ctx context.Context, obj *types.SignerThresholdsStateChangeModel) (types.StateChangeReason, error) { + return *obj.StateChangeReason, nil +} + +// Account is the resolver for the account field. +func (r *signerThresholdsChangeResolver) Account(ctx context.Context, obj *types.SignerThresholdsStateChangeModel) (*types.Account, error) { + return r.resolveStateChangeAccount(ctx, obj.ToID, obj.StateChangeOrder) } // Operation is the resolver for the operation field. -func (r *stateChangeResolver) Operation(ctx context.Context, obj *types.StateChange) (*types.Operation, error) { - loaders := ctx.Value(middleware.LoadersKey).(*dataloaders.Dataloaders) - dbColumns := GetDBColumnsForFields(ctx, types.Operation{}) - - stateChangeID := fmt.Sprintf("%d-%d", obj.ToID, obj.StateChangeOrder) - loaderKey := dataloaders.OperationColumnsKey{ - StateChangeID: stateChangeID, - Columns: strings.Join(dbColumns, ", "), - } - operations, err := loaders.OperationByStateChangeIDLoader.Load(ctx, loaderKey) - if err != nil { - return nil, err - } - return operations, nil +func (r *signerThresholdsChangeResolver) Operation(ctx context.Context, obj *types.SignerThresholdsStateChangeModel) (*types.Operation, error) { + return r.resolveStateChangeOperation(ctx, obj.ToID, obj.StateChangeOrder) } // Transaction is the resolver for the transaction field. -func (r *stateChangeResolver) Transaction(ctx context.Context, obj *types.StateChange) (*types.Transaction, error) { - loaders := ctx.Value(middleware.LoadersKey).(*dataloaders.Dataloaders) - dbColumns := GetDBColumnsForFields(ctx, types.Transaction{}) - - stateChangeID := fmt.Sprintf("%d-%d", obj.ToID, obj.StateChangeOrder) - loaderKey := dataloaders.TransactionColumnsKey{ - StateChangeID: stateChangeID, - Columns: strings.Join(dbColumns, ", "), - } - transaction, err := loaders.TransactionByStateChangeIDLoader.Load(ctx, loaderKey) - if err != nil { - return nil, err - } - return transaction, nil -} - -// StateChange returns graphql1.StateChangeResolver implementation. -func (r *Resolver) StateChange() graphql1.StateChangeResolver { return &stateChangeResolver{r} } - -type stateChangeResolver struct{ *Resolver } +func (r *signerThresholdsChangeResolver) Transaction(ctx context.Context, obj *types.SignerThresholdsStateChangeModel) (*types.Transaction, error) { + return r.resolveStateChangeTransaction(ctx, obj.ToID, obj.StateChangeOrder) +} + +// Thresholds is the resolver for the thresholds field. +func (r *signerThresholdsChangeResolver) Thresholds(ctx context.Context, obj *types.SignerThresholdsStateChangeModel) (string, error) { + return r.resolveRequiredJSONBField(obj.Thresholds) +} + +// Type is the resolver for the type field. +func (r *standardBalanceChangeResolver) Type(ctx context.Context, obj *types.StandardBalanceStateChangeModel) (types.StateChangeCategory, error) { + return obj.StateChangeCategory, nil +} + +// Reason is the resolver for the reason field. +func (r *standardBalanceChangeResolver) Reason(ctx context.Context, obj *types.StandardBalanceStateChangeModel) (types.StateChangeReason, error) { + return *obj.StateChangeReason, nil +} + +// Account is the resolver for the account field. +func (r *standardBalanceChangeResolver) Account(ctx context.Context, obj *types.StandardBalanceStateChangeModel) (*types.Account, error) { + return r.resolveStateChangeAccount(ctx, obj.ToID, obj.StateChangeOrder) +} + +// Operation is the resolver for the operation field. +func (r *standardBalanceChangeResolver) Operation(ctx context.Context, obj *types.StandardBalanceStateChangeModel) (*types.Operation, error) { + return r.resolveStateChangeOperation(ctx, obj.ToID, obj.StateChangeOrder) +} + +// Transaction is the resolver for the transaction field. +func (r *standardBalanceChangeResolver) Transaction(ctx context.Context, obj *types.StandardBalanceStateChangeModel) (*types.Transaction, error) { + return r.resolveStateChangeTransaction(ctx, obj.ToID, obj.StateChangeOrder) +} + +// TokenID is the resolver for the tokenId field. +func (r *standardBalanceChangeResolver) TokenID(ctx context.Context, obj *types.StandardBalanceStateChangeModel) (string, error) { + return r.resolveRequiredString(obj.TokenID), nil +} + +// Amount is the resolver for the amount field. +func (r *standardBalanceChangeResolver) Amount(ctx context.Context, obj *types.StandardBalanceStateChangeModel) (string, error) { + return r.resolveRequiredString(obj.Amount), nil +} + +// Type is the resolver for the type field. +func (r *trustlineChangeResolver) Type(ctx context.Context, obj *types.TrustlineStateChangeModel) (types.StateChangeCategory, error) { + return obj.StateChangeCategory, nil +} + +// Reason is the resolver for the reason field. +func (r *trustlineChangeResolver) Reason(ctx context.Context, obj *types.TrustlineStateChangeModel) (types.StateChangeReason, error) { + return *obj.StateChangeReason, nil +} + +// Account is the resolver for the account field. +func (r *trustlineChangeResolver) Account(ctx context.Context, obj *types.TrustlineStateChangeModel) (*types.Account, error) { + return r.resolveStateChangeAccount(ctx, obj.ToID, obj.StateChangeOrder) +} + +// Operation is the resolver for the operation field. +func (r *trustlineChangeResolver) Operation(ctx context.Context, obj *types.TrustlineStateChangeModel) (*types.Operation, error) { + return r.resolveStateChangeOperation(ctx, obj.ToID, obj.StateChangeOrder) +} + +// Transaction is the resolver for the transaction field. +func (r *trustlineChangeResolver) Transaction(ctx context.Context, obj *types.TrustlineStateChangeModel) (*types.Transaction, error) { + return r.resolveStateChangeTransaction(ctx, obj.ToID, obj.StateChangeOrder) +} + +// Limit is the resolver for the limit field. +func (r *trustlineChangeResolver) Limit(ctx context.Context, obj *types.TrustlineStateChangeModel) (string, error) { + return r.resolveRequiredJSONBField(obj.TrustlineLimit) +} + +// AccountChange returns graphql1.AccountChangeResolver implementation. +func (r *Resolver) AccountChange() graphql1.AccountChangeResolver { return &accountChangeResolver{r} } + +// BalanceAuthorizationChange returns graphql1.BalanceAuthorizationChangeResolver implementation. +func (r *Resolver) BalanceAuthorizationChange() graphql1.BalanceAuthorizationChangeResolver { + return &balanceAuthorizationChangeResolver{r} +} + +// FlagsChange returns graphql1.FlagsChangeResolver implementation. +func (r *Resolver) FlagsChange() graphql1.FlagsChangeResolver { return &flagsChangeResolver{r} } + +// MetadataChange returns graphql1.MetadataChangeResolver implementation. +func (r *Resolver) MetadataChange() graphql1.MetadataChangeResolver { + return &metadataChangeResolver{r} +} + +// ReservesChange returns graphql1.ReservesChangeResolver implementation. +func (r *Resolver) ReservesChange() graphql1.ReservesChangeResolver { + return &reservesChangeResolver{r} +} + +// SignerChange returns graphql1.SignerChangeResolver implementation. +func (r *Resolver) SignerChange() graphql1.SignerChangeResolver { return &signerChangeResolver{r} } + +// SignerThresholdsChange returns graphql1.SignerThresholdsChangeResolver implementation. +func (r *Resolver) SignerThresholdsChange() graphql1.SignerThresholdsChangeResolver { + return &signerThresholdsChangeResolver{r} +} + +// StandardBalanceChange returns graphql1.StandardBalanceChangeResolver implementation. +func (r *Resolver) StandardBalanceChange() graphql1.StandardBalanceChangeResolver { + return &standardBalanceChangeResolver{r} +} + +// TrustlineChange returns graphql1.TrustlineChangeResolver implementation. +func (r *Resolver) TrustlineChange() graphql1.TrustlineChangeResolver { + return &trustlineChangeResolver{r} +} + +type ( + accountChangeResolver struct{ *Resolver } + balanceAuthorizationChangeResolver struct{ *Resolver } + flagsChangeResolver struct{ *Resolver } + metadataChangeResolver struct{ *Resolver } + reservesChangeResolver struct{ *Resolver } + signerChangeResolver struct{ *Resolver } + signerThresholdsChangeResolver struct{ *Resolver } + standardBalanceChangeResolver struct{ *Resolver } + trustlineChangeResolver struct{ *Resolver } +) diff --git a/internal/serve/graphql/resolvers/statechange_resolvers_test.go b/internal/serve/graphql/resolvers/statechange_resolvers_test.go index 74497320..6c09e75b 100644 --- a/internal/serve/graphql/resolvers/statechange_resolvers_test.go +++ b/internal/serve/graphql/resolvers/statechange_resolvers_test.go @@ -19,83 +19,48 @@ import ( ) func TestStateChangeResolver_NullableStringFields(t *testing.T) { - resolver := &stateChangeResolver{&Resolver{}} + resolver := &standardBalanceChangeResolver{&Resolver{}} ctx := context.Background() t.Run("all valid", func(t *testing.T) { - obj := &types.StateChange{ - TokenID: sql.NullString{String: "token1", Valid: true}, - Amount: sql.NullString{String: "100.5", Valid: true}, - ClaimableBalanceID: sql.NullString{String: "cb1", Valid: true}, - LiquidityPoolID: sql.NullString{String: "lp1", Valid: true}, - OfferID: sql.NullString{String: "offer1", Valid: true}, - SignerAccountID: sql.NullString{String: "G-SIGNER", Valid: true}, - SpenderAccountID: sql.NullString{String: "G-SPENDER", Valid: true}, - SponsoredAccountID: sql.NullString{String: "G-SPONSORED", Valid: true}, - SponsorAccountID: sql.NullString{String: "G-SPONSOR", Valid: true}, + obj := &types.StandardBalanceStateChangeModel{ + StateChange: types.StateChange{ + TokenID: sql.NullString{String: "token1", Valid: true}, + Amount: sql.NullString{String: "100.5", Valid: true}, + }, } tokenID, err := resolver.TokenID(ctx, obj) require.NoError(t, err) - assert.Equal(t, "token1", *tokenID) + assert.Equal(t, "token1", tokenID) amount, err := resolver.Amount(ctx, obj) require.NoError(t, err) - assert.Equal(t, "100.5", *amount) - - cbID, err := resolver.ClaimableBalanceID(ctx, obj) - require.NoError(t, err) - assert.Equal(t, "cb1", *cbID) - - lpID, err := resolver.LiquidityPoolID(ctx, obj) - require.NoError(t, err) - assert.Equal(t, "lp1", *lpID) - - offerID, err := resolver.OfferID(ctx, obj) - require.NoError(t, err) - assert.Equal(t, "offer1", *offerID) - - signer, err := resolver.SignerAccountID(ctx, obj) - require.NoError(t, err) - assert.Equal(t, "G-SIGNER", *signer) - - spender, err := resolver.SpenderAccountID(ctx, obj) - require.NoError(t, err) - assert.Equal(t, "G-SPENDER", *spender) - - sponsored, err := resolver.SponsoredAccountID(ctx, obj) - require.NoError(t, err) - assert.Equal(t, "G-SPONSORED", *sponsored) - - sponsor, err := resolver.SponsorAccountID(ctx, obj) - require.NoError(t, err) - assert.Equal(t, "G-SPONSOR", *sponsor) + assert.Equal(t, "100.5", amount) }) t.Run("all null", func(t *testing.T) { - obj := &types.StateChange{} // All fields are zero-valued (Valid: false) + obj := &types.StandardBalanceStateChangeModel{} // All fields are zero-valued (Valid: false) tokenID, err := resolver.TokenID(ctx, obj) require.NoError(t, err) - assert.Nil(t, tokenID) + assert.Equal(t, "", tokenID) amount, err := resolver.Amount(ctx, obj) require.NoError(t, err) - assert.Nil(t, amount) - - cbID, err := resolver.ClaimableBalanceID(ctx, obj) - require.NoError(t, err) - assert.Nil(t, cbID) + assert.Equal(t, "", amount) }) } func TestStateChangeResolver_JSONFields(t *testing.T) { - resolver := &stateChangeResolver{&Resolver{}} ctx := context.Background() t.Run("signer weights", func(t *testing.T) { - obj := &types.StateChange{ - SignerWeights: types.NullableJSONB{"weight": 1}, + resolver := &signerChangeResolver{&Resolver{}} + obj := &types.SignerStateChangeModel{ + StateChange: types.StateChange{ + SignerWeights: types.NullableJSONB{"weight": 1}, + }, } expectedJSON, err := json.Marshal(obj.SignerWeights) require.NoError(t, err) @@ -111,20 +76,26 @@ func TestStateChangeResolver_JSONFields(t *testing.T) { }) t.Run("thresholds", func(t *testing.T) { - obj := &types.StateChange{ - Thresholds: types.NullableJSONB{"low": 1, "med": 2}, + resolver := &signerThresholdsChangeResolver{&Resolver{}} + obj := &types.SignerThresholdsStateChangeModel{ + StateChange: types.StateChange{ + Thresholds: types.NullableJSONB{"low": 1, "med": 2}, + }, } expectedJSON, err := json.Marshal(obj.Thresholds) require.NoError(t, err) jsonStr, err := resolver.Thresholds(ctx, obj) require.NoError(t, err) - assert.JSONEq(t, string(expectedJSON), *jsonStr) + assert.JSONEq(t, string(expectedJSON), jsonStr) }) t.Run("flags", func(t *testing.T) { - obj := &types.StateChange{ - Flags: types.NullableJSON{"auth_required", "auth_revocable"}, + resolver := &flagsChangeResolver{&Resolver{}} + obj := &types.FlagsStateChangeModel{ + StateChange: types.StateChange{ + Flags: types.NullableJSON{"auth_required", "auth_revocable"}, + }, } flags, err := resolver.Flags(ctx, obj) require.NoError(t, err) @@ -137,15 +108,75 @@ func TestStateChangeResolver_JSONFields(t *testing.T) { }) t.Run("key value", func(t *testing.T) { - obj := &types.StateChange{ - KeyValue: types.NullableJSONB{"key": "value"}, + resolver := &metadataChangeResolver{&Resolver{}} + obj := &types.MetadataStateChangeModel{ + StateChange: types.StateChange{ + KeyValue: types.NullableJSONB{"key": "value"}, + }, } expectedJSON, err := json.Marshal(obj.KeyValue) require.NoError(t, err) jsonStr, err := resolver.KeyValue(ctx, obj) require.NoError(t, err) - assert.JSONEq(t, string(expectedJSON), *jsonStr) + assert.JSONEq(t, string(expectedJSON), jsonStr) + }) +} + +func TestStateChangeResolver_Account(t *testing.T) { + mockMetricsService := &metrics.MockMetricsService{} + mockMetricsService.On("IncDBQuery", "SELECT", "accounts").Return() + mockMetricsService.On("ObserveDBQueryDuration", "SELECT", "accounts", mock.Anything).Return() + defer mockMetricsService.AssertExpectations(t) + + resolver := &standardBalanceChangeResolver{&Resolver{ + models: &data.Models{ + Account: &data.AccountModel{ + DB: testDBConnectionPool, + MetricsService: mockMetricsService, + }, + }, + }} + parentSC := types.StandardBalanceStateChangeModel{ + StateChange: types.StateChange{ + ToID: toid.New(1000, 1, 1).ToInt64(), + StateChangeOrder: 1, + StateChangeCategory: types.StateChangeCategoryBalance, + }, + } + + t.Run("success", func(t *testing.T) { + loaders := dataloaders.NewDataloaders(resolver.models) + ctx := context.WithValue(getTestCtx("accounts", []string{""}), middleware.LoadersKey, loaders) + + account, err := resolver.Account(ctx, &parentSC) + require.NoError(t, err) + assert.Equal(t, "test-account", account.StellarAddress) + }) + + t.Run("nil state change panics", func(t *testing.T) { + loaders := dataloaders.NewDataloaders(resolver.models) + ctx := context.WithValue(getTestCtx("accounts", []string{""}), middleware.LoadersKey, loaders) + + assert.Panics(t, func() { + _, _ = resolver.Account(ctx, nil) //nolint:errcheck + }) + }) + + t.Run("state change with non-existent account", func(t *testing.T) { + nonExistentSC := types.StandardBalanceStateChangeModel{ + StateChange: types.StateChange{ + ToID: 9999, + StateChangeOrder: 1, + StateChangeCategory: types.StateChangeCategoryBalance, + }, + } + loaders := dataloaders.NewDataloaders(resolver.models) + ctx := context.WithValue(getTestCtx("accounts", []string{""}), middleware.LoadersKey, loaders) + + account, err := resolver.Account(ctx, &nonExistentSC) + require.NoError(t, err) // Dataloader returns nil, not error for missing data + assert.Nil(t, account) }) } @@ -155,7 +186,7 @@ func TestStateChangeResolver_Operation(t *testing.T) { mockMetricsService.On("ObserveDBQueryDuration", "SELECT", "operations", mock.Anything).Return() defer mockMetricsService.AssertExpectations(t) - resolver := &stateChangeResolver{&Resolver{ + resolver := &standardBalanceChangeResolver{&Resolver{ models: &data.Models{ Operations: &data.OperationModel{ DB: testDBConnectionPool, @@ -163,13 +194,19 @@ func TestStateChangeResolver_Operation(t *testing.T) { }, }, }} - parentSC := &types.StateChange{ToID: toid.New(1000, 1, 1).ToInt64(), StateChangeOrder: 1} + parentSC := types.StandardBalanceStateChangeModel{ + StateChange: types.StateChange{ + ToID: toid.New(1000, 1, 1).ToInt64(), + StateChangeOrder: 1, + StateChangeCategory: types.StateChangeCategoryBalance, + }, + } t.Run("success", func(t *testing.T) { loaders := dataloaders.NewDataloaders(resolver.models) ctx := context.WithValue(getTestCtx("operations", []string{"id"}), middleware.LoadersKey, loaders) - op, err := resolver.Operation(ctx, parentSC) + op, err := resolver.Operation(ctx, &parentSC) require.NoError(t, err) assert.Equal(t, toid.New(1000, 1, 1).ToInt64(), op.ID) }) @@ -184,11 +221,17 @@ func TestStateChangeResolver_Operation(t *testing.T) { }) t.Run("state change with non-existent operation", func(t *testing.T) { - nonExistentSC := &types.StateChange{ToID: 9999, StateChangeOrder: 1} + nonExistentSC := types.StandardBalanceStateChangeModel{ + StateChange: types.StateChange{ + ToID: 9999, + StateChangeOrder: 1, + StateChangeCategory: types.StateChangeCategoryBalance, + }, + } loaders := dataloaders.NewDataloaders(resolver.models) ctx := context.WithValue(getTestCtx("operations", []string{"id"}), middleware.LoadersKey, loaders) - op, err := resolver.Operation(ctx, nonExistentSC) + op, err := resolver.Operation(ctx, &nonExistentSC) require.NoError(t, err) // Dataloader returns nil, not error for missing data assert.Nil(t, op) }) @@ -200,7 +243,7 @@ func TestStateChangeResolver_Transaction(t *testing.T) { mockMetricsService.On("ObserveDBQueryDuration", "SELECT", "transactions", mock.Anything).Return() defer mockMetricsService.AssertExpectations(t) - resolver := &stateChangeResolver{&Resolver{ + resolver := &standardBalanceChangeResolver{&Resolver{ models: &data.Models{ Transactions: &data.TransactionModel{ DB: testDBConnectionPool, @@ -208,13 +251,19 @@ func TestStateChangeResolver_Transaction(t *testing.T) { }, }, }} - parentSC := &types.StateChange{ToID: toid.New(1000, 1, 0).ToInt64(), StateChangeOrder: 1} + parentSC := types.StandardBalanceStateChangeModel{ + StateChange: types.StateChange{ + ToID: toid.New(1000, 1, 0).ToInt64(), + StateChangeOrder: 1, + StateChangeCategory: types.StateChangeCategoryBalance, + }, + } t.Run("success", func(t *testing.T) { loaders := dataloaders.NewDataloaders(resolver.models) ctx := context.WithValue(getTestCtx("transactions", []string{"hash"}), middleware.LoadersKey, loaders) - tx, err := resolver.Transaction(ctx, parentSC) + tx, err := resolver.Transaction(ctx, &parentSC) require.NoError(t, err) assert.Equal(t, "tx1", tx.Hash) }) @@ -229,11 +278,18 @@ func TestStateChangeResolver_Transaction(t *testing.T) { }) t.Run("state change with non-existent transaction", func(t *testing.T) { - nonExistentSC := &types.StateChange{ToID: 9999, StateChangeOrder: 1, TxHash: "non-existent-tx"} + nonExistentSC := types.StandardBalanceStateChangeModel{ + StateChange: types.StateChange{ + ToID: 9999, + StateChangeOrder: 1, + TxHash: "non-existent-tx", + StateChangeCategory: types.StateChangeCategoryBalance, + }, + } loaders := dataloaders.NewDataloaders(resolver.models) ctx := context.WithValue(getTestCtx("transactions", []string{"hash"}), middleware.LoadersKey, loaders) - tx, err := resolver.Transaction(ctx, nonExistentSC) + tx, err := resolver.Transaction(ctx, &nonExistentSC) require.NoError(t, err) // Dataloader returns nil, not error for missing data assert.Nil(t, tx) }) diff --git a/internal/serve/graphql/resolvers/test_utils.go b/internal/serve/graphql/resolvers/test_utils.go index f751255c..df2bade8 100644 --- a/internal/serve/graphql/resolvers/test_utils.go +++ b/internal/serve/graphql/resolvers/test_utils.go @@ -14,6 +14,7 @@ import ( "github.com/stellar/wallet-backend/internal/db" "github.com/stellar/wallet-backend/internal/indexer/types" + generated "github.com/stellar/wallet-backend/internal/serve/graphql/generated" ) func getTestCtx(table string, columns []string) context.Context { @@ -75,12 +76,14 @@ func setupDB(ctx context.Context, t *testing.T, dbConnectionPool db.ConnectionPo // Create 2 state changes per operation (20 total: 2 per operation × 8 operations + 4 fee state changes) stateChanges := make([]*types.StateChange, 0, 20) + creditReason := types.StateChangeReasonCredit for _, op := range ops { for scOrder := range 2 { stateChanges = append(stateChanges, &types.StateChange{ ToID: op.ID, StateChangeOrder: int64(scOrder + 1), - StateChangeCategory: types.StateChangeCategoryCredit, + StateChangeCategory: types.StateChangeCategoryBalance, + StateChangeReason: &creditReason, TxHash: op.TxHash, OperationID: op.ID, AccountID: parentAccount.StellarAddress, @@ -90,11 +93,13 @@ func setupDB(ctx context.Context, t *testing.T, dbConnectionPool db.ConnectionPo } } // Create fee state changes per transaction + debitReason := types.StateChangeReasonDebit for _, txn := range txns { stateChanges = append(stateChanges, &types.StateChange{ ToID: txn.ToID, StateChangeOrder: int64(1), - StateChangeCategory: types.StateChangeCategoryCredit, + StateChangeCategory: types.StateChangeCategoryBalance, + StateChangeReason: &debitReason, TxHash: txn.Hash, AccountID: parentAccount.StellarAddress, LedgerCreatedAt: time.Now(), @@ -153,3 +158,12 @@ func cleanUpDB(ctx context.Context, t *testing.T, dbConnectionPool db.Connection _, err = dbConnectionPool.ExecContext(ctx, `DELETE FROM accounts`) require.NoError(t, err) } + +func extractStateChangeIDs(sc generated.BaseStateChange) types.StateChangeCursor { + switch v := sc.(type) { + case types.StateChangeCursorGetter: + return v.GetCursor() + default: + return types.StateChangeCursor{} + } +} diff --git a/internal/serve/graphql/resolvers/transaction.resolvers.go b/internal/serve/graphql/resolvers/transaction.resolvers.go index d42c90e0..ab97f04a 100644 --- a/internal/serve/graphql/resolvers/transaction.resolvers.go +++ b/internal/serve/graphql/resolvers/transaction.resolvers.go @@ -104,14 +104,15 @@ func (r *transactionResolver) StateChanges(ctx context.Context, obj *types.Trans return nil, err } - conn := NewConnectionWithRelayPagination(stateChanges, params, func(sc *types.StateChangeWithCursor) string { - return fmt.Sprintf("%d:%d", sc.Cursor.ToID, sc.Cursor.StateChangeOrder) + convertedStateChanges := convertStateChangeToBaseStateChange(stateChanges) + conn := NewConnectionWithRelayPagination(convertedStateChanges, params, func(sc *baseStateChangeWithCursor) string { + return fmt.Sprintf("%d:%d", sc.cursor.ToID, sc.cursor.StateChangeOrder) }) edges := make([]*graphql1.StateChangeEdge, len(conn.Edges)) for i, edge := range conn.Edges { edges[i] = &graphql1.StateChangeEdge{ - Node: &edge.Node.StateChange, + Node: edge.Node.stateChange, Cursor: edge.Cursor, } } diff --git a/internal/serve/graphql/resolvers/transaction_resolvers_test.go b/internal/serve/graphql/resolvers/transaction_resolvers_test.go index 65a50f2c..55d50b64 100644 --- a/internal/serve/graphql/resolvers/transaction_resolvers_test.go +++ b/internal/serve/graphql/resolvers/transaction_resolvers_test.go @@ -230,11 +230,11 @@ func TestTransactionResolver_StateChanges(t *testing.T) { require.NoError(t, err) require.Len(t, stateChanges.Edges, 5) // For tx1: operations 1 and 2, each with 2 state changes and 1 fee change - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[1].Node.ToID, stateChanges.Edges[1].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[2].Node.ToID, stateChanges.Edges[2].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[3].Node.ToID, stateChanges.Edges[3].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[4].Node.ToID, stateChanges.Edges[4].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[1].Node).ToID, extractStateChangeIDs(stateChanges.Edges[1].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[2].Node).ToID, extractStateChangeIDs(stateChanges.Edges[2].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[3].Node).ToID, extractStateChangeIDs(stateChanges.Edges[3].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[4].Node).ToID, extractStateChangeIDs(stateChanges.Edges[4].Node).StateChangeOrder)) assert.False(t, stateChanges.PageInfo.HasNextPage) assert.False(t, stateChanges.PageInfo.HasPreviousPage) }) @@ -246,8 +246,8 @@ func TestTransactionResolver_StateChanges(t *testing.T) { stateChanges, err := resolver.StateChanges(ctx, parentTx, &first, nil, nil, nil) require.NoError(t, err) assert.Len(t, stateChanges.Edges, 2) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[1].Node.ToID, stateChanges.Edges[1].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[1].Node).ToID, extractStateChangeIDs(stateChanges.Edges[1].Node).StateChangeOrder)) assert.True(t, stateChanges.PageInfo.HasNextPage) assert.False(t, stateChanges.PageInfo.HasPreviousPage) @@ -257,8 +257,8 @@ func TestTransactionResolver_StateChanges(t *testing.T) { stateChanges, err = resolver.StateChanges(ctx, parentTx, &first, nextCursor, nil, nil) require.NoError(t, err) assert.Len(t, stateChanges.Edges, 2) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[1].Node.ToID, stateChanges.Edges[1].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[1].Node).ToID, extractStateChangeIDs(stateChanges.Edges[1].Node).StateChangeOrder)) assert.True(t, stateChanges.PageInfo.HasNextPage) assert.True(t, stateChanges.PageInfo.HasPreviousPage) }) @@ -270,8 +270,8 @@ func TestTransactionResolver_StateChanges(t *testing.T) { stateChanges, err := resolver.StateChanges(ctx, parentTx, nil, nil, &last, nil) require.NoError(t, err) assert.Len(t, stateChanges.Edges, 2) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[1].Node.ToID, stateChanges.Edges[1].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 2).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[1].Node).ToID, extractStateChangeIDs(stateChanges.Edges[1].Node).StateChangeOrder)) assert.False(t, stateChanges.PageInfo.HasNextPage) assert.True(t, stateChanges.PageInfo.HasPreviousPage) @@ -282,9 +282,9 @@ func TestTransactionResolver_StateChanges(t *testing.T) { stateChanges, err = resolver.StateChanges(ctx, parentTx, nil, nil, &last, prevCursor) require.NoError(t, err) assert.Len(t, stateChanges.Edges, 3) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[0].Node.ToID, stateChanges.Edges[0].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[1].Node.ToID, stateChanges.Edges[1].Node.StateChangeOrder)) - assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", stateChanges.Edges[2].Node.ToID, stateChanges.Edges[2].Node.StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 0).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[0].Node).ToID, extractStateChangeIDs(stateChanges.Edges[0].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:1", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[1].Node).ToID, extractStateChangeIDs(stateChanges.Edges[1].Node).StateChangeOrder)) + assert.Equal(t, fmt.Sprintf("%d:2", toid.New(1000, 1, 1).ToInt64()), fmt.Sprintf("%d:%d", extractStateChangeIDs(stateChanges.Edges[2].Node).ToID, extractStateChangeIDs(stateChanges.Edges[2].Node).StateChangeOrder)) assert.True(t, stateChanges.PageInfo.HasNextPage) assert.False(t, stateChanges.PageInfo.HasPreviousPage) }) diff --git a/internal/serve/graphql/resolvers/utils.go b/internal/serve/graphql/resolvers/utils.go index dca5b982..80755e98 100644 --- a/internal/serve/graphql/resolvers/utils.go +++ b/internal/serve/graphql/resolvers/utils.go @@ -39,6 +39,11 @@ type PaginationParams struct { SortOrder data.SortOrder } +type baseStateChangeWithCursor struct { + stateChange generated.BaseStateChange + cursor types.StateChangeCursor +} + // NewConnectionWithRelayPagination builds a connection supporting both forward and backward pagination. func NewConnectionWithRelayPagination[T any, C int64 | string](nodes []T, params PaginationParams, getCursorID func(T) C) *GenericConnection[T] { hasNextPage := false @@ -90,6 +95,63 @@ func NewConnectionWithRelayPagination[T any, C int64 | string](nodes []T, params } } +func convertStateChangeToBaseStateChange(stateChanges []*types.StateChangeWithCursor) []*baseStateChangeWithCursor { + convertedStateChanges := make([]*baseStateChangeWithCursor, len(stateChanges)) + for i, stateChange := range stateChanges { + convertedStateChanges[i] = &baseStateChangeWithCursor{ + stateChange: convertStateChangeTypes(stateChange.StateChange), + cursor: stateChange.Cursor, + } + } + + return convertedStateChanges +} + +// convertStateChangeTypes is the resolver for BaseStateChange interface type resolution +// This method determines which concrete GraphQL type to return based on StateChangeCategory +func convertStateChangeTypes(stateChange types.StateChange) generated.BaseStateChange { + switch stateChange.StateChangeCategory { + case types.StateChangeCategoryBalance: + return &types.StandardBalanceStateChangeModel{ + StateChange: stateChange, + } + case types.StateChangeCategoryAccount: + return &types.AccountStateChangeModel{ + StateChange: stateChange, + } + case types.StateChangeCategoryReserves: + return &types.ReservesStateChangeModel{ + StateChange: stateChange, + } + case types.StateChangeCategorySigner: + return &types.SignerStateChangeModel{ + StateChange: stateChange, + } + case types.StateChangeCategorySignatureThreshold: + return &types.SignerThresholdsStateChangeModel{ + StateChange: stateChange, + } + case types.StateChangeCategoryFlags: + return &types.FlagsStateChangeModel{ + StateChange: stateChange, + } + case types.StateChangeCategoryMetadata: + return &types.MetadataStateChangeModel{ + StateChange: stateChange, + } + case types.StateChangeCategoryTrustline: + return &types.TrustlineStateChangeModel{ + StateChange: stateChange, + } + case types.StateChangeCategoryBalanceAuthorization: + return &types.BalanceAuthorizationStateChangeModel{ + StateChange: stateChange, + } + default: + return nil + } +} + func GetDBColumnsForFields(ctx context.Context, model any) []string { opCtx := graphql.GetOperationContext(ctx) fields := graphql.CollectFieldsCtx(ctx, nil) diff --git a/internal/serve/graphql/schema/enums.graphqls b/internal/serve/graphql/schema/enums.graphqls index 0cd9bcc3..65067109 100644 --- a/internal/serve/graphql/schema/enums.graphqls +++ b/internal/serve/graphql/schema/enums.graphqls @@ -36,26 +36,27 @@ enum OperationType { # StateChangeCategory enum - categorizes the type of state change # Used in GraphQL queries to filter state changes by category enum StateChangeCategory { - DEBIT - CREDIT - MINT - BURN + BALANCE + ACCOUNT SIGNER SIGNATURE_THRESHOLD METADATA FLAGS - LIABILITY - TRUSTLINE_FLAGS - ALLOWANCE + TRUSTLINE SPONSORSHIP - CONTRACT + BALANCE_AUTHORIZATION AUTHORIZATION - UNSUPPORTED } # StateChangeReason enum - provides specific reason for the state change # Used in GraphQL queries to understand why a state change occurred enum StateChangeReason { + CREATE + MERGE + DEBIT + CREDIT + MINT + BURN ADD REMOVE UPDATE @@ -65,10 +66,5 @@ enum StateChangeReason { HOME_DOMAIN SET CLEAR - SELL - BUY DATA_ENTRY - CONSUME - DEPLOY - INVOKE } diff --git a/internal/serve/graphql/schema/pagination.graphqls b/internal/serve/graphql/schema/pagination.graphqls index 00020c75..d303750a 100644 --- a/internal/serve/graphql/schema/pagination.graphqls +++ b/internal/serve/graphql/schema/pagination.graphqls @@ -24,7 +24,7 @@ type StateChangeConnection { } type StateChangeEdge { - node: StateChange + node: BaseStateChange cursor: String! } diff --git a/internal/serve/graphql/schema/statechange.graphqls b/internal/serve/graphql/schema/statechange.graphqls index 700bebe1..47bedcda 100644 --- a/internal/serve/graphql/schema/statechange.graphqls +++ b/internal/serve/graphql/schema/statechange.graphqls @@ -1,37 +1,140 @@ # GraphQL StateChange type - represents changes to blockchain state -# This type has many nullable fields to handle various state change scenarios -# TODO: Break state change type into interface design and add sub types that implement the interface -type StateChange{ - accountId: String! - stateChangeCategory: StateChangeCategory! - stateChangeReason: StateChangeReason +interface BaseStateChange { + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) ingestedAt: Time! ledgerCreatedAt: Time! - ledgerNumber: UInt32! - - # GraphQL Nullable fields - these map to sql.NullString in Go - # GraphQL handles nullable fields gracefully - they return null if not set - tokenId: String - amount: String - claimableBalanceId: String - liquidityPoolId: String - offerId: String - signerAccountId: String - spenderAccountId: String - sponsoredAccountId: String - sponsorAccountId: String - - # GraphQL fields for JSONB data - require custom resolvers - # These fields need special handling to convert between Go types and GraphQL - signerWeights: String - thresholds: String - flags: [String!] - keyValue: String - + ledgerNumber: UInt32! + # GraphQL Relationships - these fields use resolvers + # Related operation - nullable since fee state changes do not have operations associated with them + account: Account! @goField(forceResolver: true) + # Related operation - nullable since fee state changes do not have operations associated with them operation: Operation @goField(forceResolver: true) # Related transaction transaction: Transaction! @goField(forceResolver: true) } + +type StandardBalanceChange implements BaseStateChange { + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + tokenId: String! + amount: String! +} + +type AccountChange implements BaseStateChange { + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + tokenId: String! + amount: String! +} + +type SignerChange implements BaseStateChange { + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + signerAddress: String + signerWeights: String +} + +type SignerThresholdsChange implements BaseStateChange { + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + thresholds: String! +} + +type MetadataChange implements BaseStateChange { + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + keyValue: String! +} + +type FlagsChange implements BaseStateChange { + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + flags: [String!]! +} + +type TrustlineChange implements BaseStateChange { + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + limit: String! +} + +type ReservesChange implements BaseStateChange{ + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + sponsoredAddress: String + sponsorAddress: String +} + +type BalanceAuthorizationChange implements BaseStateChange{ + type: StateChangeCategory! @goField(forceResolver: true) + reason: StateChangeReason! @goField(forceResolver: true) + ingestedAt: Time! + ledgerCreatedAt: Time! + ledgerNumber: UInt32! + account: Account! @goField(forceResolver: true) + operation: Operation @goField(forceResolver: true) + transaction: Transaction! @goField(forceResolver: true) + + flags: [String!]! + keyValue: String +} diff --git a/internal/serve/middleware/complexity_logger.go b/internal/serve/middleware/complexity_logger.go new file mode 100644 index 00000000..e7cf9211 --- /dev/null +++ b/internal/serve/middleware/complexity_logger.go @@ -0,0 +1,32 @@ +// Package middleware provides HTTP middleware components for the wallet backend server. +// This file implements GraphQL query complexity logging functionality. +package middleware + +import ( + "context" + + "github.com/stellar/go/support/log" +) + +// ComplexityLogger implements the gqlgen-complexity-reporter interface +// to log GraphQL query complexity values for monitoring and debugging. +type ComplexityLogger struct{} + +// NewComplexityLogger creates a new complexity logger instance. +func NewComplexityLogger() *ComplexityLogger { + return &ComplexityLogger{} +} + +// ReportComplexity logs the complexity of a GraphQL query. +// This method is called by the gqlgen-complexity-reporter extension. +func (c *ComplexityLogger) ReportComplexity(ctx context.Context, operationName string, complexity int) { + logger := log.Ctx(ctx) + + if operationName == "" { + operationName = "" + } + + logger.WithField("operation_name", operationName). + WithField("complexity", complexity). + Info("graphql query complexity") +} diff --git a/internal/serve/serve.go b/internal/serve/serve.go index 629d977d..21fd999f 100644 --- a/internal/serve/serve.go +++ b/internal/serve/serve.go @@ -34,6 +34,7 @@ import ( "github.com/99designs/gqlgen/graphql/handler/extension" "github.com/99designs/gqlgen/graphql/handler/lru" "github.com/99designs/gqlgen/graphql/handler/transport" + complexityreporter "github.com/basemachina/gqlgen-complexity-reporter" "github.com/vektah/gqlparser/v2/ast" ) @@ -231,11 +232,13 @@ func handler(deps handlerDeps) http.Handler { resolver := resolvers.NewResolver(deps.Models, deps.AccountService, deps.TransactionService) + config := generated.Config{ + Resolvers: resolver, + } + addComplexityCalculation(&config) srv := gqlhandler.New( generated.NewExecutableSchema( - generated.Config{ - Resolvers: resolver, - }, + config, ), ) srv.AddTransport(transport.Options{}) @@ -246,6 +249,12 @@ func handler(deps handlerDeps) http.Handler { srv.Use(extension.AutomaticPersistedQuery{ Cache: lru.New[string](100), }) + srv.Use(extension.FixedComplexityLimit(1000)) + + // Add complexity logging - reports all queries with their complexity values + reporter := middleware.NewComplexityLogger() + srv.Use(complexityreporter.NewExtension(reporter)) + r.Handle("/query", srv) }) @@ -261,3 +270,60 @@ func handler(deps handlerDeps) http.Handler { return mux } + +func addComplexityCalculation(config *generated.Config) { + /* + Complexity Calculation + -------------------------------- + Complexity is a measure of the computational cost of a query. + It is used to determine the performance of a query and to prevent + queries that are too complex from being executed. + + By default, graphql assigns a complexity of 1 to each field. This means that a query with 10 fields will have a complexity of 10. + However, we also want to take into account the number of items requested for paginated queries. So we use the first/last parameters + to calculate the final complexity. + + For example, for the following query, the complexity is calculated as follows: + -------------------------------- + transactions(first: 10) { + edges { + node { + hash + operations(first: 2) { + edges { + node { + id + stateChanges(first: 5) { + edges { + node { + stateChangeCategory + stateChangeReason + } + } + } + } + } + } + } + } + } + -------------------------------- + Complexity = 10*(1+1+1+2*(1+1+1+5*(1+1+1+1))) = 490 + -------------------------------- + */ + paginatedQueryComplexityFunc := func(childComplexity int, first *int32, after *string, last *int32, before *string) int { + limit := 10 // default limit when no pagination parameters provided + if first != nil { + limit = int(*first) + } else if last != nil { + limit = int(*last) + } + return childComplexity * limit + } + config.Complexity.Query.Transactions = paginatedQueryComplexityFunc + config.Complexity.Query.Operations = paginatedQueryComplexityFunc + config.Complexity.Query.StateChanges = paginatedQueryComplexityFunc + config.Complexity.Transaction.Operations = paginatedQueryComplexityFunc + config.Complexity.Transaction.StateChanges = paginatedQueryComplexityFunc + config.Complexity.Operation.StateChanges = paginatedQueryComplexityFunc +}