@@ -160,6 +160,15 @@ pub struct IndexStoreTables {
160160 #[ default_options_override_fn = "transactions_to_addr_table_default_config" ]
161161 transactions_to_addr : DBMap < ( IotaAddress , TxSequenceNumber ) , TransactionDigest > ,
162162
163+ /// Index from object id to transactions that used that object id as input.
164+ #[ deprecated]
165+ transactions_by_input_object_id : DBMap < ( ObjectID , TxSequenceNumber ) , TransactionDigest > ,
166+
167+ /// Index from object id to transactions that modified/created that object
168+ /// id.
169+ #[ deprecated]
170+ transactions_by_mutated_object_id : DBMap < ( ObjectID , TxSequenceNumber ) , TransactionDigest > ,
171+
163172 /// Index from package id, module and function identifier to transactions
164173 /// that used that moce function call as input.
165174 #[ default_options_override_fn = "transactions_by_move_function_table_default_config" ]
@@ -458,6 +467,7 @@ impl IndexStore {
458467 pub async fn index_tx (
459468 & self ,
460469 sender : IotaAddress ,
470+ active_inputs : impl Iterator < Item = ObjectID > ,
461471 mutated_objects : impl Iterator < Item = ( ObjectRef , Owner ) > + Clone ,
462472 move_functions : impl Iterator < Item = ( ObjectID , Identifier , Identifier ) > + Clone ,
463473 events : & TransactionEvents ,
@@ -484,6 +494,21 @@ impl IndexStore {
484494 std:: iter:: once ( ( ( sender, sequence) , * digest) ) ,
485495 ) ?;
486496
497+ #[ allow( deprecated) ]
498+ if !self . remove_deprecated_tables {
499+ batch. insert_batch (
500+ & self . tables . transactions_by_input_object_id ,
501+ active_inputs. map ( |id| ( ( id, sequence) , * digest) ) ,
502+ ) ?;
503+
504+ batch. insert_batch (
505+ & self . tables . transactions_by_mutated_object_id ,
506+ mutated_objects
507+ . clone ( )
508+ . map ( |( obj_ref, _) | ( ( obj_ref. 0 , sequence) , * digest) ) ,
509+ ) ?;
510+ }
511+
487512 batch. insert_batch (
488513 & self . tables . transactions_by_move_function ,
489514 move_functions. map ( |( obj_id, module, function) | {
@@ -657,6 +682,12 @@ impl IndexStore {
657682 } ) => Ok ( self . get_transactions_by_move_function (
658683 package, module, function, cursor, limit, reverse,
659684 ) ?) ,
685+ Some ( TransactionFilter :: InputObject ( object_id) ) => {
686+ Ok ( self . get_transactions_by_input_object ( object_id, cursor, limit, reverse) ?)
687+ }
688+ Some ( TransactionFilter :: ChangedObject ( object_id) ) => {
689+ Ok ( self . get_transactions_by_mutated_object ( object_id, cursor, limit, reverse) ?)
690+ }
660691 Some ( TransactionFilter :: FromAddress ( address) ) => {
661692 Ok ( self . get_transactions_from_addr ( address, cursor, limit, reverse) ?)
662693 }
@@ -734,6 +765,46 @@ impl IndexStore {
734765 } )
735766 }
736767
768+ pub fn get_transactions_by_input_object (
769+ & self ,
770+ input_object : ObjectID ,
771+ cursor : Option < TxSequenceNumber > ,
772+ limit : Option < usize > ,
773+ reverse : bool ,
774+ ) -> IotaResult < Vec < TransactionDigest > > {
775+ if self . remove_deprecated_tables {
776+ return Ok ( vec ! [ ] ) ;
777+ }
778+ #[ allow( deprecated) ]
779+ Self :: get_transactions_from_index (
780+ & self . tables . transactions_by_input_object_id ,
781+ input_object,
782+ cursor,
783+ limit,
784+ reverse,
785+ )
786+ }
787+
788+ pub fn get_transactions_by_mutated_object (
789+ & self ,
790+ mutated_object : ObjectID ,
791+ cursor : Option < TxSequenceNumber > ,
792+ limit : Option < usize > ,
793+ reverse : bool ,
794+ ) -> IotaResult < Vec < TransactionDigest > > {
795+ if self . remove_deprecated_tables {
796+ return Ok ( vec ! [ ] ) ;
797+ }
798+ #[ allow( deprecated) ]
799+ Self :: get_transactions_from_index (
800+ & self . tables . transactions_by_mutated_object_id ,
801+ mutated_object,
802+ cursor,
803+ limit,
804+ reverse,
805+ )
806+ }
807+
737808 pub fn get_transactions_from_addr (
738809 & self ,
739810 addr : IotaAddress ,
@@ -1573,6 +1644,7 @@ mod tests {
15731644 address,
15741645 vec ! [ ] . into_iter ( ) ,
15751646 vec ! [ ] . into_iter ( ) ,
1647+ vec ! [ ] . into_iter ( ) ,
15761648 & TransactionEvents { data : vec ! [ ] } ,
15771649 object_index_changes,
15781650 & TransactionDigest :: random ( ) ,
@@ -1616,6 +1688,7 @@ mod tests {
16161688 address,
16171689 vec ! [ ] . into_iter ( ) ,
16181690 vec ! [ ] . into_iter ( ) ,
1691+ vec ! [ ] . into_iter ( ) ,
16191692 & TransactionEvents { data : vec ! [ ] } ,
16201693 object_index_changes,
16211694 & TransactionDigest :: random ( ) ,
0 commit comments