Updated README

This commit is contained in:
amikhaylov
2026-05-27 12:43:15 +03:00
parent 3688645458
commit 0cbf5f3dc9
2 changed files with 14 additions and 3 deletions
+9 -2
View File
@@ -39,6 +39,12 @@
``` ```
> 💡 **Что произойдет:** Команда полностью пересоздаст структуру БД и запустит сидеры, которые сгенерируют **11 реальных категорий** и **40 тестовых событий** со случайными датами для удобной проверки фильтрации. > 💡 **Что произойдет:** Команда полностью пересоздаст структуру БД и запустит сидеры, которые сгенерируют **11 реальных категорий** и **40 тестовых событий** со случайными датами для удобной проверки фильтрации.
4. **Пользователи:**
- В базе уже есть сгенерирован "test@example.com" с паролем "password".
- С этими данными можно вызвать метод /login и получить токен, который сохранится в переменную token в POSTMAN.
- Затем можно использовать другие методы, находящиеся под защитой Sanctum.
- Для генерации нового пользователя или изменения его пароля/токена можно воспользоваться консольными командами, описанными ниже.
## 💻 Консольные команды (CLI) ## 💻 Консольные команды (CLI)
Для удобства управления пользователями и токенами добавлены кастомные Artisan-команды: Для удобства управления пользователями и токенами добавлены кастомные Artisan-команды:
@@ -91,13 +97,14 @@
* **Описание:** для метода необходим заголовок Authorization: Bearer {{token}}, который можно получить методом /login. * **Описание:** для метода необходим заголовок Authorization: Bearer {{token}}, который можно получить методом /login.
#### Параметры запроса (Query Parameters): #### Параметры запроса (Query Parameters):
| Параметр | Тип | Обязательный | Описание | Пример / Значение |
| Параметр | Тип | Обязательный | Описание | Пример |
| :--- | :--- | :--- | :--- | :--- | | :--- | :--- | :--- | :--- | :--- |
| `categories` | `array` | Нет | Массив ID или слагов категорий | `categories[]=1&categories[]=2` | | `categories` | `array` | Нет | Массив ID или слагов категорий | `categories[]=1&categories[]=2` |
| `date_from` | `string` | Нет | Начало диапазона дат (`YYYY-MM-DD`) | `2026-05-01` | | `date_from` | `string` | Нет | Начало диапазона дат (`YYYY-MM-DD`) | `2026-05-01` |
| `date_to` | `string` | Нет | Конец диапазона дат (`YYYY-MM-DD`) | `2026-05-31` | | `date_to` | `string` | Нет | Конец диапазона дат (`YYYY-MM-DD`) | `2026-05-31` |
| `page` | `integer` | Нет | Номер страницы пагинации | `2` | | `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` `GET /api/gigs?categories[]=1&categories[]=4&date_from=2026-02-01&date_to=2026-05-31`
+5 -1
View File
@@ -11,6 +11,8 @@ use Illuminate\Http\Resources\Json\AnonymousResourceCollection;
class GigsController extends Controller class GigsController extends Controller
{ {
CONST PER_PAGE = 10;
public function index(GetGigsRequest $request): AnonymousResourceCollection public function index(GetGigsRequest $request): AnonymousResourceCollection
{ {
// Используем eager loading (with), чтобы избежать проблемы N+1 запросов к категориям // Используем eager loading (with), чтобы избежать проблемы N+1 запросов к категориям
@@ -32,11 +34,13 @@ class GigsController extends Controller
$query->whereDate('event_date', '<=', $request->input('date_to')); $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'); $query->orderBy('event_date', 'asc');
// Пагинация по 10 элементов на страницу // Пагинация по 10 элементов на страницу
$gigs = $query->paginate(10); $gigs = $query->paginate($per_page);
return GigResource::collection($gigs); return GigResource::collection($gigs);
} }