*/ use HasFactory; protected function casts(): array { return [ 'category' => ChannelCategory::class, 'is_live' => 'boolean', 'viewer_count' => 'integer', 'suspended_at' => 'datetime', ]; } public function getRouteKeyName(): string { return 'slug'; } public function user(): BelongsTo { return $this->belongsTo(User::class); } public function streamKey(): HasOne { return $this->hasOne(StreamKey::class); } public function broadcasts(): HasMany { return $this->hasMany(Broadcast::class); } public function liveBroadcast(): BelongsTo { return $this->belongsTo(Broadcast::class, 'live_broadcast_id'); } public function vods(): HasMany { return $this->hasMany(Vod::class); } public function follows(): HasMany { return $this->hasMany(Follow::class); } public function chatMessages(): HasMany { return $this->hasMany(ChatMessage::class); } public function isSuspended(): bool { return $this->suspended_at !== null || $this->user?->suspended_at !== null; } }