2024-05-08 14:38:51 -04:00
< ? php
declare ( strict_types = 1 );
/**
* SPDX - FileCopyrightText : 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX - License - Identifier : AGPL - 3.0 - or - later
*/
namespace OCA\Settings\SetupChecks ;
use OCP\IDBConnection ;
use OCP\IL10N ;
use OCP\SetupCheck\ISetupCheck ;
use OCP\SetupCheck\SetupResult ;
class SchedulingTableSize implements ISetupCheck {
2024-06-19 09:04:53 -04:00
public const MAX_SCHEDULING_ENTRIES = 50000 ;
2024-05-08 14:38:51 -04:00
public function __construct (
private IL10N $l10n ,
private IDBConnection $connection ,
) {
}
public function getName () : string {
return $this -> l10n -> t ( 'Scheduling objects table size' );
}
public function getCategory () : string {
return 'database' ;
}
public function run () : SetupResult {
$qb = $this -> connection -> getQueryBuilder ();
$qb -> select ( $qb -> func () -> count ( 'id' ))
-> from ( 'schedulingobjects' );
$query = $qb -> executeQuery ();
$count = $query -> fetchOne ();
$query -> closeCursor ();
2024-06-19 09:04:53 -04:00
if ( $count > self :: MAX_SCHEDULING_ENTRIES ) {
2024-05-08 14:38:51 -04:00
return SetupResult :: warning (
2024-06-19 09:04:53 -04:00
$this -> l10n -> t ( 'You have more than %s rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive.' , [
self :: MAX_SCHEDULING_ENTRIES ,
])
2024-05-08 14:38:51 -04:00
);
}
return SetupResult :: success (
$this -> l10n -> t ( 'Scheduling objects table size is within acceptable range.' )
);
}
}