'datetime', 'ended_at' => 'datetime', 'storage_paid_until' => 'datetime', 'storage_grace_ends_at' => 'datetime', 'storage_last_billed_at' => 'datetime', 'metadata' => 'array', ]; } protected static function booted(): void { static::creating(function (Recording $recording) { if (empty($recording->uuid)) { $recording->uuid = (string) Str::uuid(); } }); } public function getRouteKeyName(): string { return 'uuid'; } public function session(): BelongsTo { return $this->belongsTo(Session::class, 'session_id'); } public function isReady(): bool { return $this->status === 'ready'; } public function hasPlayableFile(): bool { return $this->isReady() && filled($this->storage_path) && (int) ($this->file_size ?? 0) > 0; } }