diff --git a/README.md b/README.md index 42c370d..29799c7 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,12 @@ ``` > πŸ’‘ **Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚:** Команда ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ пСрСсоздаст структуру Π‘Π” ΠΈ запустит сидСры, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ **11 Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ** ΠΈ **40 тСстовых событий** со случайными Π΄Π°Ρ‚Π°ΠΌΠΈ для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ. +4. **ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ:** + - Π’ Π±Π°Π·Π΅ ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ сгСнСрирован "test@example.com" с ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ "password". + - Π‘ этими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ /login ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚ΠΎΠΊΠ΅Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сохранится Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ token Π² POSTMAN. + - Π—Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, находящиСся ΠΏΠΎΠ΄ Π·Π°Ρ‰ΠΈΡ‚ΠΎΠΉ Sanctum. + - Для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ»ΠΈ измСнСния Π΅Π³ΠΎ пароля/Ρ‚ΠΎΠΊΠ΅Π½Π° ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, описанными Π½ΠΈΠΆΠ΅. + ## πŸ’» ΠšΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ (CLI) Для удобства управлСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΈ Ρ‚ΠΎΠΊΠ΅Π½Π°ΠΌΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ кастомныС Artisan-ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: @@ -91,13 +97,14 @@ * **ОписаниС:** для ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Authorization: Bearer {{token}}, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ /login. #### ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ запроса (Query Parameters): - -| ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ | Π’ΠΈΠΏ | ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ | ОписаниС | ΠŸΡ€ΠΈΠΌΠ΅Ρ€ | +| ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ | Π’ΠΈΠΏ | ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ | ОписаниС | ΠŸΡ€ΠΈΠΌΠ΅Ρ€ / Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ | | :--- | :--- | :--- | :--- | :--- | | `categories` | `array` | НСт | Массив ID ΠΈΠ»ΠΈ слагов ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ | `categories[]=1&categories[]=2` | | `date_from` | `string` | НСт | Начало Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π΄Π°Ρ‚ (`YYYY-MM-DD`) | `2026-05-01` | | `date_to` | `string` | НСт | ΠšΠΎΠ½Π΅Ρ† Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° Π΄Π°Ρ‚ (`YYYY-MM-DD`) | `2026-05-31` | | `page` | `integer` | НСт | НомСр страницы ΠΏΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΠΈ | `2` | +| `per_page` | `integer` | НСт | ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов Π½Π° страницу | `15` *(По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: `10`)* | + #### ΠŸΡ€ΠΈΠΌΠ΅Ρ€ запроса: `GET /api/gigs?categories[]=1&categories[]=4&date_from=2026-02-01&date_to=2026-05-31` diff --git a/app/Http/Controllers/GigsController.php b/app/Http/Controllers/GigsController.php index 633e714..dc60702 100644 --- a/app/Http/Controllers/GigsController.php +++ b/app/Http/Controllers/GigsController.php @@ -11,6 +11,8 @@ use Illuminate\Http\Resources\Json\AnonymousResourceCollection; class GigsController extends Controller { + CONST PER_PAGE = 10; + public function index(GetGigsRequest $request): AnonymousResourceCollection { // Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ eager loading (with), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ N+1 запросов ΠΊ катСгориям @@ -32,11 +34,13 @@ class GigsController extends Controller $query->whereDate('event_date', '<=', $request->input('date_to')); } + $per_page = $request->filled('per_page') ? $request->input('per_page') : self::PER_PAGE; + // Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ события: сначала блиТайшиС $query->orderBy('event_date', 'asc'); // ΠŸΠ°Π³ΠΈΠ½Π°Ρ†ΠΈΡ ΠΏΠΎ 10 элСмСнтов Π½Π° страницу - $gigs = $query->paginate(10); + $gigs = $query->paginate($per_page); return GigResource::collection($gigs); }