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

# 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

# Packages

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

# Functions

No description provided by the author

# Structs

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