SearchSrv: stop using IDs (#54296)

* SearchSrv: stop using IDs

* Remove IDs from test
This commit is contained in:
Ivan Ortega Alba 2022-08-26 15:41:47 +02:00 committed by GitHub
parent f4fa3e4ff4
commit c66c275342
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 23 deletions

View File

@ -4,7 +4,12 @@ import { contextSrv } from 'app/core/services/context_srv';
import impressionSrv from 'app/core/services/impression_srv';
import store from 'app/core/store';
import { SECTION_STORAGE_KEY } from 'app/features/search/constants';
import { DashboardSection, DashboardSearchItemType, DashboardSearchHit, SearchLayout } from 'app/features/search/types';
import {
DashboardSection,
DashboardSearchItemType,
DashboardSearchItem,
SearchLayout,
} from 'app/features/search/types';
import { hasFilters } from 'app/features/search/utils';
import { backendSrv } from './backend_srv';
@ -30,7 +35,7 @@ export class SearchSrv {
});
}
private queryForRecentDashboards(): Promise<DashboardSearchHit[]> {
private queryForRecentDashboards(): Promise<DashboardSearchItem[]> {
return new Promise((resolve) => {
impressionSrv.getDashboardOpened().then((uids) => {
const dashUIDs: string[] = take(uids, 30);
@ -42,7 +47,7 @@ export class SearchSrv {
return resolve(
dashUIDs
.map((orderId) => result.find((result) => result.uid === orderId))
.filter((hit) => hit && !hit.isStarred) as DashboardSearchHit[]
.filter((hit) => hit && !hit.isStarred) as DashboardSearchItem[]
);
});
});
@ -105,7 +110,7 @@ export class SearchSrv {
});
}
private handleSearchResult(sections: Sections, results: DashboardSearchHit[]): any {
private handleSearchResult(sections: Sections, results: DashboardSearchItem[]): any {
if (results.length === 0) {
return sections;
}
@ -113,9 +118,7 @@ export class SearchSrv {
// create folder index
for (const hit of results) {
if (hit.type === 'dash-folder') {
// FIXME: Use hit.uid instead
sections[hit.id!] = {
id: hit.id,
sections[hit.uid!] = {
uid: hit.uid,
title: hit.title,
expanded: false,
@ -133,11 +136,10 @@ export class SearchSrv {
continue;
}
let section = sections[hit.folderId || 0];
let section = sections[hit.folderUid || 0];
if (!section) {
if (hit.folderId) {
if (hit.folderUid) {
section = {
id: hit.folderId,
uid: hit.folderUid,
title: hit.folderTitle,
url: hit.folderUrl,
@ -148,7 +150,7 @@ export class SearchSrv {
};
} else {
section = {
id: 0,
uid: '',
title: 'General',
items: [],
icon: 'folder-open',
@ -157,7 +159,7 @@ export class SearchSrv {
};
}
// add section
sections[hit.folderId || 0] = section;
sections[hit.folderUid || 0] = section;
}
section.expanded = true;

View File

@ -158,24 +158,24 @@ describe('SearchSrv', () => {
{
title: 'folder1',
type: 'dash-folder',
id: 1,
uid: 'folder-1',
},
{
title: 'dash with no folder',
type: 'dash-db',
id: 2,
uid: '2',
},
{
title: 'dash in folder1 1',
type: 'dash-db',
id: 3,
folderId: 1,
uid: '3',
folderUid: 'folder-1',
},
{
title: 'dash in folder1 2',
type: 'dash-db',
id: 4,
folderId: 1,
uid: '4',
folderUid: 'folder-1',
},
])
)
@ -202,15 +202,13 @@ describe('SearchSrv', () => {
searchMock.mockImplementation(
jest.fn().mockResolvedValue([
{
id: 2,
folderUid: 'dash-with-no-folder-uid',
title: 'dash with no folder',
type: 'dash-db',
},
{
id: 3,
title: 'dash in folder1 1',
type: 'dash-db',
folderId: 1,
folderUid: 'uid',
folderTitle: 'folder1',
folderUrl: '/dashboards/f/uid/folder1',
@ -229,8 +227,7 @@ describe('SearchSrv', () => {
it('should group results by folder', () => {
expect(results).toHaveLength(2);
expect(results[0].id).toEqual(0);
expect(results[1].id).toEqual(1);
expect(results[0].uid).toEqual('dash-with-no-folder-uid');
expect(results[1].uid).toEqual('uid');
expect(results[1].title).toEqual('folder1');
expect(results[1].url).toEqual('/dashboards/f/uid/folder1');