53 lines
1.6 KiB
PHP
53 lines
1.6 KiB
PHP
<?php declare(strict_types = 1);
|
|
|
|
namespace MailPoet\Automation\Engine\Validators;
|
|
|
|
use MailPoet\Validator\Builder;
|
|
use MailPoet\Validator\Schema\ArraySchema;
|
|
use MailPoet\Validator\Schema\ObjectSchema;
|
|
|
|
class WorkflowSchema {
|
|
public static function getSchema(): ObjectSchema {
|
|
return Builder::object([
|
|
'id' => Builder::integer()->required(),
|
|
'name' => Builder::string()->minLength(1)->required(),
|
|
'status' => Builder::string()->required(),
|
|
'steps' => self::getStepsSchema()->required(),
|
|
]);
|
|
}
|
|
|
|
public static function getStepsSchema(): ObjectSchema {
|
|
return Builder::object()
|
|
->properties(['root' => self::getRootStepSchema()])
|
|
->additionalProperties(self::getStepSchema());
|
|
}
|
|
|
|
public static function getStepSchema(): ObjectSchema {
|
|
return Builder::object([
|
|
'id' => Builder::string()->required(),
|
|
'type' => Builder::string()->required(),
|
|
'key' => Builder::string()->required(),
|
|
'args' => Builder::object()->required(),
|
|
'next_steps' => self::getNextStepsSchema()->required(),
|
|
]);
|
|
}
|
|
|
|
public static function getRootStepSchema(): ObjectSchema {
|
|
return Builder::object([
|
|
'id' => Builder::string()->pattern('^root$'),
|
|
'type' => Builder::string()->pattern('^root$'),
|
|
'key' => Builder::string()->pattern('^core:root$'),
|
|
'args' => Builder::array()->maxItems(0),
|
|
'next_steps' => self::getNextStepsSchema()->required(),
|
|
]);
|
|
}
|
|
|
|
public static function getNextStepsSchema(): ArraySchema {
|
|
return Builder::array(
|
|
Builder::object([
|
|
'id' => Builder::string()->required(),
|
|
])
|
|
)->maxItems(1);
|
|
}
|
|
}
|