Skip to content

SETTER2000/prove

Repository files navigation

prove

Prove - REST API сервис предоставляет решения алгоритмических задач.

Запуск сервера.

Обязательно указать DSN базы данных. Рекомендуется PostgreSQL. Так же положить папку config/config.json рядом с бинарником. Если есть сервер удалённый можно запустить docker-compose.yml, тем самым поднять DB Postgres и Adminer, в этом случаи adminer будет доступен по :8077

Подключить DB

При запуске бинарника для флага -d указать ваш DSN

 prove_<version> -d <DSN>
  • Можно подключиться к DB сейчас так, например в windows:
  • <binary_name>.exe -d postgres://bob:mypasswd@194.67.104.167:5432/prove?sslmode=disable

Подключить DB через переменную окружения

DATABASE_URI=<DSN> 

Подключить DB в конфиге (наверно сейчас для проверки самый оптимальный вариант)

  1. Создать папку config рядом с бинарником (бинарники здесь https://github.com/SETTER2000/prove/bin)
  2. Скачать конфиг файл https://github.com/SETTER2000/prove/config/config.json в папку config
  3. И в конфиге установить DSN для DB
"connect_db": "postgres://bob:mypasswd@194.67.104.167:5432/prove?sslmode=disable"

Проверка работы DB

GET http://localhost:8080/ping 200 Ok 500 Error

Adminer

Вход в админер http://rooder.ru:8077:

  • Движок: PostgreSQL
  • Сервер: postgres
  • Имя пользователя: bob
  • Пароль: mypasswd
  • База данных: prove
http://rooder.ru:8077

API

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

Создание группы

  • POST {{domain}}/group 201 Добавить уникальное название группы
{
    "name":"ИП-200"
}

Все группы

Здесь можно найти id группы

  • GET {{domain}}/group 200

Регистрация пользователя

знаю, что этого не было в тз, но было "как бы ты его писал, работая над энтерпрайз проектом"

Создание нового студента, используя его ФИО и т.д.

Обязательно указать group_id (можно посмотреть получив список всех групп).

  • POST {{domain}}/user/register 201
{
    "email": "bob@mail.ru",
    "login":"bob",
    "password": "mypass",
    "surname": "Штирлиц",
    "name": "Иван",
    "patronymic": "Васильевич",
    "group_id": "<group_id>"
} 

Авторизация

Кто первый зарегистрировался тот и админ. Админ может добавлять ответы на задачи, по сути он и является продавцом.

  • POST {{domain}}/user/login 200
{
    "login": "bob",
    "password": "mypass"
} 

Текущий кредит

Возможно получить ответ на задачу пока ваш кредит не достиг 1000

  • GET {{domain}}/user/balance

Пополнить баланс

  • POST {{domain}}/user/balance
{
    "current":100.30
}

Создать задачу

  • POST {{domain}}/task
{
    "name":"Найти все пропущенные числа.", 
    "description":"Дан неотсортированный массив из N чисел от 1 до N,при этом несколько чисел из диапазона [1, N] пропущено, а некоторые присутствуют дважды.",
    "price":"100.87"
}

Получить список задач

  • GET {{domain}}/task response:
[
    {
        "task_id": "<task_id>",
        "name": "Найти все пропущенные числа.",
        "description": "Дан неотсортированный массив из N чисел от 1 до N,при этом несколько чисел из диапазона [1, N] пропущено, а некоторые присутствуют дважды.",
        "price": "100.87",
        "created": "2023-07-27T16:41:19+03:00"
    }
]

Получить конкретную задачу

  • GET {{domain}}/task/{{task_id}} response:
{
    "task_id": "<task_id>",
    "name": "Найти все пропущенные числа.",
    "description": "Дан неотсортированный массив из N чисел от 1 до N,при этом несколько чисел из диапазона [1, N] пропущено, а некоторые присутствуют дважды.",
    "price": "100.87",
    "created": "2023-07-27T16:41:19+03:00"
}

Получить ответ по задачи

  • POST {{domain}}/task/solution
{
    "task_id":"<task_id>",
    "data":{
        "ar": [5, 6, 7, 8, 9, 18,10,25,15,25,33,47, 9]
    }
}

Команды Makefile

Start

Старт prove (скомпилирует и запустит)

make build_d

Сборка для трех os

make build_a

HELP по флагам

make short_h

About

Получение ответа на алгоритмическую задачу

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages