Merge pull request #49408 from nextcloud/refactor/files-cleanup

refactor(files): Use functions for all in `occ files:cleanup`
This commit is contained in:
Julius Knorr 2024-11-21 08:41:11 +01:00 committed by GitHub
commit 37936bc404
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -34,7 +34,6 @@ class DeleteOrphanedFiles extends Command {
}
public function execute(InputInterface $input, OutputInterface $output): int {
$deletedEntries = 0;
$fileIdsByStorage = [];
$deletedStorages = array_diff($this->getReferencedStorages(), $this->getExistingStorages());
@ -44,16 +43,7 @@ class DeleteOrphanedFiles extends Command {
$fileIdsByStorage = $this->getFileIdsForStorages($deletedStorages);
}
$deleteQuery = $this->connection->getQueryBuilder();
$deleteQuery->delete('filecache')
->where($deleteQuery->expr()->in('storage', $deleteQuery->createParameter('storage_ids')));
$deletedStorageChunks = array_chunk($deletedStorages, self::CHUNK_SIZE);
foreach ($deletedStorageChunks as $deletedStorageChunk) {
$deleteQuery->setParameter('storage_ids', $deletedStorageChunk, IQueryBuilder::PARAM_INT_ARRAY);
$deletedEntries += $deleteQuery->executeStatement();
}
$deletedEntries = $this->cleanupOrphanedFileCache($deletedStorages);
$output->writeln("$deletedEntries orphaned file cache entries deleted");
if ($deleteExtended) {
@ -61,9 +51,9 @@ class DeleteOrphanedFiles extends Command {
$output->writeln("$deletedFileCacheExtended orphaned file cache extended entries deleted");
}
$deletedMounts = $this->cleanupOrphanedMounts();
$output->writeln("$deletedMounts orphaned mount entries deleted");
return self::SUCCESS;
}
@ -106,6 +96,22 @@ class DeleteOrphanedFiles extends Command {
return $result;
}
private function cleanupOrphanedFileCache(array $deletedStorages): int {
$deletedEntries = 0;
$deleteQuery = $this->connection->getQueryBuilder();
$deleteQuery->delete('filecache')
->where($deleteQuery->expr()->in('storage', $deleteQuery->createParameter('storage_ids')));
$deletedStorageChunks = array_chunk($deletedStorages, self::CHUNK_SIZE);
foreach ($deletedStorageChunks as $deletedStorageChunk) {
$deleteQuery->setParameter('storage_ids', $deletedStorageChunk, IQueryBuilder::PARAM_INT_ARRAY);
$deletedEntries += $deleteQuery->executeStatement();
}
return $deletedEntries;
}
/**
* @param array<int, int[]> $fileIdsByStorage
* @return int