<?php

namespace App\Builders;

use App\Facades\License;
use App\Models\User;
use Illuminate\Database\Eloquent\Builder;

class GenreBuilder extends Builder
{
    public function accessibleBy(User $user): self
    {
        if (License::isCommunity()) {
            // With the Community license, all genres are accessible by all users.
            return $this;
        }

        return $this->whereHas('songs', static fn (SongBuilder $query) => $query->setScopedUser($user)->accessible()); //@phpstan-ignore-line
    }
}