Skip to content

Тестовое задание для компании "Avito" на стажировку по направлению "Golang-разработчик)"

Notifications You must be signed in to change notification settings

a1ek1/merch-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Сервис по работе с транзакциями

HTTP сервер, реализующий REST API, выполненный в рамках тестового задания на стажировку для компании "Avito".

Подготовка к запуску сервера


Необходимо, чтобы на вашем устройстве были установлены

  • Docker
  • Docker compose
  • goose (для применения миграций)
  • Go 1.23

Запуск сервера

  1. Склонируйте проект
    git clone [email protected]:a1ek1/merch-service.git
    cd merch-service
  1. Запустите контейнер с базой данных
    # Команду выполняем из директории merch-service
    docker-compose up

После выполнения данной команды у вас должен запуститься контейнер с PostgreSQL, достуный на порту 5435

  1. Примените миграции

Если у вас не установлен goose, то нужно в командной строке выполнить команду

    go install github.com/pressly/goose/v3/cmd/goose@latest

После установки проверьте корректность работы

    goose --version

Дальше нужно перейти в директорию merch-service/migrations и выполнить следующую команду

    # Указаны значения по умолчанию. Если поменяете в конфиге и в docker-compose.yml, то здесь будут другие данные
    goose postgres "host=localhost user=postgres port=5434 password=postgres database=merch_service sslmode=disable" up

Вам должно вывестить сообщение об успешном применении миграций

  1. Запустите файл main.go
    # Из директории merch-service
    go run cmd/main.go

После выполнения этой команды сервер будет доступен на localhost:8080

Тестирование работы

  1. Регистрация/авторизация в сервисе. Вам возвращается JWT токен.
    curl -X POST http://localhost:8080/api/auth \
          -H "Content-Type: application/json" \
          -d "{
            \"username\":\"{логин}\",
            \"password\":\"{пароль}\"
          }"
  1. Покупка предметов
    # Введите токен, полученный при регистрации/авторизации
    curl -X GET "http://localhost:8080/api/buy/{название_предмета}" \
        -H "Authorization: Bearer {токен}"
    
  1. Отправка монет пользователю
    # Введите число нужных транзакций
    curl -X POST http://localhost:8080/api/sendCoin \
        -H "Authorization: Bearer {токен_отправителя}" \
        -H "Content-Type: application/json" \
        -d "{\"toUsername\": \"{логин_получателя}\", \"amount\": {сумма_перевода}}"
  1. Получение информации о пользователе
    # Введите токен пользователя, информацию о котором вы хотите получить
    curl -X GET http://localhost:8080/api/info \
        -H "Authorization: Bearer {токен}"

About

Тестовое задание для компании "Avito" на стажировку по направлению "Golang-разработчик)"

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published