From d3b3065a76b0749e65212f8028041fe6db143601 Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino Date: Fri, 27 Jan 2023 23:31:26 +0100 Subject: [PATCH] catalog-backend: reuse EntityOrderQuery Signed-off-by: Vincenzo Scamporlino --- plugins/catalog-backend/src/catalog/types.ts | 10 ++-------- .../src/service/DefaultEntitiesCatalog.test.ts | 6 +++--- .../src/service/DefaultEntitiesCatalog.ts | 8 ++++---- .../src/service/request/parseEntitySortFieldParams.ts | 4 ++-- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/plugins/catalog-backend/src/catalog/types.ts b/plugins/catalog-backend/src/catalog/types.ts index dc85e44e7a..c5da9726c2 100644 --- a/plugins/catalog-backend/src/catalog/types.ts +++ b/plugins/catalog-backend/src/catalog/types.ts @@ -46,12 +46,6 @@ export type EntityOrder = { order: 'asc' | 'desc'; }; -// TODO(vinzscam): remove this type in favor of EntityOrder -export type EntitySortField = { - field: string; - order?: 'asc' | 'desc' | undefined; -}; - /** * Matches rows in the search table. * @public @@ -240,7 +234,7 @@ export interface PaginatedEntitiesInitialRequest { fields?: (entity: Entity) => Entity; limit?: number; filter?: EntityFilter; - sortFields?: EntitySortField[]; + sortFields?: EntityOrder[]; query?: string; } @@ -291,7 +285,7 @@ export type Cursor = { * An array of fields used for sorting the data. * For example, [ { field: 'metadata.name', order: 'asc' } ] */ - sortFields: EntitySortField[]; + sortFields: EntityOrder[]; /** * The values of the fields of a specific item used for paginating the data. */ diff --git a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts index 75d120e421..c2f1843845 100644 --- a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts +++ b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.test.ts @@ -767,7 +767,7 @@ describe('DefaultEntitiesCatalog', () => { const request1: PaginatedEntitiesInitialRequest = { filter, limit, - sortFields: [{ field: 'metadata.name' }], + sortFields: [{ field: 'metadata.name', order: 'asc' }], }; const response1 = await catalog.paginatedEntities(request1); expect(response1.entities).toEqual([entityFrom('A'), entityFrom('B')]); @@ -1056,7 +1056,7 @@ describe('DefaultEntitiesCatalog', () => { filter, limit: 100, - sortFields: [{ field: 'metadata.name' }], + sortFields: [{ field: 'metadata.name', order: 'asc' }], query: 'cAt ', }; const response = await catalog.paginatedEntities(request); @@ -1127,7 +1127,7 @@ describe('DefaultEntitiesCatalog', () => { // initial request const request1: PaginatedEntitiesInitialRequest = { limit, - sortFields: [{ field: 'metadata.name' }], + sortFields: [{ field: 'metadata.name', order: 'asc' }], }; const response1 = await catalog.paginatedEntities(request1); expect(response1.entities).toMatchObject([ diff --git a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts index 37245876aa..43e0de026d 100644 --- a/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts +++ b/plugins/catalog-backend/src/service/DefaultEntitiesCatalog.ts @@ -36,9 +36,9 @@ import { EntityFacetsResponse, EntityFilter, EntityPagination, - EntitySortField, PaginatedEntitiesRequest, PaginatedEntitiesResponse, + EntityOrder, } from '../catalog/types'; import { DbFinalEntitiesRow, @@ -56,7 +56,7 @@ import { isPaginatedEntitiesInitialRequest, } from './util'; -const defaultSortField: EntitySortField = { +const defaultSortField: EntityOrder = { field: 'metadata.uid', order: 'asc', }; @@ -351,7 +351,7 @@ export class DefaultEntitiesCatalog implements EntitiesCatalog { this.logger.warn(`Only one sort field is supported, ignoring the rest`); } - const sortField: EntitySortField = { + const sortField: EntityOrder = { ...defaultSortField, ...cursor.sortFields[0], }; @@ -683,7 +683,7 @@ function parseCursorFromRequest( return {}; } -function invertOrder(order: EntitySortField['order']) { +function invertOrder(order: EntityOrder['order']) { return order === 'asc' ? 'desc' : 'asc'; } diff --git a/plugins/catalog-backend/src/service/request/parseEntitySortFieldParams.ts b/plugins/catalog-backend/src/service/request/parseEntitySortFieldParams.ts index d16295aa30..5efa2de05e 100644 --- a/plugins/catalog-backend/src/service/request/parseEntitySortFieldParams.ts +++ b/plugins/catalog-backend/src/service/request/parseEntitySortFieldParams.ts @@ -15,12 +15,12 @@ */ import { InputError } from '@backstage/errors'; -import { EntitySortField } from '../../catalog/types'; +import { EntityOrder } from '../../catalog/types'; import { parseStringsParam } from './common'; export function parseEntitySortFieldParams( params: Record, -): EntitySortField[] | undefined { +): EntityOrder[] | undefined { const sortFieldStrings = parseStringsParam(params.sortField, 'sortField'); if (!sortFieldStrings) { return undefined;