Для взаимодействия с сервисом нужно отправить json
-файл на http://IP:PORT/add_order
, чтобы вставить заказ в базу данных. Также по http://IP:PORT/get_orders
можно получить список всех заказов.
Для работы с базой данных использовалась библиотека tokio-postgres
. Кэш был реализован в виде вектора. В начале работы программы в вектор загружаются заказы из БД. Потом, когда пользователь добавляет заказ, то он сначала добавляется в БД и, если всё успешно, то в вектор. При запросе всех заказов, выводятся данные из кэша, без обращения к БД.
База данных представляет из себя несколько сущностей. Сущность order_info
содержит информацию о заказе и ссылки на delivery
и payment
. Связь многие-ко-многим между order_info
и item
реализована через дополнительную таблицу.
При запуске программы можно ввести аргументы для командной строки. Если аргументы не будут указаны, то будут взяты переменные окружения из файла .env
.
cargo run -- --server-host 127.0.0.1 --server-port 8081 --db-user axum_postgres --db-password axum_postgres --db-name axum_postgres --db-host 127.0.0.1 --db-port 5432
В файле test_request
находятся три запроса: один тестирует вставку неправильного json, другой - правильного, третий - получения всех заказов.