@@ -19,7 +19,7 @@ use crate::{
1919 settings:: cassandra_db,
2020} ;
2121
22- /// Insert TXI Query and Parameters
22+ /// Insert stake registration query
2323#[ derive( SerializeRow ) ]
2424pub ( crate ) struct StakeRegistrationInsertQuery {
2525 /// Stake address (29 bytes).
@@ -29,23 +29,22 @@ pub(crate) struct StakeRegistrationInsertQuery {
2929 /// Transaction Index.
3030 txn_index : DbTxnIndex ,
3131 /// Full Stake Public Key (32 byte Ed25519 Public key, not hashed).
32- stake_public_key : MaybeUnset < DbPublicKey > ,
32+ stake_public_key : DbPublicKey ,
3333 /// Is the stake address a script or not.
3434 script : bool ,
35- /// Is the Certificate Registered?
35+ /// Is the Cardano Certificate Registered
3636 register : MaybeUnset < bool > ,
37- /// Is the Certificate Deregistered?
37+ /// Is the Cardano Certificate Deregistered
3838 deregister : MaybeUnset < bool > ,
39+ /// Is the stake address contains CIP36 registration?
40+ cip36 : MaybeUnset < bool > ,
3941 /// Pool Delegation Address
4042 pool_delegation : MaybeUnset < Vec < u8 > > ,
4143}
4244
4345impl Debug for StakeRegistrationInsertQuery {
4446 fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> Result < ( ) , std:: fmt:: Error > {
45- let stake_public_key = match self . stake_public_key {
46- MaybeUnset :: Unset => "UNSET" ,
47- MaybeUnset :: Set ( ref v) => & hex:: encode ( v. as_ref ( ) ) ,
48- } ;
47+ let stake_public_key = hex:: encode ( self . stake_public_key . as_ref ( ) ) ;
4948 let register = match self . register {
5049 MaybeUnset :: Unset => "UNSET" ,
5150 MaybeUnset :: Set ( v) => & format ! ( "{v:?}" ) ,
@@ -54,6 +53,10 @@ impl Debug for StakeRegistrationInsertQuery {
5453 MaybeUnset :: Unset => "UNSET" ,
5554 MaybeUnset :: Set ( v) => & format ! ( "{v:?}" ) ,
5655 } ;
56+ let cip36 = match self . cip36 {
57+ MaybeUnset :: Unset => "UNSET" ,
58+ MaybeUnset :: Set ( v) => & format ! ( "{v:?}" ) ,
59+ } ;
5760 let pool_delegation = match self . pool_delegation {
5861 MaybeUnset :: Unset => "UNSET" ,
5962 MaybeUnset :: Set ( ref v) => & hex:: encode ( v) ,
@@ -67,29 +70,28 @@ impl Debug for StakeRegistrationInsertQuery {
6770 . field ( "script" , & self . script )
6871 . field ( "register" , & register)
6972 . field ( "deregister" , & deregister)
73+ . field ( "cip36" , & cip36)
7074 . field ( "pool_delegation" , & pool_delegation)
7175 . finish ( )
7276 }
7377}
7478
75- /// TXI by Txn hash Index
79+ /// Insert stake registration
7680const INSERT_STAKE_REGISTRATION_QUERY : & str = include_str ! ( "./cql/insert_stake_registration.cql" ) ;
7781
7882impl StakeRegistrationInsertQuery {
7983 /// Create a new Insert Query.
80- #[ allow( clippy:: too_many_arguments) ]
84+ #[ allow( clippy:: too_many_arguments, clippy :: fn_params_excessive_bools ) ]
8185 pub fn new (
8286 stake_address : StakeAddress , slot_no : Slot , txn_index : TxnIndex ,
83- stake_public_key : Option < VerifyingKey > , script : bool , register : bool , deregister : bool ,
84- pool_delegation : Option < Vec < u8 > > ,
87+ stake_public_key : VerifyingKey , script : bool , register : bool , deregister : bool ,
88+ cip36 : bool , pool_delegation : Option < Vec < u8 > > ,
8589 ) -> Self {
86- let stake_public_key =
87- stake_public_key. map_or ( MaybeUnset :: Unset , |a| MaybeUnset :: Set ( a. into ( ) ) ) ;
8890 StakeRegistrationInsertQuery {
8991 stake_address : stake_address. into ( ) ,
9092 slot_no : slot_no. into ( ) ,
9193 txn_index : txn_index. into ( ) ,
92- stake_public_key,
94+ stake_public_key : stake_public_key . into ( ) ,
9395 script,
9496 register : if register {
9597 MaybeUnset :: Set ( true )
@@ -101,6 +103,11 @@ impl StakeRegistrationInsertQuery {
101103 } else {
102104 MaybeUnset :: Unset
103105 } ,
106+ cip36 : if cip36 {
107+ MaybeUnset :: Set ( true )
108+ } else {
109+ MaybeUnset :: Unset
110+ } ,
104111 pool_delegation : if let Some ( pool_delegation) = pool_delegation {
105112 MaybeUnset :: Set ( pool_delegation)
106113 } else {
@@ -109,7 +116,7 @@ impl StakeRegistrationInsertQuery {
109116 }
110117 }
111118
112- /// Prepare Batch of Insert TXI Index Data Queries
119+ /// Prepare Batch of Insert stake registration.
113120 pub ( crate ) async fn prepare_batch (
114121 session : & Arc < Session > , cfg : & cassandra_db:: EnvVars ,
115122 ) -> anyhow:: Result < SizedBatch > {
@@ -184,16 +191,19 @@ impl CertInsertQuery {
184191 }
185192
186193 // This may not be witnessed, its normal but disappointing.
187- self . stake_reg_data . push ( StakeRegistrationInsertQuery :: new (
188- stake_address,
189- slot_no,
190- txn,
191- pubkey,
192- script,
193- register,
194- deregister,
195- delegation,
196- ) ) ;
194+ if let Some ( pubkey) = pubkey {
195+ self . stake_reg_data . push ( StakeRegistrationInsertQuery :: new (
196+ stake_address,
197+ slot_no,
198+ txn,
199+ pubkey,
200+ script,
201+ register,
202+ deregister,
203+ false ,
204+ delegation,
205+ ) ) ;
206+ }
197207 }
198208
199209 /// Index an Alonzo Era certificate into the database.
0 commit comments