expose sets list endpoint

This commit is contained in:
Yisroel Baum 2026-08-03 20:24:36 +03:00
parent 61ab8c09dc
commit 3d96a8d316
Signed by: yisroelbaum
GPG key ID: 0FA60884F75520A9
3 changed files with 49 additions and 0 deletions

View file

@ -0,0 +1,26 @@
<?php
namespace App\Http\Controllers;
use App\Set\Set;
use App\Set\UseCases\ListSets\ListSets;
use Illuminate\Http\JsonResponse;
class SetController extends Controller
{
public function __construct(
private ListSets $listSets,
) {}
public function index(): JsonResponse
{
$sets = array_map(function (Set $set): array {
return [
'id' => $set->getId(),
'name' => $set->getName(),
];
}, $this->listSets->execute());
return new JsonResponse(['sets' => $sets]);
}
}

View file

@ -0,0 +1,21 @@
<?php
namespace App\Set\UseCases\ListSets;
use App\Set\Set;
use App\Set\SetRepository;
class ListSets
{
public function __construct(
private SetRepository $setRepository,
) {}
/**
* @return list<Set>
*/
public function execute(): array
{
return $this->setRepository->all();
}
}

View file

@ -1,6 +1,7 @@
<?php
use App\Http\Controllers\AuthController;
use App\Http\Controllers\SetController;
use App\Http\Middleware\AuthMiddleware;
use Illuminate\Support\Facades\Route;
@ -10,5 +11,6 @@ Route::post('/confirm-email', [AuthController::class, 'confirmEmail']);
Route::middleware(AuthMiddleware::class)->group(function (): void {
Route::get('/me', [AuthController::class, 'me']);
Route::get('/sets', [SetController::class, 'index']);
Route::post('/logout', [AuthController::class, 'logout']);
});