catalog: flip the allowed backend filters logic

Signed-off-by: Vincenzo Scamporlino <vincenzos@spotify.com>
This commit is contained in:
Vincenzo Scamporlino
2023-10-20 08:08:03 +02:00
parent 2dd206a2fd
commit 3ea09ae6eb
+27 -4
View File
@@ -16,7 +16,16 @@
import { Entity } from '@backstage/catalog-model';
import { EntityFilter } from '../types';
import { EntityKindFilter, EntityTypeFilter } from '../filters';
import {
EntityLifecycleFilter,
EntityNamespaceFilter,
EntityOrphanFilter,
EntityOwnerFilter,
EntityTagFilter,
EntityTextFilter,
EntityUserListFilter,
UserListFilter,
} from '../filters';
export function reduceCatalogFilters(
filters: EntityFilter[],
@@ -29,6 +38,13 @@ export function reduceCatalogFilters(
}, {} as Record<string, string | symbol | (string | symbol)[]>);
}
/**
* This function computes and returns an object containing the filters to be sent
* to the backend. Any filter coming from `EntityKindFilter` and `EntityTypeFilter`, together
* with custom filter set by the adopters is allowed. This function is used by `EntityListProvider`
* and it won't be needed anymore in the future once pagination is implemented, as all the filters
* will be applied backend-side.
*/
export function reduceBackendCatalogFilters(filters: EntityFilter[]) {
const backendCatalogFilters: Record<
string,
@@ -37,11 +53,18 @@ export function reduceBackendCatalogFilters(filters: EntityFilter[]) {
filters.forEach(filter => {
if (
filter instanceof EntityKindFilter ||
filter instanceof EntityTypeFilter
filter instanceof EntityTagFilter ||
filter instanceof EntityOwnerFilter ||
filter instanceof EntityLifecycleFilter ||
filter instanceof EntityNamespaceFilter ||
filter instanceof EntityUserListFilter ||
filter instanceof EntityOrphanFilter ||
filter instanceof EntityTextFilter ||
filter instanceof UserListFilter
) {
Object.assign(backendCatalogFilters, filter.getCatalogFilters());
return;
}
Object.assign(backendCatalogFilters, filter.getCatalogFilters?.() || {});
});
return backendCatalogFilters;