From dfeb60b5ee8c116564d8fcd796b73b36e724a9fa Mon Sep 17 00:00:00 2001 From: Peter Pisljar Date: Tue, 7 Jul 2020 09:21:00 +0200 Subject: [PATCH] moving indexPattern.delete() to indexPatterns.delete(indexPattern) (#70430) --- ...lugins-data-public.indexpattern.destroy.md | 15 ----------- ...plugin-plugins-data-public.indexpattern.md | 1 - .../index_patterns/index_pattern.ts | 26 +++---------------- .../index_patterns/index_patterns.test.ts | 10 +++++++ .../index_patterns/index_patterns.ts | 9 +++++++ src/plugins/data/public/public.api.md | 2 -- .../edit_index_pattern/edit_index_pattern.tsx | 20 +++++++++----- .../plugins/index_patterns/server/plugin.ts | 3 +-- 8 files changed, 36 insertions(+), 50 deletions(-) delete mode 100644 docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.destroy.md diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.destroy.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.destroy.md deleted file mode 100644 index 3a8e1b9dae5a..000000000000 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.destroy.md +++ /dev/null @@ -1,15 +0,0 @@ - - -[Home](./index.md) > [kibana-plugin-plugins-data-public](./kibana-plugin-plugins-data-public.md) > [IndexPattern](./kibana-plugin-plugins-data-public.indexpattern.md) > [destroy](./kibana-plugin-plugins-data-public.indexpattern.destroy.md) - -## IndexPattern.destroy() method - -Signature: - -```typescript -destroy(): Promise<{}> | undefined; -``` -Returns: - -`Promise<{}> | undefined` - diff --git a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md index bc999a3bb48e..a37f11535892 100644 --- a/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md +++ b/docs/development/plugins/data/public/kibana-plugin-plugins-data-public.indexpattern.md @@ -39,7 +39,6 @@ export declare class IndexPattern implements IIndexPattern | [\_fetchFields()](./kibana-plugin-plugins-data-public.indexpattern._fetchfields.md) | | | | [addScriptedField(name, script, fieldType, lang)](./kibana-plugin-plugins-data-public.indexpattern.addscriptedfield.md) | | | | [create(allowOverride)](./kibana-plugin-plugins-data-public.indexpattern.create.md) | | | -| [destroy()](./kibana-plugin-plugins-data-public.indexpattern.destroy.md) | | | | [getAggregationRestrictions()](./kibana-plugin-plugins-data-public.indexpattern.getaggregationrestrictions.md) | | | | [getComputedFields()](./kibana-plugin-plugins-data-public.indexpattern.getcomputedfields.md) | | | | [getFieldByName(name)](./kibana-plugin-plugins-data-public.indexpattern.getfieldbyname.md) | | | diff --git a/src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts b/src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts index dab11ad0ce29..2acb9d5f767a 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts +++ b/src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts @@ -224,7 +224,7 @@ export class IndexPattern implements IIndexPattern { this.sourceFilters = spec.sourceFilters; // ignoring this because the same thing happens elsewhere but via _.assign - // @ts-ignore + // @ts-expect-error this.fields = spec.fields || []; this.typeMeta = spec.typeMeta; this.fieldFormatMap = _.mapValues(fieldFormatMap, (mapping) => { @@ -473,21 +473,8 @@ export class IndexPattern implements IIndexPattern { async create(allowOverride: boolean = false) { const _create = async (duplicateId?: string) => { if (duplicateId) { - const duplicatePattern = new IndexPattern(duplicateId, { - getConfig: this.getConfig, - savedObjectsClient: this.savedObjectsClient, - apiClient: this.apiClient, - patternCache: this.patternCache, - fieldFormats: this.fieldFormats, - onNotification: this.onNotification, - onError: this.onError, - uiSettingsValues: { - shortDotsEnable: this.shortDotsEnable, - metaFields: this.metaFields, - }, - }); - - await duplicatePattern.destroy(); + this.patternCache.clear(duplicateId); + await this.savedObjectsClient.delete(savedObjectType, duplicateId); } const body = this.prepBody(); @@ -634,11 +621,4 @@ export class IndexPattern implements IIndexPattern { toString() { return '' + this.toJSON(); } - - destroy() { - if (this.id) { - this.patternCache.clear(this.id); - return this.savedObjectsClient.delete(savedObjectType, this.id); - } - } } diff --git a/src/plugins/data/common/index_patterns/index_patterns/index_patterns.test.ts b/src/plugins/data/common/index_patterns/index_patterns/index_patterns.test.ts index 2eb9744fc16b..a1842d31479c 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/index_patterns.test.ts +++ b/src/plugins/data/common/index_patterns/index_patterns/index_patterns.test.ts @@ -53,6 +53,7 @@ describe('IndexPatterns', () => { Array> > ); + savedObjectsClient.delete = jest.fn(() => Promise.resolve({}) as Promise); indexPatterns = new IndexPatternsService({ uiSettings: ({ @@ -98,4 +99,13 @@ describe('IndexPatterns', () => { await indexPatterns.getFields(['id', 'title'], true); expect(savedObjectsClient.find).toHaveBeenCalledTimes(3); }); + + test('deletes the index pattern', async () => { + const id = '1'; + const indexPattern = await indexPatterns.get(id); + + expect(indexPattern).toBeDefined(); + await indexPatterns.delete(id); + expect(indexPattern).not.toBe(await indexPatterns.get(id)); + }); }); diff --git a/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts b/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts index ef03ca8fe2d1..a07ffaf92aea 100644 --- a/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts +++ b/src/plugins/data/common/index_patterns/index_patterns/index_patterns.ts @@ -228,6 +228,15 @@ export class IndexPatternsService { return indexPattern.init(); } + + /** + * Deletes an index pattern from .kibana index + * @param indexPatternId: Id of kibana Index Pattern to delete + */ + async delete(indexPatternId: string) { + indexPatternCache.clear(indexPatternId); + return this.savedObjectsClient.delete('index-pattern', indexPatternId); + } } export type IndexPatternsContract = PublicMethodsOf; diff --git a/src/plugins/data/public/public.api.md b/src/plugins/data/public/public.api.md index 670b40e7d947..2b18584bcd78 100644 --- a/src/plugins/data/public/public.api.md +++ b/src/plugins/data/public/public.api.md @@ -988,8 +988,6 @@ export class IndexPattern implements IIndexPattern { // (undocumented) create(allowOverride?: boolean): Promise; // (undocumented) - destroy(): Promise<{}> | undefined; - // (undocumented) _fetchFields(): Promise; // (undocumented) fieldFormatMap: any; diff --git a/src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx b/src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx index eab8b2c231c9..090c72d319f8 100644 --- a/src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx +++ b/src/plugins/index_pattern_management/public/components/edit_index_pattern/edit_index_pattern.tsx @@ -83,9 +83,14 @@ const confirmModalOptionsDelete = { export const EditIndexPattern = withRouter( ({ indexPattern, history, location }: EditIndexPatternProps) => { - const { uiSettings, indexPatternManagementStart, overlays, savedObjects, chrome } = useKibana< - IndexPatternManagmentContext - >().services; + const { + uiSettings, + indexPatternManagementStart, + overlays, + savedObjects, + chrome, + data, + } = useKibana().services; const [fields, setFields] = useState(indexPattern.getNonScriptedFields()); const [conflictedFields, setConflictedFields] = useState( indexPattern.fields.filter((field) => field.type === 'conflict') @@ -138,10 +143,11 @@ export const EditIndexPattern = withRouter( uiSettings.set('defaultIndex', otherPatterns[0].id); } } - - Promise.resolve(indexPattern.destroy()).then(function () { - history.push(''); - }); + if (indexPattern.id) { + Promise.resolve(data.indexPatterns.delete(indexPattern.id)).then(function () { + history.push(''); + }); + } } overlays.openConfirm('', confirmModalOptionsDelete).then((isConfirmed) => { diff --git a/test/plugin_functional/plugins/index_patterns/server/plugin.ts b/test/plugin_functional/plugins/index_patterns/server/plugin.ts index ffc70136ccff..d6a4fdd67b0a 100644 --- a/test/plugin_functional/plugins/index_patterns/server/plugin.ts +++ b/test/plugin_functional/plugins/index_patterns/server/plugin.ts @@ -96,8 +96,7 @@ export class IndexPatternsTestPlugin const [, { data }] = await core.getStartServices(); const id = (req.params as Record).id; const service = await data.indexPatterns.indexPatternsServiceFactory(req); - const ip = await service.get(id); - await ip.destroy(); + await service.delete(id); return res.ok(); } );