Микросервис для ежедневного сбора данных о курсах мировых валют.
Завершен v0.0.1 ✓
/currency
- [GET] /api/v1/currency: получить список всех валют.
- [GET] /api/v1/currency/{currency_id}: получить конкретную валюту по id.
- [POST] /api/v1/currency: добавить валюту.
- [PATCH] /api/v1/currency/{currency_id}: обновить существующую валюту по id.
- [DELETE] /api/v1/currency/{currency_id}: удалить существующую валюту по id.
/currency_group
- [GET] /api/v1/currency_group: получить список всех групп валют.
- [GET] /api/v1/currency_group/{currency_group_id}: получить конкретную группу валют по id.
- [POST] /api/v1/currency_group: добавить группу валют.
- [PATCH] /api/v1/currency_group/{currency_group_id}: обновить существующую группу валют по id.
- [DELETE] /api/v1/currency_group/{currency_group_id}: удалить существующую группу валют по id.
/currency_rate
- [GET] /api/v1/currency_rate: получить курсы валют.
- [GET] /api/v1/currency_rate/{currency_rate_id}: получить конкретный курс по id.
- [POST] /api/v1/currency_rate: добавить курс валюты.
- [PATCH] /api/v1/currency_rate/{currency_rate_id}: обновить существующий курс валюты по id.
- [DELETE] /api/v1/currency_rate/{currency_rate_id}: удалить существующий курс валюты по id.
- «по какому-то эндпоинту отдавать курс для переданной валюты»
# include_table_name включает table в запрос # ?param_name=value фильтрует параметры согласно указанному значению /api/v1/currency/?include_currency_rates=1&char_code={CURRENCY_CODE}
- Сортировка по атрибутам
# ASC (пример: 1, 2, 3...) /api/v1/currency/?num_code # DESC (пример: 3, 2, 1...) /api/v1/currency/?_num_code
- Пагинация
/api/v1/currency?limit=10 /api/v1/currency?offset=2&limit=1
- Python 3.11.6
- Aiohttp 3.9.3
- FastAPI 0.108
- Uvicorn 0.25.0
- SQLAlchemy 2.0.31
- Alembic 1.13.1
- Pydantic 2.7.4
- Celery 5.3.6
- Flower 2.0.1
- RabbitMQ 3.13.2
- Redis 7.2.5
- PostgreSQL 16
- Node 18.19.1
- Vite 4.4.5
- React 18.2.0
- TypeScript 5.0.2
- Docker 26.1.3
- Docker Compose 2.27.0
- Pytest 8.1.1
- CI
-
Clone the repository to the local machine
git clone https://github.com/Segfaul/terexov_testovoe.git сd terexov_testovoe/
-
Build images and run app in dev mode
docker compose -f docker-compose.dev.yml up -d --build
-
Checkout http://127.0.0.1:3000 (Vite), http://127.0.0.1:8000 (Uvicorn), http://127.0.0.1:5555/tasks (Flower, Celery Tasks)
# Also you may run tests if needed docker exec -it currency_app_dev-currency_api-1 bash pytest backend/currency_api/ exit # Run Celery tasks manually if needed docker exec -it currency_app_dev-celery_worker-1 bash celery inspect registered celery call backend.currency_api.celery.tasks.populate_db exit
-
Stop/Down the app
# Without removing containers docker compose -f docker-compose.dev.yml stop # Removing containers docker compose -f docker-compose.dev.yml down # Removing containers and docker volumes (not local ones) docker compose -f docker-compose.dev.yml down -v
- Добавлено общее логирование (log.ini + volumes).
- Redis-cache для ускорения обработки частых запросов.
- Добавлен полноценный клиент (React, Typescript).