Необходимо реализовать сервис со следующим функционалом на языке PHP (не ниже версии 7.4) c использованием фреймворка (Yii2, Laravel - на выбор). В качестве базы данных должна использоваться MySQL.
В базе данных testcase_db должна быть таблица currency c колонками:
- id — первичный ключ;
- name — название валюты;
- rate — курс валюты к тенге;
- date — дата получения курса.
Должна быть консольная команда (с возможностью запуска через cron) для обновления данных в таблице currency. Данные по курсам валют можно взять отсюда: https://nationalbank.kz/rss/rates_all.xml?switch=russian
Необходимо реализовать 2 REST API метода:
- GET /currencies — должен возвращать список курсов валют с возможностью пагинации на текущую дату (в качестве опционального параметра может быть передана произвольная дата в виде параметра date);
- GET /currency/ — должен возвращать курс валюты для переданного кода валюты (name) на текущую дату (в качестве опционального параметра может быть передана произвольная дата в виде параметра date).
Для возвращаемых результатов должны возвращаться корректные статусы HTTP-ответов:
- 200 — данные найдены;
- 401 — токен не предоставлен;
- 403 — предоставлен некорректный токен;
- 404 — данные (на текущую дату) не найдены.
API должно быть защищено bearer авторизацией. Токен авторизации может быть жестко зашит в саму систему.
Пользователь может получить список или один из элементов списка курса валют, которые автоматически обновляют в каждую минуту.
Проект состоит из 1-ой миграции, 1-ой модели, 1-ой контроллера и 1-ой пользовательской команды.
В миграции прописаны поля таблицы currencies, соответствующие заданию.
В модели прописаны поля из миграции в массив fillables, также создан статический метод для получения списка курса валют с ссылки в нужном формате.
В контроллере прописаны два метода, работа которых соответствует требованиям задания.
В пользовательской команде реализовано обновление курсов валют, путём полного удаления старых записей и заполнения таблицы новыми, используя метод класса Currency.