<?php

namespace App\Policies;

use App\Facades\License;
use App\Models\Artist;
use App\Models\Song;
use App\Models\User;
use Illuminate\Auth\Access\Response;

class ArtistPolicy
{
    public function update(User $user, Artist $artist): Response
    {
        if ($user->is_admin) {
            return Response::allow();
        }

        if (License::isCommunity()) {
            return Response::deny('This action is unauthorized.');
        }

        return $artist->songs->every(static fn (Song $song) => $song->ownedBy($user))
            ? Response::allow()
            : Response::deny('Artist is not owned by the user.');
    }
}