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
diff --git a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java
index 99dc164..a40cab3 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/deleteproject/database/DatabaseDeleteHandler.java
@@ -27,8 +27,7 @@
 import com.google.gerrit.server.account.AccountState;
 import com.google.gerrit.server.account.AccountsUpdate;
 import com.google.gerrit.server.git.GitRepositoryManager;
-import com.google.gerrit.server.index.change.ChangeIndex;
-import com.google.gerrit.server.index.change.ChangeIndexCollection;
+import com.google.gerrit.server.index.change.ChangeIndexer;
 import com.google.gerrit.server.notedb.ChangeNotes;
 import com.google.gerrit.server.notedb.ChangeNotes.Factory.ChangeNotesResult;
 import com.google.gerrit.server.project.NoSuchChangeException;
@@ -44,7 +43,7 @@
   private static final FluentLogger log = FluentLogger.forEnclosingClass();
 
   private final StarredChangesWriter starredChangesWriter;
-  private final ChangeIndexCollection indexes;
+  private final ChangeIndexer indexer;
   private final Provider<InternalAccountQuery> accountQueryProvider;
   private final Provider<AccountsUpdate> accountsUpdateProvider;
   private final ChangeNotes.Factory schemaFactoryNoteDb;
@@ -53,13 +52,13 @@
   @Inject
   public DatabaseDeleteHandler(
       StarredChangesWriter starredChangesWriter,
-      ChangeIndexCollection indexes,
+      ChangeIndexer indexer,
       ChangeNotes.Factory schemaFactoryNoteDb,
       GitRepositoryManager repoManager,
       Provider<InternalAccountQuery> accountQueryProvider,
       @UserInitiated Provider<AccountsUpdate> accountsUpdateProvider) {
     this.starredChangesWriter = starredChangesWriter;
-    this.indexes = indexes;
+    this.indexer = indexer;
     this.accountQueryProvider = accountQueryProvider;
     this.accountsUpdateProvider = accountsUpdateProvider;
     this.schemaFactoryNoteDb = schemaFactoryNoteDb;
@@ -67,7 +66,7 @@
   }
 
   public void delete(Project project) throws IOException {
-    deleteChangesFromIndex(project);
+    indexer.deleteAllForProject(project.getNameKey());
     unstarChanges(getChangesListFromNoteDb(project));
     deleteProjectWatches(project);
   }
@@ -84,12 +83,6 @@
     }
   }
 
-  private void deleteChangesFromIndex(Project project) {
-    for (ChangeIndex i : indexes.getWriteIndexes()) {
-      i.deleteAllForProject(project.getNameKey());
-    }
-  }
-
   private void unstarChanges(List<Change.Id> changeIds) {
     for (Change.Id id : changeIds) {
       try {