# README
banner-service
Задание
Сервис баннеров Есть большое количество неоднородного контента, для которого необходимо иметь единую систему управления. В частности, необходимо показывать разный контент пользователям в зависимости от их принадлежности к какой-либо группе. Данный контент мы будем предоставлять с помощью баннеров.
Описание задачи Необходимо реализовать сервис, который позволяет показывать пользователям баннеры, в зависимости от требуемой фичи и тега пользователя, а также управлять баннерами и связанными с ними тегами и фичами.
Общие вводные Баннер — это документ, описывающий какой-либо элемент пользовательского интерфейса. Технически баннер представляет собой JSON-документ неопределенной структуры.
Тег — это сущность для обозначения группы пользователей; представляет собой число (ID тега).
Фича — это домен или функциональность; представляет собой число (ID фичи).
Один баннер может быть связан только с одной фичей и несколькими тегами При этом один тег, как и одна фича, могут принадлежать разным баннерам одновременно Фича и тег однозначно определяют баннер Так как баннеры являются для пользователя вспомогательным функционалом, допускается, если пользователь в течение короткого срока будет получать устаревшую информацию. При этом существует часть пользователей (порядка 10%), которым обязательно получать самую актуальную информацию. Для таких пользователей нужно предусмотреть механизм получения информации напрямую из БД.
Protocol
Described in the file api.yml.
How to compile (with docker)
make run
How to stop the application
make stop
Generating code from a specification
Install oapi-codegen and generate:
oapi-codegen -package=handler -generate="chi-server,types,spec" api.yaml > internal/handler/api.gen.go
Postman doc
The /signup method creates a user with the role
The /signin method returns a jwt token for user authorization and authentication in the service
...
other: documenter.getpostman.com