Libreria di queries
Libreria di queriesRicerca e sostituzione regex di più stringhe in tutti i post

Ricerca e sostituzione regex di più stringhe in tutti i post

Aggiorna più post con una singola operazione, cercando/sostituendo contenuti tramite un elenco di espressioni regolari.

Dati i post indicati dalla variabile $postIds, questa query sostituirà tutte le occorrenze corrispondenti a una qualsiasi delle espressioni regolari in $searchRegex con la stringa corrispondente di $replaceWith, nel titolo, nell'estratto e nel contenuto del post.

Questa query richiede che l'endpoint abbia le Mutation Annidate abilitate.

query TransformAndExportData(
  $postIds: [ID!]!
  $searchRegex: [String!]!
  $replaceWith: [String!]!
) {
  posts: posts(
    filter: { ids: $postIds }
    pagination: { limit: -1 }
    sort: { by: ID, order: ASC }
  ) {
    id
    rawTitle
    rawContent
    rawExcerpt
      @strRegexReplaceMultiple(
        searchRegex: $searchRegex
        replaceWith: $replaceWith
        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 RegexSearchAndReplaceStringsInAllPosts(
  $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
      }
    }
  }
}