Skip to content

SashaMelva/calendar_service

Repository files navigation

Cервис «Календарь»

Описание

Сервис "Календарь" представляет собой максимально упрощенный сервис для хранения календарных событий и отправки уведомлений.

Сервис предполагает возможность:

  • добавить/обновить событие;
  • получить список событий на день/неделю/месяц;
  • получить уведомление за N дней и часов до события.

Архитектура

Полностью завершенный сервис состоит из 5 процессов.

1) API

API предоставляет собой GRPC и HTTP интерфейсы для пользователей.

2) Планировщик

Планировщик - это фоновый процесс, который не взаимодействует с пользователем и выполняет периодические задания:

  • выбор событий, требующих уведомления и отправка уведомлений в очередь рассыльщику;
  • очистка старых (более 1 года назад) событий.

3) Рассыльщик

Рассыльщик - это фоновый процесс, занимающийся отправкой уведомлений.

На раннем этапе разработки рассыльщик просто записывает эти сообщения в лог.

4) СУБД

Реляционная СУБД (PostgreSQL) - хранит информацию о событиях.

5) Очередь сообщений

Очередь сообщений (RabbitMQ) - используется для передачи уведомлений от Планировщика Рассыльщику.

Описание сущностей

Событие

Событие - основная сущность, содержит в себе поля:

  • ID - уникальный идентификатор события;
  • Заголовок - короткий текст;
  • Дата и время события;
  • Дата и время окончания события;
  • Описание события - длинный текст;
  • За сколько времени высылать уведомление, опционально.

Уведомление

Уведомление - временная сущность, в БД не хранится, складывается в очередь для рассыльщика, содержит поля:

  • ID события;
  • Заголовок события;
  • Дата события;

Описание основных методов

  • Создать (событие);
  • Обновить (ID события, событие);
  • Удалить (ID события);
  • СписокСобытийНаДень (дата);
  • СписокСобытийНаНеделю (дата начала недели);
  • СписокСобытийНaМесяц (дата начала месяца).

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published