Use ChangeIndexer.deleteAllForProject on project deletion

When a project is deleted, all its changes must be removed from the
index. The plugin previously iterated over write indexes and called
ChangeIndex.deleteAllForProject() directly. This bypassed the higher-
level API and duplicated index selection logic.

Route the deletion through ChangeIndexer.deleteAllForProject(), which:
- Centralizes index handling across backends and shards.
- Emits the onAllChangesDeletedForProject notification for listeners.
- Simplifies the code by removing the local iteration helper.

This aligns the plugin with the API introduced in I4c8a53629 and avoids
the pitfalls of calling low-level ChangeIndex operations directly.

Note: this partially re-applies reverted I7a171837bca, without the
provided notification via stream events, which was not correct.

Bug: Issue 440670678
Change-Id: I7a171837bca5103094caa9c302afb6409f075195
1 file changed
tree: ac26020672a60c0090c44e1efb09f1e2bef1063f
  1. src/
  2. web/
  3. .bazelignore
  4. .gitignore
  5. BUILD
  6. LICENSE
  7. README.md
README.md

Delete project plugin for Gerrit Code Review

A plugin which allows projects to be deleted from Gerrit via an SSH command, REST API or the Project settings screen.

Build Status

JavaScript Plugin Development

For running unit tests execute:

bazel test //plugins/delete-project/web:web_test_runner

For checking or fixing eslint formatter problems run:

bazel test //plugins/delete-project/web:lint_test
bazel run //plugins/delete-project/web:lint_bin -- --fix "$(pwd)/plugins/delete-project/web"

For testing the plugin with Gerrit FE Dev Helper build the JavaScript bundle and copy it to the plugins/ folder:

bazel build //plugins/delete-project/web:gr-delete-repo
cp -f bazel-bin/plugins/delete-project/web/gr-delete-repo.js plugins/

and let the Dev Helper redirect from .+/plugins/delete-project/static/gr-delete-repo.js to http://localhost:8081/plugins_/gr-delete-repo.js.