Categorygithub.com/ant0nix/avitoTask
repositorypackage
0.0.0-20230327131830-29df2ab32414
Repository: https://github.com/ant0nix/avitotask.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author

# 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.go
  • pkg - здесь обрабатывается вся логика
  • schema - здесь схема БД, а также процедуры
  • configs - здесь конфиги к БД и серверу

Сторонние библиотеки

Gin v1.8.2

Assert v2.2.0

Mock v1.6.0

SQLX v1.3.5

Viper v1.15.0