-
Notifications
You must be signed in to change notification settings - Fork 8
/
tx_query.go
57 lines (47 loc) · 1.69 KB
/
tx_query.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package txsvc
import (
"context"
"encoding/hex"
"errors"
"github.com/kwilteam/kwil-db/core/rpc/conversion"
txpb "github.com/kwilteam/kwil-db/core/rpc/protobuf/tx/v1"
"github.com/kwilteam/kwil-db/core/types/transactions"
"github.com/kwilteam/kwil-db/internal/abci"
"go.uber.org/zap"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
func (s *Service) TxQuery(ctx context.Context, req *txpb.TxQueryRequest) (*txpb.TxQueryResponse, error) {
logger := s.log.With(zap.String("rpc", "TxQuery"),
zap.String("TxHash", hex.EncodeToString(req.TxHash)))
cmtResult, err := s.chainClient.TxQuery(ctx, req.TxHash, false)
if err != nil {
if errors.Is(err, abci.ErrTxNotFound) {
logger.Debug("transaction not found")
return nil, status.Error(codes.NotFound, "transaction not found")
}
logger.Warn("failed to query tx", zap.Error(err))
return nil, status.Error(codes.Unknown, "failed to query transaction")
}
originalTx := &transactions.Transaction{}
if err := originalTx.UnmarshalBinary(cmtResult.Tx); err != nil {
logger.Error("failed to deserialize transaction", zap.Error(err))
return nil, status.Error(codes.Internal, "failed to deserialize transaction")
}
tx := conversion.ConvertToPBTx(originalTx)
txResult := &txpb.TransactionResult{
Code: cmtResult.TxResult.Code,
Log: cmtResult.TxResult.Log,
GasUsed: cmtResult.TxResult.GasUsed,
GasWanted: cmtResult.TxResult.GasWanted,
//Data: cmtResult.TxResult.Data,
//Events: cmtResult.TxResult.Events,
}
logger.Debug("tx query result", zap.Any("result", txResult))
return &txpb.TxQueryResponse{
Hash: cmtResult.Hash.Bytes(),
Height: cmtResult.Height,
Tx: tx,
TxResult: txResult,
}, nil
}