Skeleton is ready

This commit is contained in:
2026-01-05 16:33:20 +04:00
commit eeaf43ab5d
89 changed files with 2704 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
<?php
declare(strict_types=1);
namespace App\Feature\Example\Http\Controller;
use App\Feature\Example\Dto\SearchUsers;
use App\Feature\Example\Http\Request\Index;
use App\Feature\Example\Http\Resource\Users;
use App\Feature\Example\Service\UsersRepository;
class User
{
public function __construct(
private UsersRepository $users,
) {}
public function index(Index $request): Users
{
$dto = SearchUsers::fromArray($request->validated());
return Users::make($this->users->search($dto));
}
}

View File

@@ -0,0 +1,22 @@
<?php
declare(strict_types=1);
namespace App\Feature\Example\Http\Request;
use Illuminate\Foundation\Http\FormRequest;
/**
* @property int|null $page
* @property int|null $per_page
*/
class Index extends FormRequest
{
public function rules(): array
{
return [
'page' => ['sometimes', 'integer', 'min:1'],
'per_page' => ['sometimes', 'integer', 'min:1', 'max:200'],
];
}
}

View File

@@ -0,0 +1,24 @@
<?php
declare(strict_types=1);
namespace App\Feature\Example\Http\Resource;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\JsonResource;
/**
* @property \App\Models\User\User $resource
*/
class User extends JsonResource
{
public function toArray(Request $request): array
{
return [
'id' => $this->resource->getKey(),
'login' => $this->resource->login,
'created_at' => $this->resource->created_at,
'updated_at' => $this->resource->updated_at,
];
}
}

View File

@@ -0,0 +1,21 @@
<?php
declare(strict_types=1);
namespace App\Feature\Example\Http\Resource;
use Illuminate\Http\Request;
use Illuminate\Http\Resources\Json\ResourceCollection;
/**
* @property \Illuminate\Pagination\LengthAwarePaginator<\App\Models\User\User> $collection
*/
class Users extends ResourceCollection
{
public function toArray(Request $request): array
{
return [
'data' => User::collection($this->collection)
];
}
}