Updated README
This commit is contained in:
@@ -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`
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user