Không có mô tả

Alexander Musikhin 450ff02ab6 Readme updated 1 năm trước cách đây
app 71e542f33b Added nullable to brand field, removed timestamps 1 năm trước cách đây
bootstrap 36bfee6e13 Initial commit: installed laravel, created migrations and models 1 năm trước cách đây
config 36bfee6e13 Initial commit: installed laravel, created migrations and models 1 năm trước cách đây
database 71e542f33b Added nullable to brand field, removed timestamps 1 năm trước cách đây
public 36bfee6e13 Initial commit: installed laravel, created migrations and models 1 năm trước cách đây
resources 36bfee6e13 Initial commit: installed laravel, created migrations and models 1 năm trước cách đây
routes 36bfee6e13 Initial commit: installed laravel, created migrations and models 1 năm trước cách đây
storage 36bfee6e13 Initial commit: installed laravel, created migrations and models 1 năm trước cách đây
tests 36bfee6e13 Initial commit: installed laravel, created migrations and models 1 năm trước cách đây
.editorconfig 36bfee6e13 Initial commit: installed laravel, created migrations and models 1 năm trước cách đây
.env.example 36bfee6e13 Initial commit: installed laravel, created migrations and models 1 năm trước cách đây
.gitattributes 36bfee6e13 Initial commit: installed laravel, created migrations and models 1 năm trước cách đây
.gitignore 36bfee6e13 Initial commit: installed laravel, created migrations and models 1 năm trước cách đây
README.md 450ff02ab6 Readme updated 1 năm trước cách đây
artisan 36bfee6e13 Initial commit: installed laravel, created migrations and models 1 năm trước cách đây
composer.json 09aa268898 added ext-pdo extension to composer json 1 năm trước cách đây
composer.lock 36bfee6e13 Initial commit: installed laravel, created migrations and models 1 năm trước cách đây
package-lock.json 36bfee6e13 Initial commit: installed laravel, created migrations and models 1 năm trước cách đây
package.json 36bfee6e13 Initial commit: installed laravel, created migrations and models 1 năm trước cách đây
phpunit.xml 36bfee6e13 Initial commit: installed laravel, created migrations and models 1 năm trước cách đây
vite.config.js 36bfee6e13 Initial commit: installed laravel, created migrations and models 1 năm trước cách đây

README.md

Test task

Тестовая задача для Social Media Holding на сайте hh.ru

ТЗ: Используя сайт https://dummyjson.com/docs/products сделать по апи добавление, получение с сохранением в базе всех продуктов "iPhone". Желательно сделать так, чтобы можно было быстро сделать потом и для recipes, posts, users.

Для решения задачи был выбран фреймворк Laravel и БД SQLite. Были написаны миграции и модели в соответствии с документацией, с небольшими отклонениями:

  • в именах полей БД использовался snake_case
  • некоторые вложенные поля продукта были вынесены на уровень выше

Была создана основная таблица products и связанные с ней по принципу один-ко-многим product_images и product_reviews, а также связанная по принципу многие-ко-многим таблица tags.

Непосредственно получение данных и запись в БД реализовано через консольные команды Laravel.

Был создан абстрактный класс для получения данных от DummyJSON и на его основе класс, который получив нужные данные преобразует их и записывает в БД. Валидация данных в данном случае не реализована, т.к. проект тестовый.

Для поиска продуктов по строке был выбран метод api search.

Команда работает по принципу обновить или создать, то есть исключено дублирование данных. Данные в связанных таблицах пересоздаются при каждом обновлении, т.к. нет поля, позволяющего однозначно идентифицировать запись.

Для получения других данных, таких как users, posts etc нужно создать структуры БД и модели, создать команду, унаследовав класс SearchDummyJson, написать метод получения данных и метод записи в БД с обработкой и валидацией.