Skip to content

Nikolailavr/NotificationsTest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание: Написать микросервис уведомления пользователей

Цель:

Микросервис должен представлять из себя RestAPI сервер, который позволяет создавать запись уведомления в документе пользователя в MongoDB, отправлять email, а так же предоставлять листинг уведомлений из документа пользователя

Решение:

Отправку email вынесено в background tasks, при большой нагрузке можно заменить на celery. В email отправляется key (registration/new_login). Все параметры для подключения вынесены в env.

Запуск контейнеров:

$ docker-compose up -d --build

HELP

[POST] /create создает новое уведомление.

Тело запроса:

  • user_id - строка на 24 символа (является ObjectID документа пользователя которому отправляется уведомление)
  • target_id - строка на 24 символа (является ObjectID документа сущности, к которой относится уведомление) (Может отсутствовать)
  • key - ключ уведомления enum
    • registration (Только отправит пользователю Email)
    • new_message (только создаст запись в документе пользователя)
    • new_post (только создаст запись в документе пользователя)
    • new_login (Создаст запись в документе пользователя и отправит email)
  • data - произвольный объект из пар ключ/значение (Может отсутствовать)

[GET] /list производит листинг уведомлений пользователя.

query params

  • user_id [string] - идентификатор пользователя
  • skip [int] - кол-во уведомлений, которые следует пропустить
  • limit [int] - кол-во уведомлений которые следует вернуть

[POST] /read создает отметку о прочтении уведомления.

query params

  • user_id [string] - идентификатор пользователя
  • notification_id [string] - Идентификатор уведомления

About

Notifications Test

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published