From 548546b6079dac296f734e0b948ba75a8f86308d Mon Sep 17 00:00:00 2001 From: Yibo Wang Date: Tue, 5 Mar 2024 13:07:53 -0800 Subject: [PATCH] Create a migration function for datasource to add migrationVersion field Signed-off-by: Yibo Wang --- CHANGELOG.md | 1 + .../server/saved_objects/data_source.test.ts | 29 +++++++++++++++++++ .../server/saved_objects/data_source.ts | 11 ++++++- 3 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 src/plugins/data_source/server/saved_objects/data_source.test.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index ae9703a5de2..b22b5556ac3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -111,6 +111,7 @@ Inspired from [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) - [osd/std] Add additional recovery from false-positives in handling of long numerals ([#5956](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5956)) - [BUG][Discover] Allow saved sort from search embeddable to load in Dashboard ([#5934](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5934)) - [BUG][Multiple Datasource] Fix missing customApiRegistryPromise param for test connection ([#5944](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/5944)) +- [BUG][Multiple Datasource] Add a migration function for datasource to add migrationVersion field ([#6022](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/6025) ### 🚞 Infrastructure diff --git a/src/plugins/data_source/server/saved_objects/data_source.test.ts b/src/plugins/data_source/server/saved_objects/data_source.test.ts new file mode 100644 index 00000000000..d465ee2a575 --- /dev/null +++ b/src/plugins/data_source/server/saved_objects/data_source.test.ts @@ -0,0 +1,29 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +import { migrateDataSource } from './data_source'; +import { savedObjectsServiceMock } from '../../../../core/server/mocks'; + +const contextMock = savedObjectsServiceMock.createMigrationContext(); + +describe('migrateDataSource Function', () => { + it('should return the input document unchanged', () => { + const mockDoc = { + id: 'test-id', + type: 'test-type', + attributes: { + name: 'Test Name', + description: 'Test Description', + }, + references: [], + }; + + // Call the migrateDataSource function with the mock document + const result = migrateDataSource(mockDoc, contextMock); + + // Expect the result to be deeply equal to the mock document + expect(result).toEqual(mockDoc); + }); +}); diff --git a/src/plugins/data_source/server/saved_objects/data_source.ts b/src/plugins/data_source/server/saved_objects/data_source.ts index 9404a4bcf37..3f31e7bd14b 100644 --- a/src/plugins/data_source/server/saved_objects/data_source.ts +++ b/src/plugins/data_source/server/saved_objects/data_source.ts @@ -3,7 +3,13 @@ * SPDX-License-Identifier: Apache-2.0 */ -import { SavedObjectsType } from 'opensearch-dashboards/server'; +import { flow } from 'lodash'; +import { SavedObjectMigrationFn, SavedObjectsType } from 'opensearch-dashboards/server'; + +// create a migration function which return the doc without any changes +export const migrateDataSource: SavedObjectMigrationFn = (doc) => ({ + ...doc, +}); export const dataSource: SavedObjectsType = { name: 'data-source', @@ -34,4 +40,7 @@ export const dataSource: SavedObjectsType = { }, }, }, + migrations: { + '2.4.0': flow(migrateDataSource), // 2.4.0 is the version that introduces the datasource + }, };