Categorygithub.com/garasev/AvitoTestTask
repository
0.0.0-20230831172604-d082879529ef
Repository: https://github.com/garasev/avitotesttask.git
Documentation: pkg.go.dev

# Packages

No description provided by the author
No description provided by the author

# README

AvitoTestTask

База данных

Для задания была разработана база данных.

alt

Запуск и остановка приложения

Для запуска приложения:

$ make run

Для остановки приложения:

$ make stop

Файлы

В директории /sql находятся sql файлы создания и удаления таблиц.

В директории /docks находятся .json файлы, которые необходимо импортировать в postman.

Методы

Получение всех сегментов

  • Метод: GET
  • Путь: /slug
  • Обработчик: handler.GetSlugs

Получение сегмента по ID

  • Метод: GET
  • Путь: /slug/{id}
  • Обработчик: handler.GetSlug

Удаление сегмента

  • Метод: DELETE
  • Путь: /slug
  • Обработчик: handler.DeleteSlug
  • Тело запроса: Slug - JSON

Добавление сегмента

  • Метод: POST
  • Путь: /slug
  • Обработчик: handler.AddSlug

Подмаршрут: User

Получение всех пользователей

  • Метод: GET
  • Путь: /slug/user
  • Обработчик: handler.GetUsers

Получение сегментов пользователя по ID

  • Метод: GET
  • Путь: /slug/user/{id}
  • Обработчик: handler.GetUserSlugs

Получение архивных сегментов пользователя

  • Метод: GET
  • Путь: /slug/user/{id}/archive?year='year'&month='month'
  • Обработчик: handler.GetUserArchive

Добавление N пользователей

  • Метод: POST
  • Путь: /slug/user
  • Обработчик: handler.AddUsers
  • Тело запроса: AddUsers - JSON

Добавление сегментов пользователю по ID

  • Метод: POST
  • Путь: /slug/user/{id}
  • Обработчик: handler.AddUserSlugs
  • Тело запроса: AddDeleteSlugs - JSON

AddDeleteSlugs - JSON

Содержит данные для добавления и удаления сегментов.

Поля:

  • AddSlugs (массив Slug): Массив сегментов для добавления.
  • DeleteSlugs (массив Slug): Массив сегментов для удаления.
  • SlugDuration (целое число): Продолжительность сегмента в минутах (необязательное поле).

Пример использования:

{
  "add_slugs": [
    {
      "name": "AVITO_VOICE_MESSAGES1",
      "user_percent": 50
    },
    {
      "name": "AVITO_VOICE_MESSAGES2",
      "user_percent": 100
    }
  ],
  "delete_slugs": [
    {
      "name": "AVITO_VOICE_MESSAGES3"
    }
  ],
  "duration_minutes": 60
}

AddUsers - JSON

Содержит данные для добавления пользователей.

Поля:

  • Count (целое число): Количество пользователей, которых нужно добавить.

Пример использования:

{
  "user_cnt": 5
}

Slug - JSON

Содержит информацию о сегменте.

Поля:

  • Name (строка): Название сегмента.

Пример использования:

{
  "name": "AVITO_VOICE_MESSAGES"
}

AddSlug - JSON

Содержит данные для добавления нового сегмента.

Поля:

  • Name (строка): Название нового сегмента.
  • Percent (целое число): Процент пользователей, для которых применяется сегмент (необязательное поле).

Пример использования:

{
  "name": "AVITO_VOICE_MESSAGES",
  "user_percent": 50
}