|Backup newModelQuery() * @method static BackupQueryBuilder|Backup newQuery() * @method static BackupQueryBuilder|Backup nonFailed() * @method static \Illuminate\Database\Eloquent\Builder|Backup onlyTrashed() * @method static BackupQueryBuilder|Backup query() * @method static BackupQueryBuilder|Backup whereBytes($value) * @method static BackupQueryBuilder|Backup whereChecksum($value) * @method static BackupQueryBuilder|Backup whereCompletedAt($value) * @method static BackupQueryBuilder|Backup whereCreatedAt($value) * @method static BackupQueryBuilder|Backup whereDeletedAt($value) * @method static BackupQueryBuilder|Backup whereDisk($value) * @method static BackupQueryBuilder|Backup whereId($value) * @method static BackupQueryBuilder|Backup whereIgnoredFiles($value) * @method static BackupQueryBuilder|Backup whereIsLocked($value) * @method static BackupQueryBuilder|Backup whereIsSuccessful($value) * @method static BackupQueryBuilder|Backup whereName($value) * @method static BackupQueryBuilder|Backup whereServerId($value) * @method static BackupQueryBuilder|Backup whereUpdatedAt($value) * @method static BackupQueryBuilder|Backup whereUploadId($value) * @method static BackupQueryBuilder|Backup whereUuid($value) * @method static \Illuminate\Database\Eloquent\Builder|Backup withTrashed(bool $withTrashed = true) * @method static \Illuminate\Database\Eloquent\Builder|Backup withoutTrashed() */ class Backup extends Model implements Validatable { use HasFactory; use HasValidation; use SoftDeletes; public const RESOURCE_NAME = 'backup'; public const ADAPTER_DAEMON = 'wings'; public const ADAPTER_AWS_S3 = 's3'; protected $attributes = [ 'is_successful' => false, 'is_locked' => false, 'checksum' => null, 'bytes' => 0, 'upload_id' => null, ]; protected $guarded = ['id', 'created_at', 'updated_at', 'deleted_at']; /** @var array */ public static array $validationRules = [ 'server_id' => ['bail', 'required', 'numeric', 'exists:servers,id'], 'uuid' => ['required', 'uuid'], 'is_successful' => ['boolean'], 'is_locked' => ['boolean'], 'name' => ['required', 'string'], 'ignored_files' => ['array'], 'disk' => ['required', 'string'], 'checksum' => ['nullable', 'string'], 'bytes' => ['numeric'], 'upload_id' => ['nullable', 'string'], ]; protected function casts(): array { return [ 'id' => 'int', 'is_successful' => 'bool', 'is_locked' => 'bool', 'ignored_files' => 'array', 'bytes' => 'int', 'completed_at' => 'immutable_datetime', 'created_at' => 'immutable_datetime', 'updated_at' => 'immutable_datetime', 'deleted_at' => 'immutable_datetime', ]; } protected function status(): Attribute { return Attribute::make( get: fn () => !$this->completed_at ? BackupStatus::InProgress : ($this->is_successful ? BackupStatus::Successful : BackupStatus::Failed), ); } public function server(): BelongsTo { return $this->belongsTo(Server::class); } /** * @param Builder $query * @return BackupQueryBuilder */ public function newEloquentBuilder($query): BackupQueryBuilder { return new BackupQueryBuilder($query); } }