repository
0.0.0-20230831172604-d082879529ef
Repository: https://github.com/garasev/avitotesttask.git
Documentation: pkg.go.dev
# README
AvitoTestTask
База данных
Для задания была разработана база данных.
Запуск и остановка приложения
Для запуска приложения:
$ 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
}