<?php

namespace App\Services;

use App\Models\Interaction;
use App\Models\Song as Playable;
use App\Models\User;

class InteractionService
{
    public function increasePlayCount(Playable $playable, User $user): Interaction
    {
        return tap(Interaction::query()->firstOrCreate([
            'song_id' => $playable->id,
            'user_id' => $user->id,
        ]), static function (Interaction $interaction): void {
            $interaction->last_played_at = now();

            ++$interaction->play_count;
            $interaction->save();
        });
    }
}