Skip to content

PR0J3CT12/backend_task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание на вакансию backend-разработчик(Django/python) во ВНИИР.

1. Вступление

При написании программы я постарался выполнить все поставленные задачи, обработать все потенциальные ошибки и сделать код максимально читабельным и красивым.

2. Запуск

2.1. В файле .env указать переменные DB_USER(имя пользователя PostgreSQL), DB_USER_PASSWORD(пароль пользователя PostgreSQL) и DB_NAME(название базы данных). Если необходимо: поменять DB_HOST и DB_PORT.

2.2.1. Запустить локальный(или нет, если были указаны другие значения переменных DB_HOST и DB_PORT в .env) сервер PostgreSQL.

2.2.2. Создать базу данных с названием "trading_platform"(или иным, если было указано другое значение переменной DB_NAME в .env).

2.3. Установить необходимые библиотеки. Это можно сделать командой pip install -r requirements.txt в корневой папке проекта.

2.4. В терминале написать команду python manage.py makemigrations trading_platform в корневой папке проекта.

2.5. В терминале написать команду python manage.py migrate trading_platform в корневой папке проекта.

2.6. В терминале написать команду python manage.py runserver в корневой папке проекта.

2.7. Делать запросы, например из Postman :). Начать можно с http://127.0.0.1:8000/api/init_db, чтобы заполнить базу данных тестовыми значениями.

3. API

3.1. DELETE /api/drop - удалить все записи trades.

3.2. POST /api/insert - добавить запись в trades. Необходимое тело запроса: {"type": *sell или buy*, "symbol": *имя символа*, "price": *стоимость*, "user": *id пользователя*}.

3.3. GET /api/trades?user=id - получить все записи trades. Можно опционально указать переменную user(id пользователя) и получить записи trades только одного пользователя.

3.4. GET /api/stock/{symbol}/price?start=date1&end=date2 - получить максимальную и минимальную цену с определенным параметром symbol. Можно опционально указать переменные start и end(даты в формате YYYY-MM-DD) и получить максимальную и минимальную цену за определенный временной промежуток(можно указать только одну из двух переменных).

3.5. GET /api/init_db - заполнить базу данных тестовыми простыми значениями. Чисто техническая функция, чтобы не заполнять базу данных вручную :)

4. Особенности

Далее приведены пункты, которые я намеренно изменил/добавил:

4.1. Ограничил длину symbol 4 символами.

4.2. Объединил 3 и 4 функции. Чтобы получить записи определенного пользователя, нужно указать значение опциональной переменной user.

4.3. В 5 функции указание временного промежутка сделал опциональным.

4.4. Добавил функцию для заполнения базы данных тестовыми значениями.

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

Постарался накидать документацию к API в swagger.io https://app.swaggerhub.com/apis-docs/nik.rotay/backend_task/1.0.0#

P.S. /api/init_db намеренно туда не внёс.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published