order-service

Взаимодействие с сервисом

Для взаимодействия с сервисом нужно отправить 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

Тестирование http-запросов

В файле test_request находятся три запроса: один тестирует вставку неправильного json, другой - правильного, третий - получения всех заказов.