Оптимальный способ хранения / потребления запланированных / повторяющихся событий - PullRequest
0 голосов
/ 30 марта 2020

Я работаю над лучшим способом хранения запланированных и повторяющихся событий. Я черпаю вдохновение здесь - https://github.com/bmoeskau/Extensible/blob/master/recurrence-overview.md.

Я буду хранить любые события как RRule (iCal Events - https://tools.ietf.org/html/rfc5545 ) и продолжительность события как отдельные свойства. Структура будет выглядеть следующим образом.

class Schedule {
    String rRule; //Varchar
    String startTime; //DateTime
    String endTime; //DateTime
} 

С этой структурой клиенты могут показывать события в календаре, не запрашивая API.

Интересно, когда события могут быть изменены. Например: Расписание = «Ежедневно в 10:00, продолжительность 2 часа» создает событие на каждый день. Но пользователь может изменить (отключить) любое конкретное событие. и это изменение должно быть сохранено. Для этого вышеупомянутая статья предлагает использовать EventException (https://github.com/bmoeskau/Extensible/blob/master/recurrence-overview.md#eventexception), где хранятся измененные события.

Но в моем случае я хочу сохранить, если событие было успешно завершено , (Я могу смягчить это, сказав, что любое событие по умолчанию является успешным, если произошла какая-то модификация, я сохраняю ее в EventException и ее нужно извлечь отсюда)


Поэтому я хотел бы получить ваше мнение, если это лучший способ сделать это? Был ли у вас подобный опыт и как он был решен. Я работаю над этим, чтобы разработать решение, которое сокращает работу как внешнего, так и внутреннего интерфейса.

Также целесообразно хранить RRule как отдельную сущность вместо строки?

...