build: initialize RetroHub with Laravel, Inertia, Vue, and Horizon

This commit is contained in:
2026-08-10 13:45:18 +02:00
commit 717db65139
218 changed files with 28356 additions and 0 deletions
+58
View File
@@ -0,0 +1,58 @@
<?php
namespace App\Features\Games\Data;
use App\Features\Consoles\Data\ConsoleData;
use App\Features\Games\Models\Game;
use Spatie\LaravelData\Attributes\MapInputName;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\Mappers\SnakeCaseMapper;
#[MapInputName(SnakeCaseMapper::class)]
class GameData extends Data
{
public function __construct(
public int $id,
public int $consoleId,
public string $title,
public string $slug,
public ?int $igdbId,
public ?int $tgdbId,
public ?string $description,
public ?int $releaseYear,
public ?string $developer,
public ?string $publisher,
public ?string $genre,
public ?float $rating,
public ?string $coverPath,
public ?string $thumbnailPath,
public ?ConsoleData $console,
public ?array $romFiles,
) {}
public static function fromModel(Game $game): self
{
return new self(
id: $game->id,
consoleId: $game->console_id,
title: $game->title,
slug: $game->slug,
igdbId: $game->igdb_id,
tgdbId: $game->tgdb_id,
description: $game->description,
releaseYear: $game->release_year,
developer: $game->developer,
publisher: $game->publisher,
genre: $game->genre,
rating: $game->rating ? (float) $game->rating : null,
coverPath: $game->cover_path,
thumbnailPath: $game->thumbnail_path,
console: $game->relationLoaded('console') && $game->console
? ConsoleData::fromModel($game->console)
: null,
romFiles: $game->relationLoaded('romFiles')
? $game->romFiles->map(fn ($rom) => RomFileData::fromModel($rom))->toArray()
: null,
);
}
}