82 lines
1.7 KiB
Go
82 lines
1.7 KiB
Go
package graphql
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/jackc/pgx/v5/pgxpool"
|
|
)
|
|
|
|
// Resolver handles GraphQL queries
|
|
type Resolver struct {
|
|
db *pgxpool.Pool
|
|
chainID int
|
|
}
|
|
|
|
// NewResolver creates a new GraphQL resolver
|
|
func NewResolver(db *pgxpool.Pool, chainID int) *Resolver {
|
|
return &Resolver{
|
|
db: db,
|
|
chainID: chainID,
|
|
}
|
|
}
|
|
|
|
// BlockResolver resolves Block queries
|
|
type BlockResolver struct {
|
|
db *pgxpool.Pool
|
|
chainID int
|
|
block *Block
|
|
}
|
|
|
|
// Block represents a block in GraphQL
|
|
type Block struct {
|
|
ChainID int32
|
|
Number int32
|
|
Hash string
|
|
ParentHash string
|
|
Timestamp string
|
|
Miner string
|
|
TransactionCount int32
|
|
GasUsed int64
|
|
GasLimit int64
|
|
}
|
|
|
|
// TransactionResolver resolves Transaction queries
|
|
type TransactionResolver struct {
|
|
db *pgxpool.Pool
|
|
chainID int
|
|
tx *Transaction
|
|
}
|
|
|
|
// Transaction represents a transaction in GraphQL
|
|
type Transaction struct {
|
|
ChainID int32
|
|
Hash string
|
|
BlockNumber int32
|
|
From string
|
|
To *string
|
|
Value string
|
|
GasPrice *int64
|
|
GasUsed *int64
|
|
Status *int32
|
|
}
|
|
|
|
// ResolveBlock resolves block query
|
|
func (r *Resolver) ResolveBlock(ctx context.Context, args struct {
|
|
ChainID int32
|
|
Number *int32
|
|
}) (*BlockResolver, error) {
|
|
// Implementation would fetch block from database
|
|
return nil, fmt.Errorf("not implemented")
|
|
}
|
|
|
|
// ResolveTransaction resolves transaction query
|
|
func (r *Resolver) ResolveTransaction(ctx context.Context, args struct {
|
|
ChainID int32
|
|
Hash string
|
|
}) (*TransactionResolver, error) {
|
|
// Implementation would fetch transaction from database
|
|
return nil, fmt.Errorf("not implemented")
|
|
}
|
|
|