Giter Club home page Giter Club logo

terexov_testovoe's Introduction

TEREXOV CURRENCYAPI [TEST]

Микросервис для ежедневного сбора данных о курсах мировых валют.


Статус проекта

Завершен v0.0.1 ✓

There's a pic


Функциональность

Currency API

/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.

Особенности API

  • «по какому-то эндпоинту отдавать курс для переданной валюты»
    # 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

Технологии и фреймворки


Запуск в dev режиме

  1. Clone the repository to the local machine

    git clone https://github.com/Segfaul/terexov_testovoe.git
    сd terexov_testovoe/
  2. Build images and run app in dev mode

    docker compose -f docker-compose.dev.yml up -d --build
  3. 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
  4. 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

Дополнительно

  1. Добавлено общее логирование (log.ini + volumes).
  2. Redis-cache для ускорения обработки частых запросов.
  3. Добавлен полноценный клиент (React, Typescript).

terexov_testovoe's People

Contributors

segfaul avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.