Skip to content

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

Notifications You must be signed in to change notification settings

a1ek1/transaction-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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

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


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

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

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

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

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

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

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

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

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

    goose --version

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

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

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

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

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

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

  1. Перевод средств с одного счета на другой
    curl -X POST http://localhost:8080/api/send \
          -H "Content-Type: application/json" \
          -d '{
            "from": "{номер_кошелька_отправителя}",
            "to": "{номер_кошелька_получателя}",
            "amount": {сумма_перевода}
          }'
  1. Просмотр баланса кошелька
    # Введите номер нужного кошелька
    curl -X GET http://localhost:8080/api/wallet/{номер_кошелька}/balance
  1. Получение N последних транзаций (в данной реализации учтены только выполненные транзакции)
    # Введите число нужных транзакций
    curl -X GET "http://localhost:8080/api/transactions?count=N"
  1. Получение всех кошельков
    curl -X GET http://localhost:8080/api/wallets

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published