HTTP сервер, реализующий REST API, выполненный в рамках тестового задания на стажировку для компании "Infotecs".
- Docker
- Docker compose
- goose (для применения миграций)
- Go 1.23
- Склонируйте проект
git clone [email protected]:a1ek1/transaction-service.git
cd transaction-service
- Запустите контейнер с базой данных
# Команду выполняем из директории transaction-service
docker-compose up
После выполнения данной команды у вас должен запуститься контейнер с PostgreSQL, достуный на порту 5434
- Примените миграции
Если у вас не установлен 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
Вам должно вывестить сообщение об успешном применении миграций
- Запустите файл main.go
# Из директории transaction-service
go run cmd/main.go
После выполнения этой команды сервер будет доступен на localhost:8080
- Перевод средств с одного счета на другой
curl -X POST http://localhost:8080/api/send \
-H "Content-Type: application/json" \
-d '{
"from": "{номер_кошелька_отправителя}",
"to": "{номер_кошелька_получателя}",
"amount": {сумма_перевода}
}'
- Просмотр баланса кошелька
# Введите номер нужного кошелька
curl -X GET http://localhost:8080/api/wallet/{номер_кошелька}/balance
- Получение N последних транзаций (в данной реализации учтены только выполненные транзакции)
# Введите число нужных транзакций
curl -X GET "http://localhost:8080/api/transactions?count=N"
- Получение всех кошельков
curl -X GET http://localhost:8080/api/wallets