Тестовая задача hh.ru для Social Media Holding
Необходимо получить данные с сайта https://dummyjson.com/docs/products и занести их в базу данных отобрав по iPhone.
Для решения задачи был выбран фреймворк Laravel и БД SQLite. Были написаны миграции и модели в соответствии с документацией, с небольшими отклонениями:
Была создана основная таблица products и связанные с ней по принципу один-ко-многим product_images и product_reviews, а также связанная по принципу многие-ко-многим таблица tags.
Непосредственно получение данных и запись в БД реализовано через консольные команды Laravel.
Был создан абстрактный класс для получения данных от DummyJSON и на его основе класс, который получив нужные данные преобразует их и записывает в БД. Валидация данных в данном случае не реализована, т.к. проект тестовый.
Команда работает по принципу обновить или создать, то есть исключено дублирование данных. Данные в связанных таблицах пересоздаются при каждом обновлении, т.к. нет поля, позволяющего однозначно идентифицировать запись.