prove

module
v0.0.0-...-a4c28fd Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 28, 2023 License: MIT

README

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

  • {{port}} = :8080
  • {{domain}} = http://localhost{{port}}/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

Directories

Path Synopsis
cmd
internal
app
server
Package server implements HTTP server.
Package server implements HTTP server.
usecase
Package usecase implements application business logic.
Package usecase implements application business logic.
pkg
er
log/logger
Package logger - логирование проекта на основе zerolog.
Package logger - логирование проекта на основе zerolog.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL