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 в конфиге (наверно сейчас для проверки самый оптимальный вариант)
- Создать папку config рядом с бинарником (бинарники здесь https://github.com/SETTER2000/prove/bin)
- Скачать конфиг файл https://github.com/SETTER2000/prove/config/config.json в папку config
- И в конфиге установить 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
- {{port}} = :8080
- {{domain}} = http://localhost{{port}}/api
После запуска сервера база данных, девственно чистая, поэтому начинать нужно с создания группы.
Создание группы
- POST {{domain}}/group 201
Добавить уникальное название группы
{
"name":"ИП-200"
}
Все группы
Здесь можно найти id группы
Регистрация пользователя
знаю, что этого не было в тз, но было "как бы ты его писал, работая над энтерпрайз проектом"
Создание нового студента, используя его ФИО и т.д.
Обязательно указать 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
}
Создать задачу
{
"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