'integer', 'storage_id' => 'integer', 'database_id' => 'integer', 'keep_backups' => 'integer', ]; public static function boot(): void { parent::boot(); static::deleting(function (Backup $backup) { $backup->files()->each(function (BackupFile $file) { $file->delete(); }); }); } public static array $statusColors = [ BackupStatus::RUNNING => 'success', BackupStatus::FAILED => 'danger', BackupStatus::DELETING => 'warning', ]; public function isCustomInterval(): bool { $intervals = array_keys(config('core.cronjob_intervals')); $intervals = array_filter($intervals, fn ($interval) => $interval !== 'custom'); return ! in_array($this->interval, $intervals); } public function server(): BelongsTo { return $this->belongsTo(Server::class); } public function storage(): BelongsTo { return $this->belongsTo(StorageProvider::class, 'storage_id'); } public function database(): BelongsTo { return $this->belongsTo(Database::class)->withTrashed(); } public function files(): HasMany { return $this->hasMany(BackupFile::class, 'backup_id'); } public function lastFile(): HasOne { return $this->hasOne(BackupFile::class, 'backup_id')->latest(); } }