<?php

namespace LaraBB\Category\Tasks;

use Illuminate\Database\Eloquent\Collection;
use LaraBB\Category\Models\Category;

/**
 * Class GetCategoryTask
 * @package LaraBB\Category\Tasks
 */
class FindTask
{
    /**
     * GetCategoryTask constructor.
     * @param Category $category
     */
    public function __construct(private readonly Category $category)
    {
    }

    /**
     * @param array $with
     * @return Collection|array
     */
    public function all(array $with = []): Collection|array
    {
        return $this->category->query()->with($with)->get();
    }

    /**
     * @param string $uuid
     * @param array $with
     * @return Category
     */
    public function byUuid(string $uuid, array $with = []): Category
    {
        return $this->category->query()->with($with)->where('uuid', $uuid)->get()->first();
    }

    /**
     * @param string $slug
     * @param array $with
     * @return Category
     */
    public function bySlug(string $slug, array $with = []): Category
    {
        return $this->category->query()->with($with)->where('slug', $slug)->get()->first();
    }
}
