https://github.com/walkerchel/currency-operations
https://github.com/walkerchel/currency-operations
Last synced: 11 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/walkerchel/currency-operations
- Owner: WalkerChel
- Created: 2024-03-13T17:56:33.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-03-15T09:00:39.000Z (over 2 years ago)
- Last Synced: 2025-07-08T07:20:51.579Z (12 months ago)
- Language: Go
- Size: 79.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## REST API для отслеживания и покупки валюты
Задание находится [здесь](./docs/task.md)
#### Использованные технологии:
* Разработка, следуя дизайну REST API.
* Gin Web Framework для роутинга.
* Создание файлов миграций для поднятия БД с помощью утилиты go-migrate.
* Регистрация и аутентификация.
* Работа с JWT. Middleware для определения пользователя .
* Конфигурация приложения с помощью библиотеки cleanenv.
* Логирование ошибок с помощью библиотеки logrus.
* Graceful Shutdown для безопасной остановки приложения.
Для отслеживания курса валюты можно подключиться по websocket'у к API alphavantage и сравнивать цену монеты с желаемой ценой пользователя.
Когда курс будет удовлетворять требованиям, со счёта пользователя списываются средсва и определённое кол-во монет зачисляется на его счёт.
Если ползователь решил отменить операцию до её совершения, то со счёта ничего не спишется и обработчик прекратит слушать этот курс.
### Список эндпоинтов:
##### Регистрация и аутентификация:
```
-X POST http://{host}:{port}/auth/sign-up — регистрация
```
```
-X POST http://{host}:{port}/auth/sign-in — аутентификация
```
##### Операции над счетами:
```
-X POST http://{host}:{port}/api/accounts/ — Создать счёт
```
```
-X GET http://{host}:{port}/api/accounts/ — Получить все счета пользователя
```
```
-X GET http://{host}:{port}/api/accounts/{id} — Получить счёт по id
```
```
-X PUT http://{host}:{port}/api/accounts/deposit/{id} — Пополнить счёт по id
```
---
Операция над
Тело запроса
Пользователями
{
"name" : " ",
"username" : " ",
"password" : " "
}
Счетами
{
"currency": " ",
"balance":
}
---
### Схема Базы данных

---
Для запуска приложения перейдите в дириекторию проекта в терминале и запустите следующие команды:
```
make app-build && make app-run
```
Если запуск производится впервые, то необходимо применить миграции к БД:
```
make migrations_up
```