Query-bibliotheek
Query-bibliotheekZoek en vervang meerdere strings in alle posts

Zoek en vervang meerdere strings in alle posts

Werk meerdere posts bij met één enkele operatie door inhoud te zoeken en te vervangen.

Voor de posts aangegeven door de variabele $postIds vervangt deze query alle strings in $search door die in $replace, in de titel, samenvatting en inhoud van de post.

Deze query vereist dat het endpoint Geneste Mutaties heeft ingeschakeld.

query TransformAndExportData(
  $postIds: [ID!]!
  $search: [String!]!
  $replace: [String!]!
) {
  posts: posts(
    filter: { ids: $postIds }
    pagination: { limit: -1 }
    sort: { by: ID, order: ASC }
  ) {
    id
    rawTitle
    rawContent
    rawExcerpt
      @strReplaceMultiple(
        search: $search
        replaceWith: $replace
        affectAdditionalFieldsUnderPos: [1, 2]
      )
      @deferredExport(
        as: "postAdaptedSources"
        type: DICTIONARY
        affectAdditionalFieldsUnderPos: [1, 2]
      )
  }
}
 
query AdaptDataForMutationInput
  @depends(on: "TransformAndExportData")
{
  postInputs: _echo(value: $postAdaptedSources)
    @underEachJSONObjectProperty(
      passValueOnwardsAs: "adaptedSource",
      affectDirectivesUnderPos: [1, 2, 3, 4]
    )
      @applyField(
        name: "_objectProperty",
        arguments: {
          object: $adaptedSource,
          by: {
            key: "rawTitle"
          }
        },
        passOnwardsAs: "adaptedTitle"
      )
      @applyField(
        name: "_objectProperty",
        arguments: {
          object: $adaptedSource,
          by: {
            key: "rawExcerpt"
          }
        },
        passOnwardsAs: "adaptedExcerpt"
      )
      @applyField(
        name: "_objectProperty",
        arguments: {
          object: $adaptedSource,
          by: {
            key: "rawContent"
          }
        },
        passOnwardsAs: "adaptedContent"
      )
      @applyField(
        name: "_echo",
        arguments: {
          value: {
            title: $adaptedTitle,
            excerpt: $adaptedExcerpt,
            contentAs: {
              html: $adaptedContent
            }
          }
        },
        setResultInResponse: true
      )
    @export(as: "postInputs")
}
 
mutation SearchAndReplaceStringsInAllPosts(
  $postIds: [ID!]!
)
  @depends(on: "AdaptDataForMutationInput")
{
  adaptedPosts: posts(
    filter: { ids: $postIds }
    pagination: { limit: -1 }
    sort: { by: ID, order: ASC }
  ) {
    id
    postInput: _objectProperty(
      object: $postInputs,
      by: { key: $__id }
    ) @remove
    update(input: $__postInput) {
      status
      errors {
        __typename
        ...on ErrorPayload {
          message
        }
      }
      post {
        title
        content
        excerpt
      }
    }
  }
}