Skip to content

Commit e65337d

Browse files
committed
fix(ReadParams): return protocol parameter values
Signed-off-by: Ales Verbic <[email protected]>
1 parent 8ac9e73 commit e65337d

File tree

1 file changed

+51
-8
lines changed

1 file changed

+51
-8
lines changed

internal/utxorpc/query.go

Lines changed: 51 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,16 @@ import (
2222

2323
connect "connectrpc.com/connect"
2424
"github.com/blinklabs-io/gouroboros/ledger"
25+
"github.com/blinklabs-io/gouroboros/ledger/allegra"
26+
"github.com/blinklabs-io/gouroboros/ledger/alonzo"
27+
"github.com/blinklabs-io/gouroboros/ledger/babbage"
28+
"github.com/blinklabs-io/gouroboros/ledger/conway"
29+
"github.com/blinklabs-io/gouroboros/ledger/mary"
30+
"github.com/blinklabs-io/gouroboros/ledger/shelley"
2531

2632
// ocommon "github.com/blinklabs-io/gouroboros/protocol/common"
33+
34+
"github.com/utxorpc/go-codegen/utxorpc/v1alpha/cardano"
2735
query "github.com/utxorpc/go-codegen/utxorpc/v1alpha/query"
2836
"github.com/utxorpc/go-codegen/utxorpc/v1alpha/query/queryconnect"
2937

@@ -63,23 +71,58 @@ func (s *queryServiceServer) ReadParams(
6371
return nil, err
6472
}
6573

74+
log.Printf("Get protoParams type: %T", protoParams)
75+
76+
// // Check if the pointer satisfies the ProtocolParametersUtxorpc interface
77+
// if pp, ok := protoParams.(common.ProtocolParametersUtxorpc); ok {
78+
// utxoParams := pp.Utxorpc()
79+
// log.Printf("Got Utxorpc protocol parameters: %+v", utxoParams)
80+
// } else {
81+
// log.Printf("ERROR: Utxorpc method not supported")
82+
// return nil, fmt.Errorf("Utxorpc method not supported for current protocol parameters")
83+
// }
84+
85+
// Determine the correct type and call Utxorpc() based on the era
86+
var utxoParams *cardano.PParams
87+
switch p := protoParams.(type) {
88+
case conway.ConwayProtocolParameters:
89+
utxoParams = (&p).Utxorpc()
90+
case babbage.BabbageProtocolParameters:
91+
utxoParams = (&p).Utxorpc()
92+
case alonzo.AlonzoProtocolParameters:
93+
utxoParams = (&p).Utxorpc()
94+
case mary.MaryProtocolParameters:
95+
utxoParams = (&p).Utxorpc()
96+
case allegra.AllegraProtocolParameters:
97+
utxoParams = (&p).Utxorpc()
98+
case shelley.ShelleyProtocolParameters:
99+
utxoParams = (&p).Utxorpc()
100+
default:
101+
log.Printf("ERROR: Utxorpc method not supported for current protocol parameters type: %T", protoParams)
102+
return nil, fmt.Errorf("Utxorpc method not supported for current protocol parameters")
103+
}
104+
105+
log.Printf("Converted protocol parameters to Cardano PParams: %+v", utxoParams)
106+
66107
// Get chain point (slot and hash)
67108
point, err := oConn.LocalStateQuery().Client.GetChainPoint()
68109
if err != nil {
69110
return nil, err
70111
}
71-
var acp query.AnyChainParams
72-
// var acpc query.AnyChainParams_Cardano
73-
acpc := &query.AnyChainParams_Cardano{}
74-
log.Printf("protocol parameters: %v", protoParams)
75-
// acpc.Cardano = protoParams.Utxorpc()
112+
113+
// Set up response parameters
114+
acpc := &query.AnyChainParams_Cardano{
115+
Cardano: utxoParams,
116+
}
117+
76118
resp.LedgerTip = &query.ChainPoint{
77119
Slot: point.Slot,
78120
Hash: point.Hash,
79121
}
80-
// acp.Params = &acpc
81-
acp.Params = acpc
82-
resp.Values = &acp
122+
resp.Values = &query.AnyChainParams{
123+
Params: acpc,
124+
}
125+
83126
return connect.NewResponse(resp), nil
84127
}
85128

0 commit comments

Comments
 (0)