@@ -65,16 +65,47 @@ export class MetadataEventProcessor extends BaseEventProcessor {
6565 signer
6666 )
6767 const metaData = await templateContract . getMetaData ( )
68- const metaDataState = Number ( metaData [ 2 ] )
68+ const metadataState = Number ( metaData [ 2 ] )
6969
70- if ( [ MetadataStates . DEPRECATED , MetadataStates . REVOKED ] . includes ( metaDataState ) ) {
70+ if ( [ MetadataStates . DEPRECATED , MetadataStates . REVOKED ] . includes ( metadataState ) ) {
7171 INDEXER_LOGGER . logMessage (
72- `Delete DDO because Metadata state is ${ metaDataState } ` ,
72+ `Delete DDO because Metadata state is ${ metadataState } ` ,
7373 true
7474 )
75- await ddoDatabase . delete ( did )
76- await ddoState . delete ( did )
77- return
75+ const { ddo : ddoDatabase } = await getDatabase ( )
76+ const ddo = await ddoDatabase . retrieve ( did )
77+ if ( ! ddo ) {
78+ INDEXER_LOGGER . logMessage (
79+ `Detected MetadataState changed for ${ did } , but it does not exists.`
80+ )
81+ return
82+ }
83+
84+ const ddoInstance = DDOManager . getDDOClass ( ddo )
85+
86+ INDEXER_LOGGER . logMessage (
87+ `DDO became non-visible from ${
88+ ddoInstance . getAssetFields ( ) . indexedMetadata . nft . state
89+ } to ${ metadataState } `
90+ )
91+
92+ const shortDdoInstance = DDOManager . getDDOClass ( {
93+ id : ddo . id ,
94+ version : 'deprecated' ,
95+ chainId,
96+ nftAddress : ddo . nftAddress ,
97+ indexedMetadata : {
98+ nft : {
99+ state : metadataState
100+ }
101+ }
102+ } )
103+
104+ const savedDDO = await this . createOrUpdateDDO (
105+ shortDdoInstance ,
106+ EVENTS . METADATA_STATE
107+ )
108+ return savedDDO
78109 }
79110
80111 const ddo = await this . decryptDDO (
0 commit comments