From 6a6960f1d915bf1217da67d56db64bb90a5cfc93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Barto=C5=A1?= Date: Sun, 19 Jan 2025 02:17:09 +0100 Subject: [PATCH] SchedulerExtension: schema refactoring --- src/DI/SchedulerExtension.php | 69 ++++++++++++----------------------- 1 file changed, 23 insertions(+), 46 deletions(-) diff --git a/src/DI/SchedulerExtension.php b/src/DI/SchedulerExtension.php index 00092c8..8cf5c25 100644 --- a/src/DI/SchedulerExtension.php +++ b/src/DI/SchedulerExtension.php @@ -8,6 +8,8 @@ use Nette\DI\ContainerBuilder; use Nette\DI\Definitions\ServiceDefinition; use Nette\DI\Definitions\Statement; +use Nette\Schema\Elements\AnyOf; +use Nette\Schema\Elements\Type; use Nette\Schema\Expect; use Nette\Schema\Schema; use OriNette\DI\Definitions\DefinitionsLoader; @@ -41,6 +43,21 @@ final class SchedulerExtension extends CompilerExtension { + private function createCallbackSchema(): AnyOf + { + return Expect::anyOf( + Expect::string(), + /* @infection-ignore-all */ + Expect::array()->min(2)->max(2), + Expect::type(Statement::class), + ); + } + + private function createJobEventsSchema(): Type + { + return Expect::listOf($this->createCallbackSchema()); + } + public function getConfigSchema(): Schema { return Expect::structure([ @@ -57,46 +74,11 @@ public function getConfigSchema(): Schema 'runJobCommand' => Expect::string()->default('scheduler:run-job'), ]), 'events' => Expect::structure([ - 'beforeRun' => Expect::listOf( - Expect::anyOf( - Expect::string(), - /* @infection-ignore-all */ - Expect::array()->min(2)->max(2), - Expect::type(Statement::class), - ), - ), - 'afterRun' => Expect::listOf( - Expect::anyOf( - Expect::string(), - /* @infection-ignore-all */ - Expect::array()->min(2)->max(2), - Expect::type(Statement::class), - ), - ), - 'lockedJob' => Expect::listOf( - Expect::anyOf( - Expect::string(), - /* @infection-ignore-all */ - Expect::array()->min(2)->max(2), - Expect::type(Statement::class), - ), - ), - 'beforeJob' => Expect::listOf( - Expect::anyOf( - Expect::string(), - /* @infection-ignore-all */ - Expect::array()->min(2)->max(2), - Expect::type(Statement::class), - ), - ), - 'afterJob' => Expect::listOf( - Expect::anyOf( - Expect::string(), - /* @infection-ignore-all */ - Expect::array()->min(2)->max(2), - Expect::type(Statement::class), - ), - ), + 'beforeRun' => $this->createJobEventsSchema(), + 'afterRun' => $this->createJobEventsSchema(), + 'lockedJob' => $this->createJobEventsSchema(), + 'beforeJob' => $this->createJobEventsSchema(), + 'afterJob' => $this->createJobEventsSchema(), ]), 'jobs' => Expect::arrayOf( Expect::structure([ @@ -114,12 +96,7 @@ static function (string $value): bool { }, 'Valid cron expression', ), - 'callback' => Expect::anyOf( - Expect::string(), - /* @infection-ignore-all */ - Expect::array()->min(2)->max(2), - Expect::type(Statement::class), - )->default(null), + 'callback' => $this->createCallbackSchema()->default(null), 'job' => DefinitionsLoader::schema()->default(null), 'repeatAfterSeconds' => Expect::int(0) ->min(0)