Skip to content

Commit

Permalink
feat(sanity): use actions API when deleting documents (#6115)
Browse files Browse the repository at this point in the history
* feat(sanity): use actions API when deleting documents
* fix(sanity): add skipCrossDatasetReferenceValidation to delete action
  • Loading branch information
bjoerge authored and juice49 committed Apr 9, 2024
1 parent 1abaddb commit c16a5f4
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 0 deletions.
Expand Up @@ -32,6 +32,7 @@ import {patch} from './operations/patch'
import {publish} from './operations/publish'
import {restore} from './operations/restore'
import {unpublish} from './operations/unpublish'
import {del as serverDel} from './serverOperations/delete'
import {patch as serverPatch} from './serverOperations/patch'
import {publish as serverPublish} from './serverOperations/publish'
import {unpublish as serverUnpublish} from './serverOperations/unpublish'
Expand Down Expand Up @@ -62,6 +63,8 @@ const operationImpls = {
//as we add server operations one by one, we can add them here
const serverOperationImpls = {
...operationImpls,
del: serverDel,
delete: serverDel,
patch: serverPatch,
publish: serverPublish,
unpublish: serverUnpublish,
Expand Down
@@ -1,6 +1,7 @@
import {type IdPair} from '../../types'
import {emitOperation} from '../operationEvents'
import {publish} from '../operations/publish'
import {del as serverDel} from '../serverOperations/delete'
import {patch as serverPatch} from '../serverOperations/patch'
import {publish as serverPublish} from '../serverOperations/publish'
import {unpublish as serverUnpublish} from '../serverOperations/unpublish'
Expand Down Expand Up @@ -70,6 +71,8 @@ export function createOperationsAPI(args: OperationArgs): OperationsAPI {
if (args.serverActionsEnabled) {
return {
...operationsAPI,
delete: wrap('delete', serverDel, args),
del: wrap('delete', serverDel, args),
patch: wrap('patch', serverPatch, args),
publish: wrap('publish', serverPublish, args),
unpublish: wrap('unpublish', serverUnpublish, args),
Expand Down
@@ -0,0 +1,29 @@
import {type OperationImpl} from '../operations/types'

export const del: OperationImpl<[], 'NOTHING_TO_DELETE'> = {
disabled: ({snapshots}) => (snapshots.draft || snapshots.published ? false : 'NOTHING_TO_DELETE'),
execute: ({client: globalClient, schema, idPair, typeName}) => {
const vXClient = globalClient.withConfig({apiVersion: 'X'})

const {dataset} = globalClient.config()

return vXClient.observable.request({
url: `/data/actions/${dataset}`,
method: 'post',
tag: 'document.delete',
// this disables referential integrity for cross-dataset references. we
// have this set because we warn against deletes in the `ConfirmDeleteDialog`
// UI. This operation is run when "delete anyway" is clicked
query: {skipCrossDatasetReferenceValidation: 'true'},
body: {
actions: [
{
actionType: 'sanity.action.document.delete',
draftId: idPair.draftId,
publishedId: idPair.publishedId,
},
],
},
})
},
}

0 comments on commit c16a5f4

Please sign in to comment.