// SPDX-License-Identifier: GPL-3.0-or-later namespace Icinga\Module\Icingadb\Model; use DateTime; use Icinga\Module\Icingadb\Common\Backend; use ipl\Orm\Behavior\BoolCast; use ipl\Orm\Behavior\Binary; use ipl\Orm\Behavior\MillisecondTimestamp; use ipl\Orm\Behaviors; use Icinga\Module\Icingadb\Common\Model; use ipl\Orm\Relations; /** * @property string $id * @property string $environment_id * @property ?string $endpoint_id * @property DateTime $heartbeat * @property bool $responsible * @property bool $icinga2_active_host_checks_enabled * @property bool $icinga2_active_service_checks_enabled * @property bool $icinga2_event_handlers_enabled * @property bool $icinga2_flap_detection_enabled * @property bool $icinga2_notifications_enabled * @property bool $icinga2_performance_data_enabled * @property DateTime $icinga2_start_time * @property string $icinga2_version * @property string $icingadb_version */ class Instance extends Model { public function getTableName() { return 'icingadb_instance'; } public function getKeyName() { return 'id'; } public function getColumns() { $columns = [ 'environment_id', 'endpoint_id', 'heartbeat', 'responsible', 'icinga2_active_host_checks_enabled', 'icinga2_active_service_checks_enabled', 'icinga2_event_handlers_enabled', 'icinga2_flap_detection_enabled', 'icinga2_notifications_enabled', 'icinga2_performance_data_enabled', 'icinga2_start_time', 'icinga2_version' ]; if (Backend::supportsDependencies()) { $columns[] = 'icingadb_version'; } return $columns; } public function getDefaultSort() { return ['responsible desc', 'heartbeat desc']; } public function createBehaviors(Behaviors $behaviors) { $behaviors->add(new MillisecondTimestamp([ 'heartbeat', 'icinga2_start_time' ])); $behaviors->add(new BoolCast([ 'responsible', 'icinga2_active_host_checks_enabled', 'icinga2_active_service_checks_enabled', 'icinga2_event_handlers_enabled', 'icinga2_flap_detection_enabled', 'icinga2_notifications_enabled', 'icinga2_performance_data_enabled' ])); $behaviors->add(new Binary([ 'id', 'environment_id', 'endpoint_id', ])); } public function createRelations(Relations $relations) { $relations->belongsTo('environment', Environment::class); $relations->belongsTo('endpoint', Endpoint::class)->setJoinType('LEFT'); } }