From 4cca11d861f08e7b5f21eb5e35358fe134497766 Mon Sep 17 00:00:00 2001 From: AdriGeorge Date: Fri, 6 Jun 2025 11:04:46 +0300 Subject: [PATCH 1/2] chore: return schema --- src/components/database/ElasticSearchDatabase.ts | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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 From 78147460119552c727070f917cba6119dd53ea27 Mon Sep 17 00:00:00 2001 From: AdriGeorge Date: Fri, 6 Jun 2025 11:54:51 +0300 Subject: [PATCH 2/2] fix: typesense get schema --- src/components/database/TypenseDatabase.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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