|
|
há 1 ano atrás | |
|---|---|---|
| app | há 1 ano atrás | |
| bootstrap | há 1 ano atrás | |
| config | há 1 ano atrás | |
| database | há 1 ano atrás | |
| public | há 1 ano atrás | |
| resources | há 1 ano atrás | |
| routes | há 1 ano atrás | |
| storage | há 1 ano atrás | |
| tests | há 1 ano atrás | |
| .editorconfig | há 1 ano atrás | |
| .env.example | há 1 ano atrás | |
| .gitattributes | há 1 ano atrás | |
| .gitignore | há 1 ano atrás | |
| README.md | há 1 ano atrás | |
| artisan | há 1 ano atrás | |
| composer.json | há 1 ano atrás | |
| composer.lock | há 1 ano atrás | |
| package-lock.json | há 1 ano atrás | |
| package.json | há 1 ano atrás | |
| phpunit.xml | há 1 ano atrás | |
| vite.config.js | há 1 ano atrás |
Для решения задачи был выбран фреймворк Laravel и БД SQLite. Были написаны миграции и модели в соответствии с документацией, с небольшими отклонениями:
Была создана основная таблица products и связанные с ней по принципу один-ко-многим product_images и product_reviews, а также связанная по принципу многие-ко-многим таблица tags.
Непосредственно получение данных и запись в БД реализовано через консольные команды Laravel.
Был создан абстрактный класс для получения данных от DummyJSON и на его основе класс, который получив нужные данные преобразует их и записывает в БД. Валидация данных в данном случае не реализована, т.к. проект тестовый.
Для поиска продуктов по строке был выбран метод api search.
Команда работает по принципу обновить или создать, то есть исключено дублирование данных. Данные в связанных таблицах пересоздаются при каждом обновлении, т.к. нет поля, позволяющего однозначно идентифицировать запись.
Для получения других данных, таких как users, posts etc нужно создать структуры БД и модели, создать команду, унаследовав класс SearchDummyJson, написать метод получения данных и метод записи в БД с обработкой и валидацией.