[saved objects] Adds bulkDelete API (#139680)

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Christiane (Tina) Heiligers 2022-09-20 07:51:25 -07:00 committed by GitHub
parent d29521e897
commit 92ca42f007
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
50 changed files with 2200 additions and 2 deletions

View file

@ -52,4 +52,8 @@ export type {
SavedObjectsCreatePointInTimeFinderOptions,
SavedObjectsFindOptions,
SavedObjectsPointInTimeFinderClient,
SavedObjectsBulkDeleteObject,
SavedObjectsBulkDeleteOptions,
SavedObjectsBulkDeleteStatus,
SavedObjectsBulkDeleteResponse,
} from './src/apis';

View file

@ -0,0 +1,50 @@
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
import type { SavedObjectError } from '@kbn/core-saved-objects-common';
import type { MutatingOperationRefreshSetting, SavedObjectsBaseOptions } from './base';
/**
*
* @public
*/
export interface SavedObjectsBulkDeleteObject {
type: string;
id: string;
}
/**
* @public
*/
export interface SavedObjectsBulkDeleteOptions extends SavedObjectsBaseOptions {
/** The Elasticsearch Refresh setting for this operation */
refresh?: MutatingOperationRefreshSetting;
/**
* Force deletion of all objects that exists in multiple namespaces, applied to all objects.
*/
force?: boolean;
}
/**
* @public
*/
export interface SavedObjectsBulkDeleteStatus {
id: string;
type: string;
/** The status of deleting the object: true for deleted, false for error */
success: boolean;
/** Reason the object could not be deleted (success is false) */
error?: SavedObjectError;
}
/**
* @public
*/
export interface SavedObjectsBulkDeleteResponse {
statuses: SavedObjectsBulkDeleteStatus[];
}

View file

@ -72,3 +72,9 @@ export type {
SavedObjectsUpdateObjectsSpacesOptions,
SavedObjectsUpdateObjectsSpacesResponseObject,
} from './update_objects_spaces';
export type {
SavedObjectsBulkDeleteObject,
SavedObjectsBulkDeleteOptions,
SavedObjectsBulkDeleteStatus,
SavedObjectsBulkDeleteResponse,
} from './bulk_delete';

View file

@ -41,6 +41,9 @@ import type {
SavedObjectsRemoveReferencesToResponse,
SavedObjectsCollectMultiNamespaceReferencesOptions,
SavedObjectsBulkResponse,
SavedObjectsBulkDeleteObject,
SavedObjectsBulkDeleteOptions,
SavedObjectsBulkDeleteResponse,
} from './apis';
/**
@ -151,6 +154,16 @@ export interface SavedObjectsClientContract {
*/
delete(type: string, id: string, options?: SavedObjectsDeleteOptions): Promise<{}>;
/**
* Deletes multiple SavedObjects batched together as a single request
*
* @param objects
* @param options
*/
bulkDelete(
objects: SavedObjectsBulkDeleteObject[],
options?: SavedObjectsBulkDeleteOptions
): Promise<SavedObjectsBulkDeleteResponse>;
/**
* Find all SavedObjects matching the search query
*

View file

@ -44,6 +44,9 @@ import type {
SavedObjectsDeleteByNamespaceOptions,
SavedObjectsIncrementCounterField,
SavedObjectsIncrementCounterOptions,
SavedObjectsBulkDeleteOptions,
SavedObjectsBulkDeleteObject,
SavedObjectsBulkDeleteResponse,
} from './apis';
/**
@ -105,6 +108,17 @@ export interface ISavedObjectsRepository {
*/
delete(type: string, id: string, options?: SavedObjectsDeleteOptions): Promise<{}>;
/**
* Deletes multiple documents at once
* @param {array} objects - an array of objects containing id and type
* @param {object} [options={}]
* @returns {promise} - { statuses: [{ id, type, success, error: { message } }] }
*/
bulkDelete(
objects: SavedObjectsBulkDeleteObject[],
options?: SavedObjectsBulkDeleteOptions
): Promise<SavedObjectsBulkDeleteResponse>;
/**
* Deletes all objects from the provided namespace.
*