Open trajan0x opened 1 year ago
Update GraphQL Schema
/services/scribe/graphql/server/graph/schema/queries.graphql
to include sender
and sort_by_nonce
parameters for transactions
and receipts
queries:
type Query {
transactions(
tx_hash: String
chain_id: Int!
block_number: Int
block_hash: String
confirmed: Boolean
sender: String
sort_by_nonce: Boolean = false
page: Int!
): [Transaction]
receipts(
chain_id: Int!
tx_hash: String
contract_address: String
block_hash: String
block_number: Int
tx_index: Int
confirmed: Boolean
sender: String
sort_by_nonce: Boolean = false
page: Int!
): [Receipt]
}
Update Client Queries
/services/scribe/graphql/client/queries/queries.graphql
to include sender
and sort_by_nonce
parameters:
query GetTransactions($chain_id: Int!, $page: Int!, $sender: String, $sort_by_nonce: Boolean = false) {
response: transactions(chain_id: $chain_id, page: $page, sender: $sender, sort_by_nonce: $sort_by_nonce) {
...
}
}
query GetReceipts($chain_id: Int!, $page: Int!, $sender: String, $sort_by_nonce: Boolean = false) {
response: receipts(chain_id: $chain_id, page: $page, sender: $sender, sort_by_nonce: $sort_by_nonce) {
...
}
}
Update Resolver Functions
/services/scribe/graphql/server/graph/utils.go
to handle the new parameters in the resolver functions:
func (r Resolver) RetrieveTransactions(ctx context.Context, chainID uint32, sender *string, sortByNonce bool, page int) ([]*model.Transaction, error) {
// Implement logic to query transactions by sender and sort by nonce
}
func (r Resolver) RetrieveReceipts(ctx context.Context, chainID uint32, sender *string, sortByNonce bool, page int) ([]*model.Receipt, error) {
// Implement logic to query receipts by sender and sort by nonce
}
Update Database Query Functions
/services/scribe/db/datastore/sql/base/receipt.go
to include sender and sort by nonce logic:
func (s Store) RetrieveReceiptsWithFilter(ctx context.Context, receiptFilter db.ReceiptFilter, sender *string, sortByNonce bool, page int) ([]types.Receipt, error) {
// Implement logic to filter by sender and sort by nonce
}
func (s Store) RetrieveTransactionsWithFilter(ctx context.Context, txFilter db.TxFilter, sender *string, sortByNonce bool, page int) ([]types.Transaction, error) {
// Implement logic to filter by sender and sort by nonce
}
/services/scribe/graphql/server/graph/schema/queries.graphql /services/scribe/graphql/server/graph/schema/types.graphql /services/scribe/graphql/client/queries/queries.graphql /services/scribe/graphql/server/graph/utils.go /services/scribe/db/datastore/sql/base/receipt.go /services/scribe/graphql/client /services/scribe/graphql/server/graph/model/models_gen.go /services/scribe/api/resolver_test.go
It'd be nice if query receipts/txes could by queried by sender and sorted asc/descending by nonce.
Let's also make sure we add a comment noting that this will only contain tracked txes by sender