# README
Тестовое задание от Avito
Была реализована и протестирована вся необходимая логика, которая требовалась в ТЗ.
End-Points
В проекте есть два роутера /start
и /services
/start
На этом роутере реализованы основные end-points, которые позволяют заполнить БД стартовой информацией
[POST]/user
- создеёт нового пользователя в БД. Тело запроса:
{
"uname":"testName",
"balance":100
}
[POST]/services
- создает новую услугу в БД. Тело запроса:
{
"sid":1,
"price":20
}
/services
На этом роутере реализованы end-points, которые отвечают за логику сервиса
[POST] /change-balance
- изменяет баланс пользователя. Тело запроса:
{
"uid":1,
"change":123
}
[GET]/show-balance
- показывает баланс пользователя. Тело запроса:
{
"uid":1
}
[PUT]/p2p
- реализует транзакцию средств между пользователями. Тело запроса:
{
"sid":1,
"did":2,
"amount":2
}
[GET]/
- показывает все существующие сервисы.
[POST]/new-order
- создает новый заказ. Тело запроса:
{
"sid":1,
"uid":1
}
[PATCH]/do-order/:id
- выполняет заказ (переводит средства на счет компании). В качестве параметра id нужно указать ID пользователя, который создал заказ.
Все ответы приходят в виде JSON формата:
{"message":"ANSWER"}
Структура API
Весь проект разделен на 4 основные папки:
cmd
- здесь хранится main.gopkg
- здесь обрабатывается вся логикаschema
- здесь схема БД, а также процедурыconfigs
- здесь конфиги к БД и серверу
Сторонние библиотеки
Gin v1.8.2
Assert v2.2.0
Mock v1.6.0
SQLX v1.3.5
Viper v1.15.0