You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
nextcloud-server/apps/dav/lib/Migration/BuildSocialSearchIndex.php

57 lines
1.4 KiB

<?php
/**
* SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\DAV\Migration;
use OCP\BackgroundJob\IJobList;
use OCP\IAppConfig;
use OCP\IDBConnection;
use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
class BuildSocialSearchIndex implements IRepairStep {
public function __construct(
private readonly IDBConnection $db,
private readonly IJobList $jobList,
private readonly IAppConfig $config,
) {
}
public function getName(): string {
return 'Register building of social profile search index as background job';
}
/**
* @param IOutput $output
*/
public function run(IOutput $output) {
// only run once
if ($this->config->getValueBool('dav', 'builtSocialSearchIndex')) {
$output->info('Repair step already executed');
return;
}
$query = $this->db->getQueryBuilder();
$query->select($query->func()->max('cardid'))
->from('cards_properties')
->where($query->expr()->eq('name', $query->createNamedParameter('X-SOCIALPROFILE')));
$maxId = (int)$query->executeQuery()->fetchOne();
if ($maxId === 0) {
return;
}
$output->info('Add background job');
$this->jobList->add(BuildSocialSearchIndexBackgroundJob::class, [
'offset' => 0,
'stopAt' => $maxId
]);
// no need to redo the repair during next upgrade
$this->config->setValueBool('dav', 'builtSocialSearchIndex', true);
}
}