From 891a2a26d0f0a410c8c725fd65f9c71e2f9ac9b9 Mon Sep 17 00:00:00 2001 From: Marko Ognjenovic Date: Thu, 24 Jul 2025 12:43:38 +0200 Subject: [PATCH] Stories bulk deletion SDK --- src/endpoints/Stories/Client.ts | 13 +++++++++++++ src/types/StoriesBulkSelector.ts | 5 +++++ 2 files changed, 18 insertions(+) create mode 100644 src/types/StoriesBulkSelector.ts diff --git a/src/endpoints/Stories/Client.ts b/src/endpoints/Stories/Client.ts index 74369c8a..4d804d34 100644 --- a/src/endpoints/Stories/Client.ts +++ b/src/endpoints/Stories/Client.ts @@ -1,8 +1,11 @@ +import type { ProgressPromise } from '@prezly/progress-promise'; + import type { DeferredJobsApiClient } from '../../api'; import { ApiError, HttpCodes } from '../../http'; import { routing } from '../../routing'; import type { ExtendedStory, Query, Story } from '../../types'; import { SortOrder } from '../../types'; +import type { StoriesBulkSelector } from '../../types/StoriesBulkSelector'; import type { AutosaveRequest, @@ -454,6 +457,15 @@ export function createClient(api: DeferredJobsApiClient) { await api.delete(url); } + async function bulkDelete( + selector: StoriesBulkSelector, + ): ProgressPromise<{ records_deleted_number: number }> { + const { query } = selector; + return api.delete(routing.storiesUrl, { + payload: { query }, + }); + } + async function preview(id: StoryId, options?: PreviewOptions): Promise { const url = `${routing.storiesUrl}/${id}/preview`; @@ -486,6 +498,7 @@ export function createClient(api: DeferredJobsApiClient) { pin, unpin, delete: doDelete, + bulkDelete, preview, }; } diff --git a/src/types/StoriesBulkSelector.ts b/src/types/StoriesBulkSelector.ts new file mode 100644 index 00000000..3448c498 --- /dev/null +++ b/src/types/StoriesBulkSelector.ts @@ -0,0 +1,5 @@ +import type { Query } from './common'; + +export interface StoriesBulkSelector { + query: Query; +}