enrollment

module
v0.0.0-...-3010e5a Latest Latest
Warning

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

Go to latest
Published: Sep 26, 2023 License: MIT

README

enrollment

Реализация тестового задания.

Запуск и настройка

  • Для запуска без выполнения миграций базы данных выполните команду make run.
  • Для запуска с выполнением миграций базы данных выполните команду make runm.
  • Для сборки приложения в файл server.out - make

Конфигурирование приложения происходит через переменные окружения.

  • BIND_ADDR - адрес, на котором будет запущено приложение (изначально стоит localhost:8080)
  • POSTGRES_USER - имя пользователя postgres (изначально postgres)
  • POSTGRES_PASS - пароль от пользователя postgres (изначально postgres)
  • POSTGRES_PORT - порт, на котором запущена база postgres (изначально 5432)
  • POSTGRES_HOST - адрес, на котором запущена база postgres (изначально localhost)
  • POSTGRES_NAME - имя базы данных postgres приложения (изначально postgres)

Доступные эндпоинты.

Пользователю доступна swagger документация в папке docs данного репозитория, а так же в самом приложении по адресу <адрес на котором запущено приложение>/swagger/index.html

Пользователю доступны следующие эндпоинты

  • создание записей POST /api/records
  • получение записи по идентификатору GET /api/records/{record_id}
  • получение всех записей пользователя GET /api/user/{user}/records
  • получение всех записей в системе GET /api/records
Создание записи

Хэндлер: POST /api/records. Создание записи производится по паре msg_type/user. Ограничений на данные поля нет. Данный хэндлер принимает данные в форматах JSON/XML/form values. Формат запроса:

POST /api/user/register HTTP/1.1
Content-Type: application/json
...

{
	"msg_type": "<msg_type>",
	"user": "<user>"
}

Возможные коды ответа:

  • 201 - успешная обработка ответа Формат ответа:
201 Created HTTP/1.1
Content-Type: application/json
...

{
    "id": 123,
	"msg_type": "post",
	"user": "marlo",
	"created_at": "2022-12-31T19:00:00.000000Z"
}
  • 400 - неверный формат запроса
Получение записи по идентификатору

Хэндлер: GET /api/records/{id}. Получение происходит по идентификатору в URL.

Формат запроса:

GET /api/records/123 HTTP/1.1
Content-Length: 0

Возможные коды ответа:

  • 200 - успешная обработка ответа. Формат ответа:
200 OK HTTP/1.1
Content-Type: application/json
...

{
    "id": 123,
	"msg_type": "post",
	"user": "marlo",
	"created_at": "2022-12-31T19:00:00.000000Z"
}
  • 500 - внутренняя ошибка сервера
Получение записи по пользователю

Хэндлер: GET /api/users/{user}/records. Получение происходит по идентификатору в URL. В ответе записи отсортированы от новых к старым.

Формат запроса:

GET /api/users/marlo/records HTTP/1.1
Content-Length: 0

Возможные коды ответа:

  • 200 - успешная обработка ответа. Формат ответа:
200 OK HTTP/1.1
Content-Type: application/json
...

{
    "records_stored": 2,
    "user": "marlo",
    "records": [
        {
            "id": 2,
            "msg_type": "post",
            "created_at": "2023-07-14T19:30:00.000000Z"
        },
        {
            "id": 1,
            "msg_type": "get",
            "created_at": "2023-07-14T19:00:00.000000Z"
        }
    ]
}
  • 500 - внутренняя ошибка сервера
Получение всех записей

Хэндлер: GET /api/records. В ответе записи отсортированы от новых к старым. В ответе также имеется информация по количеству записей и уникальных пользователей в системе.

Формат запроса:

GET /api/records HTTP/1.1
Content-Length: 0

Возможные коды ответа:

  • 200 - успешная обработка ответа. Формат ответа:
200 OK HTTP/1.1
Content-Type: application/json
...

{
    "records_stored": 3,
    "users_registered": 2,
    "users": {
        "marlo": [
            {
                "id": 2,
                "msg_type": "post",
                "created_at": "2023-07-14T19:30:00.000000Z"
            },
            {
                "id": 1,
                "msg_type": "get",
                "created_at": "2023-07-14T19:00:00.000000Z"
            }
        ],
        "user": [
            {
                "id": 3,
                "msg_type": "other",
                "created_at": "2023-07-14T19:40:00.000000Z"
            }
        ]
    }
}
  • 500 - внутренняя ошибка сервера

Jump to

Keyboard shortcuts

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