*/ use HasFactory; protected $table = 'platform_channels'; protected $fillable = [ 'platform_instance_id', 'name', 'display_name', 'channel_id', 'description', 'language_id', 'is_active' ]; protected $casts = [ 'is_active' => 'boolean' ]; public function platformInstance(): BelongsTo { return $this->belongsTo(PlatformInstance::class); } public function platformAccounts(): BelongsToMany { return $this->belongsToMany(PlatformAccount::class, 'platform_account_channels') ->withPivot(['is_active', 'priority']) ->withTimestamps(); } public function activePlatformAccounts(): BelongsToMany { return $this->platformAccounts()->where('is_active', true); } public function getFullNameAttribute(): string { // For Lemmy, use /c/ prefix return $this->platformInstance->url . '/c/' . $this->name; } public function feeds(): BelongsToMany { return $this->belongsToMany(Feed::class, 'feed_platform_channels') ->using(FeedPlatformChannel::class) ->withPivot(['is_active', 'priority', 'filters']) ->withTimestamps(); } public function activeFeeds(): BelongsToMany { return $this->feeds() ->wherePivot('is_active', true) ->orderByPivot('priority', 'desc'); } public function language(): BelongsTo { return $this->belongsTo(Language::class); } }