This repository has been archived by the owner on Jun 20, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5868a40
commit 6464977
Showing
1 changed file
with
45 additions
and
14 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,19 +1,50 @@ | ||
# Coinbase websocket client on Golang | ||
|
||
This is test task. | ||
## Task | ||
|
||
## Задача | ||
|
||
1. Подключиться по WebSocket, к бирже криптовалют CoinBase (documentation: https://docs.cloud.coinbase.com/exchange/docs/websocket-overview) | ||
2. Подписаться на цены по трем инструментам: ETHBTC, BTCUSD, BTCEUR (данные будут приходить в WebSocket по мере их появления на бирже) | ||
1. Подключиться по WebSocket, к бирже криптовалют CoinBase; | ||
2. Подписаться на цены по трем инструментам: ETH-BTC, BTC-USD, BTC-EUR (данные будут приходить в WebSocket по мере их появления на бирже); | ||
3. Создать таблицу "ticks" в MySql со следующими полями: | ||
timestamp (int64) - время получения цены (брать текущее время Unixtime в милисекундах) | ||
symbol (string) - название инструментам | ||
bid (float64) - цена продажи | ||
ask (float64) - цена покупки | ||
4. Подключиться к MySql и записывать в таблицу "ticks" данные полученные по WebSocket | ||
5. Записывать данные из трех инструментов (ETHBTC, BTCUSD, BTCEUR) в базу данных | ||
необходимо в 3 потока (каждому инструменту свой поток записи) | ||
6. Репозиторий с проектом выложить на github | ||
- timestamp (int64) - время цены | ||
- symbol (string) - название инструментам | ||
- bid (float64) - цена продажи | ||
- ask (float64) - цена покупки; | ||
4. Подключиться к MySql и записывать в таблицу "ticks" данные полученные по WebSocket; | ||
5. Записывать данные из трех инструментов (ETH-BTC, BTC-USD, BTC-EUR) в базу данных | ||
необходимо в 3 потока (каждому инструменту свой поток записи); | ||
6. Репозиторий с проектом выложить на github; | ||
7. Используйте хорошие практики разработки, для возможности дальнейшего расширения | ||
функционала приложения | ||
функционала приложения. | ||
|
||
## How to use | ||
|
||
Project based on Clean architecture principles. | ||
|
||
Requirements: | ||
|
||
- Go 1.19+ installed | ||
- Docker installed (to run docker-compose) | ||
|
||
``` | ||
# Run docker-compose | ||
make compose.start | ||
# Stop docker-compose | ||
make compose.stop | ||
# other command - call help | ||
make help | ||
``` | ||
|
||
## TODO | ||
|
||
- [ ] Logger points | ||
- [ ] Metric data | ||
- [ ] Test implemented | ||
|
||
|
||
## Resources | ||
|
||
- [Coinbase websocket overview](https://docs.cloud.coinbase.com/exchange/docs/websocket-overview) | ||
- [The Clean Architecture](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html) | ||
|