mirror of
https://github.com/NNTmux/newznab-tmux.git
synced 2026-08-28 17:01:16 +00:00
40 lines
1003 B
PHP
40 lines
1003 B
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Data\Api;
|
|
|
|
use App\Models\RootCategory;
|
|
use Spatie\LaravelData\Data;
|
|
use Spatie\TypeScriptTransformer\Attributes\TypeScript;
|
|
|
|
/**
|
|
* API v2 representation of a {@see RootCategory} with its sub-categories.
|
|
*
|
|
* Replaces the legacy `App\Transformers\CategoryTransformer`.
|
|
*/
|
|
#[TypeScript]
|
|
final class CategoryData extends Data
|
|
{
|
|
/**
|
|
* @param array<int|string, string> $subcategories Map of sub-category ID → title.
|
|
*/
|
|
public function __construct(
|
|
public int $id,
|
|
public string $name,
|
|
public array $subcategories,
|
|
) {}
|
|
|
|
public static function fromCategory(RootCategory $category): self
|
|
{
|
|
/** @var array<int|string, string> $subcategories */
|
|
$subcategories = $category->categories()->pluck('title', 'id')->all();
|
|
|
|
return new self(
|
|
id: (int) $category->id,
|
|
name: (string) $category->title,
|
|
subcategories: $subcategories,
|
|
);
|
|
}
|
|
}
|