Skip to main content

Federated Catalogue Models Examples

These examples show how to register, discover and resolve filter components so catalogue services can select filtering logic at runtime.

FederatedCatalogueFilterFactory

import { FederatedCatalogueFilterFactory } from '@twin.org/federated-catalogue-models';

FederatedCatalogueFilterFactory.clear();

FederatedCatalogueFilterFactory.register('PublisherFilter', () => ({
className() {
return 'PublisherFilter';
},
async query() {
return { datasets: [] };
},
async createIndex() {
return {};
}
}));

FederatedCatalogueFilterFactory.clear();

FederatedCatalogueFilterFactory.register('PublisherFilter', () => ({
className() {
return 'PublisherFilter';
},
async query() {
return { datasets: [] };
},
async createIndex() {
return {};
}
}));

const filterNames = FederatedCatalogueFilterFactory.names();

console.log(filterNames.includes('PublisherFilter')); // true
import { FederatedCatalogueFilterFactory } from '@twin.org/federated-catalogue-models';

const filter = FederatedCatalogueFilterFactory.get('PublisherFilter');
const queryResult = await filter.query([
{
'@type': 'PublisherFilter'
}
]);

console.log(filter.className()); // PublisherFilter
console.log(queryResult.datasets.length); // 0