diff --git a/src/components/database/ElasticSearchDatabase.ts b/src/components/database/ElasticSearchDatabase.ts index b77b42327..7ac202ebf 100644 --- a/src/components/database/ElasticSearchDatabase.ts +++ b/src/components/database/ElasticSearchDatabase.ts @@ -472,10 +472,11 @@ export class ElasticsearchDdoDatabase extends AbstractDdoDatabase { } getDDOSchema(ddo: Record) { - const ddoInstance = DDOManager.getDDOClass(ddo) - const { nft } = ddoInstance.getDDOFields() as any let schemaName: string | undefined - if (nft?.state !== 0) { + const ddoInstance = DDOManager.getDDOClass(ddo) + const ddoData = ddoInstance.getDDOData() + + if ('indexedMetadata' in ddoData && ddoData?.indexedMetadata?.nft.state !== 0) { schemaName = 'op_ddo_short' } else if (ddo.version) { schemaName = `op_ddo_v${ddo.version}` @@ -492,8 +493,8 @@ export class ElasticsearchDdoDatabase extends AbstractDdoDatabase { async validateDDO(ddo: Record): Promise { const ddoInstance = DDOManager.getDDOClass(ddo) - const { nft } = ddoInstance.getDDOFields() as any - if ('indexedMetadata' in ddoInstance.getDDOData() && nft?.state !== 0) { + const ddoData = ddoInstance.getDDOData() + if ('indexedMetadata' in ddoData && ddoData.indexedMetadata?.nft?.state !== 0) { // Skipping validation for short DDOs as it currently doesn't work // TODO: DDO validation needs to be updated to consider the fields required by the schema // See github issue: https://github.com/oceanprotocol/ocean-node/issues/256 diff --git a/src/components/database/TypenseDatabase.ts b/src/components/database/TypenseDatabase.ts index b48519bbe..44319f713 100644 --- a/src/components/database/TypenseDatabase.ts +++ b/src/components/database/TypenseDatabase.ts @@ -371,7 +371,9 @@ export class TypesenseDdoDatabase extends AbstractDdoDatabase { getDDOSchema(ddo: Record): TypesenseSchema { // Find the schema based on the DDO version OR use the short DDO schema when state !== 0 let schemaName: string - if (ddo.indexedMetadata?.nft?.state !== 0) { + const ddoInstance = DDOManager.getDDOClass(ddo) + const ddoData = ddoInstance.getDDOData() + if ('indexedMetadata' in ddoData && ddoData?.indexedMetadata?.nft.state !== 0) { schemaName = 'op_ddo_short' } else if (ddo.version) { schemaName = `op_ddo_v${ddo.version}` @@ -388,8 +390,8 @@ export class TypesenseDdoDatabase extends AbstractDdoDatabase { async validateDDO(ddo: Record): Promise { const ddoInstance = DDOManager.getDDOClass(ddo) - const { nft } = ddoInstance.getDDOFields() as any - if ('indexedMetadata' in ddoInstance.getDDOData() && nft?.state !== 0) { + const ddoData = ddoInstance.getDDOData() + if ('indexedMetadata' in ddoData && ddoData.indexedMetadata?.nft?.state !== 0) { // Skipping validation for short DDOs as it currently doesn't work // TODO: DDO validation needs to be updated to consider the fields required by the schema // See github issue: https://github.com/oceanprotocol/ocean-node/issues/256